【问题标题】:VBA Code to Add Linked Table with Primary Key使用主键添加链接表的 VBA 代码
【发布时间】:2012-03-07 13:48:28
【问题描述】:
我在 sql server 数据库中有一个可更新的视图。当我使用 ODBC 创建链接表时,系统会要求我选择唯一的记录标识符,以使其可更新。
我需要在 VBA 中动态重新链接此表,因此我需要删除并重新创建链接表(我无法更新 ODBC 表的 TableDef.Connect 属性)。
我找到了几种解决方案,但不适用于我的情况:
- 链接后创建索引:我不能用于 ODBC 源
- 在数据库中创建主键:我不能,这是一个视图
这些都适用:
- 执行向导操作的代码
- 无需删除 TableDef 即可重新链接的代码,适用于 ODBC 链接表,并且不会重置先前设置的标识符
临时解决方法:
【问题讨论】:
标签:
sql-server
ms-access
vba
【解决方案1】:
为什么链接后不能为 ODBC 源创建索引?
在工作中,我们将 Access 与链接的 SQL Server 表一起使用,当有人想要连接到不同的数据库(从生产环境更改为测试环境)时,我们对所有表执行以下操作:
Dim TD As TableDef
Dim ConString As String
ConString = "ODBC;DRIVER={SQL Server};SERVER=ServerName;DATABASE=DbName;Trusted_Connection=Yes;"
CurrentDb.TableDefs.Delete "SomeTable"
Set TD = CurrentDb.CreateTableDef("SomeTable", 0, "SomeTable", ConString)
CurrentDb.TableDefs.Append TD
Set TD = Nothing
CurrentDb.Execute "CREATE UNIQUE INDEX SomeIndex ON SomeTable (PrimaryKeyColumn) WITH PRIMARY"