复制 table 和创建 link 的函数失败并出现错误 3011
Function to copy table and create link fails with Error 3011
我有一个程序可以将 table 复制到后端,然后在前端创建一个 link。如果我在调试模式下逐步执行代码,它就可以正常工作。当它 运行 全速时,它会抛出 错误 3011“Microsoft Office Access 数据库引擎找不到对象”
对象显然必须存在,因为我使用相同的变量进行复制和 link 操作。
DoCmd.CopyObject vPathname, vTableName, acTable, ubeTable
DoCmd.TransferDatabase acLink, "Microsoft Access", vPathname, acTable, vTableName, vTableName
失败是由于 Access 的某种内部竞争条件。您需要给后端时间来完成创建新的 table 对象,然后才能 link 它。 CopyObject
似乎是 运行 异步的。我尝试了一大堆刷新 tables 和 DoEvents
的不同组合,但最终修复它的是添加 DBEngine.Idle dbRefreshCache
DoCmd.CopyObject vPathname, vTableName, acTable, ubeTable
DBEngine.Idle dbRefreshCache
DoCmd.TransferDatabase acLink, "Microsoft Access", vPathname, acTable, vTableName, vTableName
我有一个程序可以将 table 复制到后端,然后在前端创建一个 link。如果我在调试模式下逐步执行代码,它就可以正常工作。当它 运行 全速时,它会抛出 错误 3011“Microsoft Office Access 数据库引擎找不到对象”
对象显然必须存在,因为我使用相同的变量进行复制和 link 操作。
DoCmd.CopyObject vPathname, vTableName, acTable, ubeTable
DoCmd.TransferDatabase acLink, "Microsoft Access", vPathname, acTable, vTableName, vTableName
失败是由于 Access 的某种内部竞争条件。您需要给后端时间来完成创建新的 table 对象,然后才能 link 它。 CopyObject
似乎是 运行 异步的。我尝试了一大堆刷新 tables 和 DoEvents
的不同组合,但最终修复它的是添加 DBEngine.Idle dbRefreshCache
DoCmd.CopyObject vPathname, vTableName, acTable, ubeTable
DBEngine.Idle dbRefreshCache
DoCmd.TransferDatabase acLink, "Microsoft Access", vPathname, acTable, vTableName, vTableName