除了微软here列出的那些。
10 DBEngine.CompactDatabase Dbpath, DbTempPath, "", dbEncrypt
20 Kill Dbpath
30 Name DbTempPath As DbPath
上面的代码在很多安装中日复一日地运行,但是很少有30行失败,我接到一个数据库缺失的调用。
今天我第一次看到它发生在我自己身上并且引发了错误:
路径/文件访问错误(错误75)
但是,我不认为任何列出的原因适用于这种情况。
当今天在安装时发生这种情况时,我重命名了临时文件并再次运行代码并再次发生错误。
(我认为它可能与硬件问题有关,因为制作文件副本需要很长时间。)
答案 0 :(得分:3)
这里没有足够的信息可以说,但我的猜测是问题是你的KILL
语句没有在NAME
语句运行之前完成。它从来都不清楚,但似乎Windows NT文件系统可以选择异步实现某些文件操作(特别是对于大文件),因此即使VB6也可能无法完成KILL
的NTFS。认为它已经并且已经转移到NAME
声明。
在使用KILL
开始重命名之前,可能最好在NAME
之后进行一些检查,以确保文件实际上已经消失。
答案 1 :(得分:2)
我不确定为什么会出现问题,但您可以使用DoEvents调用添加变通方法,或者编写一个小过程来等待一两秒钟(或更长时间)以便让磁盘有时间完成删除或访问发布文件。
更高级的解决方法是在调用重命名之前编写一个函数来检查文件是否可用。