データベースが破損しています。MS Access で開くと、MS Access が修復を提案し、成功します。
コードでそれを行うにはどうすればよいですか?MS Access がインストールされていないマシン。
試してみると、JRO.JetEngine.CompactDatabase が機能しないことがわかりました。
つまり、JRO.JetEngine.CompactDatabase が行っていることではなく、Access または JETCOMP.exe が行っていることを行いたいのです。
データベースが破損しています。MS Access で開くと、MS Access が修復を提案し、成功します。
コードでそれを行うにはどうすればよいですか?MS Access がインストールされていないマシン。
試してみると、JRO.JetEngine.CompactDatabase が機能しないことがわかりました。
つまり、JRO.JetEngine.CompactDatabase が行っていることではなく、Access または JETCOMP.exe が行っていることを行いたいのです。
http://support.microsoft.comにアクセスして JetComp.exe ユーティリティを検索する必要があります。このユーティリティは、ファイルを開かずに MDB の修復と圧縮を試みます。上記の提案がどれも機能しない理由は、作業を行うために MDB を開く必要があるためです。一方、JetComp はファイルを開かず、構造的に操作します。
ファイルを回復できない場合 (実際に発生します)、データ回復サービスに行く必要があります。PKSolutions.com の Peter Miller をお勧めします。
.mdb ファイルを開くためのコマンド ライン スイッチ:
/compact
データベース ファイルを修復して圧縮します。
/compact スイッチの後にターゲット ファイル名を指定しない場合、ファイルは元の名前とフォルダーに圧縮されます。別の名前に圧縮するには、ターゲット ファイルを指定します。
DBEngine.RepairDatabase [my.mdb] を試しましたか? (以前のバージョンを参照しても動作しないようです)
ただし、コーディングが必要なほど頻繁に発生している場合は、最初に解決すべきより大きな問題がある可能性があります。
別のユーティリティを使用する場合は、Jetcomp.exe ユーティリティ ( http://support.microsoft.com/kb/295334 ) はいかがですか。「Microsoft Access コンパクト ユーティリティと CompactDatabase メソッドでは復元できないデータベースを復元できる」はずです。その場合は、外部アプリケーションを実行するだけです。
例えば、
Call Shell("Jetcomp.exe <arguments>")
私は MS Access の専門家ではありませんが、このユーティリティには、破損したデータベース ファイルを圧縮して修復するために必要な DLL が含まれているようです。