在另一个Access实例中处理openCurrentDatabase的错误

时间:2016-07-08 12:56:36

标签: vba ms-access error-handling access-vba

我有一个大约400个完整文件路径和访问数据库文件名的列表。我在Access中编写了一个VBA程序,它遍历列表,在第二个Access实例中打开每个数据库,并提取我需要的信息,但是一些文件路径是错误的,导致Access无法打开数据库。

即使我有一个错误处理程序来尝试处理这个问题,错误处理程序也不会触发,而是代码在错误时中断。我的选项设置为仅打破未处理的错误,但这没有帮助。

有没有办法捕获appAccess对象生成的错误?

<IfModule mod_rewrite.c>

#Send all traffic to store.newsite.com
#RewriteCond %{HTTP_HOST} ^store.oldsite.com [NC,OR]
#RewriteRule ^(.*)$ http://store.newsite.com/$1 [L,R=301,NC]

#Sends all traffic to store.newsite.com
#RewriteCond %{HTTP_HOST} !^store.oldsite.com$ [NC]
#RewriteRule ^(.*)$ http://store.newsite.com/$1 [R=301,QSA,L]

#Doesn't catch the sub domain and all redirects fall to the 301
#RewriteCond %{HTTP_HOST}  store.oldsite.com$ [NC]
#RewriteRule ^(.*)$ http://store.newsite.com/$1 [P] 

#redirects all traffic, but not additional pages   e.g.  newsite.com/a/b/c
#RewriteCond %{HTTP_HOST} ^oldsite.com [NC,OR]
#RewriteCond %{HTTP_HOST} ^www.oldsite.com [NC]
#RewriteRule ^(.*)$ http://newsite.com/$1 [L,R=301,NC]

</IfModule>

#redirects all traffic and the additonal params  /a/b/c
Redirect 301 / http://newsite.com/

1 个答案:

答案 0 :(得分:2)

  

...某些文件路径错误,导致Access出错   无法打开数据库。

使用Dir()确认strDb指向实际存在的文件。并且不要试图打开一个不存在的。

If Len(Dir(strDb)) > 0 Then
    Set appAccess = CreateObject("Access.Application")
    appAccess.OpenCurrentDatabase strDb
    ' ... and everything else you want to do with appAccess
Else
    ' What should happen when the file does not exist?
End If

实际上,在程序开始时只需执行一次Set appAccess = CreateObject("Access.Application"),然后使用appAccessOpenCurrentDatabase方法重复使用CloseCurrentDatabase,效率会更高。但这是一个不同的问题 - 它与你所面临的#7866错误问题无关。