使用传输数据库在数据库之间复制表时的混乱

问题描述 投票:0回答:1

我需要让用户创建新表,其中包含输入到报表处理的给定行。用户输入用于标识报告实例的名称以及包含报告行的表的名称。该报告是现有Microsoft Access数据库套件的一部分。在本文描述的增强之前,将“行程”表输入到报告过程。

我最初的尝试失败了。

DoCmd方法正在前端数据库中运行,其概念是在后端创建一个新的表结构,然后将适当地填充。 “行程”表位于后端数据库中,并在前端链接。该命令的结果是意外的。

DoCmd.TransferDatabase acExport, _
“Microsoft Access”, “Path to backend database”, _
acTable, “Itineraries”, “TestTable”, True

我希望在后端数据库中有一个名为TestBills的表,我可以从前端数据库链接到该表。这没有发生。整个Itineraries表被复制到后端数据库中,名称为TestBills。我说,“有点”,因为TestBills表是后端数据库中与后端数据库本身的链接!我无法从前端数据库链接到此表。

access-vba ms-access-2013
1个回答
0
投票

我决定使用以下代码片段解决这个问题:

DoCmd.TransferDatabase acImport, "Microsoft Access", dbBN, _
acTable, "Itineraries", "ExtraBills", True
DoCmd.TransferDatabase acExport, "Microsoft Access", dbTest, _
acTable, "ExtraBills", "TestBills", True
DoCmd.TransferDatabase acLink, "Microsoft Access", dbTest, _ 
acTable, "TestBills", "TestBills", True
CurrentDb.TableDefs.Delete ("ExtraBills")

“dbTest”和“dbBN”是具有两个后端数据库路径的常量。此代码段将Itineraries表结构从后端数据库复制到前端数据库,并将其重命名为“ExtraBills”。然后将“Extrabills”导出到Test数据库并命名为TestBills。然后,前端链接到后端的TestBills表,并从FrontEnd数据库中删除“ExtraBills”。

该过程实现了期望的结果。我的道德观点是,“不要使用DoCmd的TransferDatabase方法导出表格链接。

© www.soinside.com 2019 - 2024. All rights reserved.