4

ここにマイクロソフトによってリストされているものとは別に。

10   DBEngine.CompactDatabase Dbpath, DbTempPath, "", dbEncrypt
20   Kill Dbpath
30   Name DbTempPath As DbPath

上記のコードは、多くのインストールで毎日動作しますが、30行目が失敗することはめったになく、データベースが見つからないという呼び出しが表示されます。

今日初めて私はそれが自分自身で起こり、スローされたエラーを見ました:

パス/ファイルアクセスエラー(エラー75)

ただし、この状況では、リストされている原因のいずれも当てはまらないと思います。

今日のインストールでこれが発生し、一時ファイルの名前を変更してコードを再度実行すると、エラーが再度発生しました。

(ファイルのコピーを作成するのに非常に長い時間がかかったので、ハードウェアの問題と関係があるかもしれないと思います。)

4

2 に答える 2

3

ここで言うには十分な情報はありませんが、問題はステートメントが実行KILLされる前にNAMEステートメントが終了しないことにあると思います。私には明確ではありませんでしたが、Windows NT ファイル システムにはいくつかのファイル操作 (特に大きなファイルの場合) を非同期で実装するオプションがあるようですKILL。発表に移ったNAME

おそらく最善のKILL方法は、 で名前の変更を開始する前に、 の後でファイルが実際になくなっていることを確認することですNAME

于 2012-12-10T15:58:53.103 に答える
2

問題が発生する理由はわかりませんが、DoEvents 呼び出しを使用するか、1 秒または 3 秒 (またはそれ以上) 待機する小さな手順を記述して回避策を追加し、ディスクが削除を完了するまでの時間を確保するか、Access が解放されるようにすることができます。ファイル。

より高度な回避策は、名前変更を呼び出す前にファイルが使用可能かどうかを確認する関数を作成することです。

于 2012-12-10T15:19:36.733 に答える