最近、Access .mdb データベースが断続的に起動し、Access (Access 2003 と 2007 の両方) を終了できなくなりました。終了すると ([X] ボタンを押すかメニューからかを問わず、データベースが閉じられ、Access も終了するように見えますが、突然 (データベースを開かずに) 再び表示されます) その時点で終了する唯一の方法ポイントはタスクマネージャーからです。
私が最近行った重要な変更が 2 つありますが、関連する可能性があります。1)WinSCP .Netアセンブリを使用してftpサーバーにアクセスし始めました.ftpサーバーをインストールして、ここの手順からCOMに登録する必要がありました。2)最初はリンクテーブルとして、次にVBA ADOコードからODBCの使用を開始しました(これを参照)。リンクされたテーブルを使用していたときと ADO を使用していたときの両方で問題が発生したため、この 2 番目の変更がこの問題を引き起こしているとは思えません。
これは、データベースを開くたびに発生するわけではなく、パターンに気づいていません。この奇妙な問題の原因は何ですか?
編集 - 問題の根本を見つけました。さまざまな時点で 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に勝ったバグのように私には見えます。
ファイルのダウンロードやディレクトリの作成など、他のことは問題なく実行できますが、このステートメントに到達すると、その後アクセスを終了しません。