gpt4 book ai didi

ms-access - 如何在 Access 中 "chain"链接表?

转载 作者:行者123 更新时间:2023-12-04 12:26:02 24 4
gpt4 key购买 nike

我的场景:计算机 A 有一个包含链接表的 Access 数据库。这些链接表实际上驻留在计算机 B 上的另一个 Access 数据库中。还没有什么异常。

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

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

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

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

这能做到吗?是否还有其他可行的解决方案或场景我们没有想到?

最佳答案

不 - 你只能链接到真实的表 - 你必须重新创建你在数据库 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

关于ms-access - 如何在 Access 中 "chain"链接表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/850596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com