如何在Access中“链接”链接表?

时间:2009-05-12 00:01:43

标签: ms-access

我的场景:计算机A有一个包含链接表的Access数据库。这些链接表实际上位于计算机B上的另一个Access数据库中。没有什么不寻常的。

现在我们创建一个SQL Server数据库,并在计算机B上的Access数据库中建立指向这些表的链接;我们将计算机DSN配置为在计算机B上定义必要的ODBC连接。访问数据库B现在包含本地表和链接的SQL表。

Access数据库A现在想要链接到Access数据库B的新表 - 但只有其本地表显示在对话框中才能添加链接表。您似乎无法在Access ...中链接到“链接表”

但这是真的吗?我们想要做的是将数据库B的SQL表链接呈现给数据库A ,就像它们是本地表一样;即数据库A不知道数据库B中的新表实际上不是本地的。

当然,我们可以通过在 计算机上配置DSN将SQL表直接链接到数据库A,但我们不想这样做。我们希望将计算机/数据库B用作nexus或“网关”,将本地和SQL表无缝地呈现给网络上的其他Access客户端应用程序。这只是一个临时设置,允许我们逐步将所有Access客户端应用程序迁移到基于SQL Server的表,而无需修改大量代码。

可以这样做吗?是否有其他可行的解决方案或方案我们没有想过?

3 个答案:

答案 0 :(得分:5)

不 - 你只能链接到真实的表 - 你必须重新创建你在数据库B上为数据库A做的SQL服务器链接

如果SQL服务器数据没有太大变化,而您只是将其用于查找,则可以将数据导入到可以链接到的真实Access表中。

修改

另一种解决方案是动态链接表 - 这样您就不必手动将DSN添加到每台计算机。使用类似这样的连接字符串:

ODBC;Driver={SQL Server};Server=<server name/IP>;Database=<database>;UID=<user>;PWD=<password>

这链接表

Dim db As Database
Dim TD As TableDef
Dim sTableName As String  ''MS Access name (can be same as SQL Server name)
Dim sServerTableName As String  ''SQL Server Name 

sTable = "Table1"
sServerTableName  = "dbo.Table1"
sServerConnect = "ODBC;Driver={SQL Server};Server=Localhost;Database=DB1;"

Set TD = db.CreateTableDef(sTableName)
TD.Connect = sServerConnect
TD.SourceTableName = sServerTableName

db.TableDefs.Append TD
db.TableDefs.Refresh

答案 1 :(得分:0)

你可以在B上创建一个查询/视图,它只是C上链接表的视图,这样A就可以访问B上的查询/视图(实际上是C上的表)?

像:


Linked Query on A     ->     Query on B
                                :
                       Linked table on B     ->    Real table on C

评论后编辑:好的,显然你无法链接到查询,这样就不行了。

另一个想法:你能否在B和C之间设置复制,以便将所有C表复制到B,A可以访问它们?

答案 2 :(得分:0)

关于查询建议,可以在IN 'C:\OtherDatabase.mdb'子句中使用FROM子句:

SELECT qryMyTable.*
FROM qryMyTable IN 'c:\OtherDatabase.mdb';

这将在查询存储查询的数据库中为您显示在另一个数据库中的查询内容。如果其他数据库的路径没有改变,您可以使用此方法来搭载其他数据库的链接表。