首页 > 解决方案 > 在 Access 中,如何在本地 Access 表中快速合并两个链接表(最初来自 SQL Server 的视图)

问题描述

我有一个 .accdb 访问文件和 2 个 SQL Server 数据库,每个数据库有 12 个视图。从一个 SQLServer 数据库到另一个数据库,视图的名称和结构是相同的。前 12 个视图已经在表中的 Acces 文件中链接,这些表稍后在 VBA 代码中与请求一起使用。

我想将来自第二个数据库的 12 个视图的内容添加到 12 个第一个视图的内容中,并像以前一样继续使用请求。

数据库服务器:

db1:表1,表2,表3,表4,...表12;

db2: table1, table2, table3, table4, ... table12(与 db1 中的表相同的名称和结构)

访问文件:

链接到 db1 的 table1,链接到 db1 的 table2,....链接到 db1 的 table12 链接到 db2 的 table1,链接到 db2 的 table2,....链接到 db2 的 table12 目标是能够使用db1中12个视图的合并内容,和db2中的12个视图在请求后的内容,就像现在一样

标签: sqlsql-serverms-access

解决方案


好吧,然后简单地链接所有 12 个表。

然后假设你有一个相同结构的本地表?然后您可以像这样运行附加查询:

Dim strFromTable  As String
Dim strToTable    As String
Dim i             As Integer
Dim strSQL        As String

strFromTable = "dbo_tblData"   ' our 1 - 12 tables
strToTable = "tblLocalTable"

For i = 1 To 12
   strSQL = "INSERT INTO " & strToTable & _
           " SELECT * FROM " & strFromTable & i
   Debug.Print "appending table " & strFromTable
   CurrentDb.Execute strSQL, dbFailOnError
Next i

现在上面假设 12 个链接表被命名为 dbo_tblData1,然后是 dbo_tblData2 等等。

如果您没有这样的命名约定,那么您可以更改上面的代码以使用您提供的不同表名。

您也可以考虑编写代码来动态创建“链接”表,但一次链接 12 个表可能同样容易,然后上面的方法就可以工作了。

上面当然将所有 12 个表拉到 Access 中的一个表中。您当然可以修改上述内容以将每个表“从”拉到本地表中。

例如这个:

   strSQL = "INSERT INTO " & strToTable & i & _
           " SELECT * FROM " & strFromTable & i

推荐阅读