最近,我的 Access .mdb 数据库间歇性地启动,不允许 Access(Access 2003 和 2007)退出。如果我退出(无论是通过按 X 按钮还是从菜单中,然后它会关闭数据库并似乎也退出 Access,但随后它突然重新出现(没有任何数据库打开)。我退出的唯一方法点来自任务管理器。
我最近做了两个可能相关的重大改变。1) 我开始使用 WinSCP .Net 程序集来访问一个 ftp 服务器,我必须按照此处的说明安装并注册 COM 。2) 我开始使用 ODBC,首先作为链接表,然后从 VBA ADO 代码开始(请参阅this)。我怀疑第二个更改是否会导致此问题,因为我在使用链接表和使用 ADO 时都遇到了问题。
每次打开数据库时都不会发生这种情况,而且我没有注意到一种模式。什么可能导致这个奇怪的问题?
编辑 - 我找到了问题的根源。通过在不同点破坏我的 ftp 下载代码并查看它是否会退出,我将其范围缩小到以下几点:
Dim PDFFolders As Recordset
Set PDFFolders = CurrentDb.OpenRecordset("PDFFolders")
Dim syncOptions As TransferOptions
Set syncOptions = New TransferOptions
syncOptions.filemask = "*/*.pdf"
On Error Resume Next 'In case it doesn't exist
Do While Not PDFFolders.EOF
sess.SynchronizeDirectories SynchronizationMode_Local, info!RTFFolder, _
info!BasePDFFolder & "/" & PDFFolders!Name, False, , , _
syncOptions
PDFFolders.MoveNext
Loop
PDFFolders.Close
Set syncOptions = Nothing
Set PDFFolders = Nothing
On Error GoTo 0
如果它运行该sess.SynchronizeDirectories
语句,则访问不会退出,否则它会退出。在我看来,就像赢得 WinSCP 的错误一样。
我可以毫无问题地做其他事情,比如下载文件、创建目录等,但是当它到达这个语句时,它不会在之后退出访问。