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 文件系统可以选择异步实现一些文件操作(特别是对于大文件),因此KILLNTFS 可能无法完成,即使 VB6 认为它是并且已转到NAME声明。

可能最好的办法是KILL在开始重命名之前在NAME.

于 2012-12-10T15:58:53.103 回答
2

我不确定为什么会出现问题,但您可以使用 DoEvents 调用添加解决方法或编写一个小程序等待一到三秒(或更长),以便有时间让磁盘完成删除或访问释放文件。

更高级的解决方法是在调用重命名之前编写一个函数来检查文件是否可用。

于 2012-12-10T15:19:36.733 回答