vba - 使用传输数据库在数据库之间复制表时出现混乱
问题描述
我需要让用户创建新表,这些表将包含输入到报告处理的给定行。用户输入用于识别报告实例的名称和包含报告行的表的名称。该报告是现有 Microsoft Access 数据库套件的一部分。行程表在此处描述的增强之前输入到报告过程。
我最初的尝试失败了。
DoCmd 方法在前端数据库中运行,其概念是在后端创建一个新的表结构,然后适当地填充该结构。Itineraries 表位于后端数据库中,并在前端链接。该命令的结果出乎意料。
DoCmd.TransferDatabase acExport, _
“Microsoft Access”, “Path to backend database”, _
acTable, “Itineraries”, “TestTable”, True
我希望在后端数据库中有一个名为 TestBills 的表,我可以从前端数据库链接到该表。这没有发生。整个行程表被复制到后端数据库中,名称为 TestBills。我说,“有点”,因为 TestBills 表是后端数据库中与后端数据库本身的链接!我无法从前端数据库链接到该表。
解决方案
我决定使用以下代码片段来解决这个问题:
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 方法导出表链接。
推荐阅读
- c++ - C++ POCO - 如何在不使用 run() 方法的情况下在线程池上启动线程?
- javascript - 使用fullCalendar将allDay设置为false时,如何动态设置事件开始和结束时间?
- angular - 如何在 Angular 6 中绑定来自 HttpClient 的数据?
- javascript - ASP.Net MVC 中的简单 Dropzone 实现 - 如何在控制器中获取数据?
- jquery - 为 Summernote 添加自定义颜色
- javascript - 在 JS 或 vue 中结束滚动事件
- mysql - 在打印表格中的每一行时保存 COUNT 列外观
- python - Python中重复排列的数量?
- r - R 使用 ifelse 语句,当条件为真时,如何从另一列中提取值?
- jmeter - 如何通过电子邮件与詹金斯发送性能趋势图作为图像