如何等待Compact Repair - 访问VBA

arc*_*ses 2 ms-access vba ms-access-2007 access-vba

在Access 2007中有一个VBA模块,它在For循环中执行类似的操作.在每个循环结束时,我希望压缩并修复当前数据库,然后再进行下一次迭代.

原因:在我创建的每次迭代中,用于计算和删除表.尺寸应保持在控制之下.

使用SendKeys,我无法压缩和修复 - 如果从表单按钮调用模块.任何确保SendKey工作正常的技巧,并且模块可以完美地继续下一次迭代.一些想法来控制表格加载/模块执行/检查状态等.结束目的是等待足够长的时间直到压缩完成然后继续.另外如何安全地确保压缩的SendKeys /(建议替代)工作正常.

谢谢

Han*_*sUp 7

"...在For循环中.在每个循环结束时,我希望压缩并修复当前数据库,然后再进行下一次迭代."

考虑压缩当前数据库时实际发生的情况.Access首先创建当前数据库的压缩版本作为新的 db文件.然后它删除旧的db文件,将新文件重命名为旧名称,最后打开新的db文件.

因此,如果您的代码尝试通过For循环压缩每个循环...当Access然后打开压缩的db文件时...它如何知道您希望它继续在该For循环中?

如果你真的想做类似的事情,你必须存储一个值来记录For循环的最后一次迭代.然后创建一个autoexec宏以在数据库打开时检索该值,并For以适当的周期输入循环.然后决定是否真的希望每次打开数据库时都发生这一切.

然而,这对我来说似乎太费劲了.使用另一个db文件保存易失性数据应该更简单.然后,从当前数据库中的代码,您可以使用DBEngine.CompactDatabase来压缩外部db文件.