首页 > 解决方案 > DoCmd.TransferDatabase 问题

问题描述

在我的代码中,我正在创建一个新数据库,然后使用 DoCmd.TransferDatabase 将一些表复制到其中。这以前没有问题,现在我收到错误:“运行时错误'3709':在任何记录中都找不到搜索键。我的代码是:

Set db = DBEngine.CreateDatabase(sPath, dbLangGeneral)
DoCmd.TransferDatabase acExport, "Microsoft Access", sPath, acTable, 
"MATerials", "MAT", False

DoCmd.TransferDatabase acExport, "Microsoft Access", sPath, acTable, 
"new_2Kilo", "TWOK", False

DoCmd.TransferDatabase acExport, "Microsoft Access", sPath, acTable, 
"tblCSMP", "tblCSMP", False

DoCmd.TransferDatabase acExport, "Microsoft Access", sPath, acTable, 
"tblICMP", "tblICMP", False

DoCmd.TransferDatabase acExport, "Microsoft Access", sPath, acTable, 
"tblMARMC_USERS", "tblMARMC_USERS", False

DoCmd.TransferDatabase acExport, "Microsoft Access", sPath, acTable, 
"tblVisit_Personnel", "tblVisit_Personnel", False

DoCmd.TransferDatabase acExport, "Microsoft Access", sPath, acTable, 
"Training", "Training", False

DoCmd.TransferDatabase acExport, "Microsoft Access", sPath, acTable, 
"tblTeamMember", "tblTeamMember", False

DoCmd.TransferDatabase acExport, "Microsoft Access", sPath, acTable, 
"WORK_NOTIFICATIONS", "WORK_NOTIFICATIONS", False

如果我打开新创建的数据库并单击“启用内容”按钮,该功能将继续。任何想法如何解决这个问题?

标签: vbams-access

解决方案


无法将不受信任的位置导出到使用DoCmd.TransferDatabase.

然而,Afaik,您可以使用查询很好地导出到它们,因为这些是在数据库引擎级别而不是应用程序级别处理的,并且信任问题在应用程序级别。

要编写导出表的查询:

SELECT * INTO [;DATABASE=C:\Path\To\File.accdb].NewTableName FROM OldTableName

请注意,这仅导出数据而非相关信息(索引、哪些列可见、查找等),因此在功能上有所不同。


推荐阅读