与 CreateTableDef 链接时如何设置主键

How to set primary key when linking with CreateTableDef

在 MS Access 数据库中,我连接到 SQL 服务器数据库中的视图,如下所示:

Dim s  As String
s = "ODBC;DSN=mydb;Trusted_Connection=Yes;DATABASE=mydb;"

Dim td As TableDef
Set td = CurrentDb.CreateTableDef("vwMyView", 0, "MySchema.vwMyView", s)

CurrentDb.TableDefs.Append td
CurrentDb.TableDefs.Refresh

这将创建一个链接 table,它链接到 SQL 服务器中的一个视图。

但是,我不能insert/update/delete,因为Access不知道"primary key"。如何在 VBA 中添加有关主键的信息?

使用链接 Table 向导时,系统总是要求您 select 列表框中的唯一键列。我想在 VBA.

中重现此行为
CREATE INDEX <YourIndexName> ON <YourTableName>(<YourFieldName>) WITH PRIMARY

您可以随时更新刚刚附加的 table 以包含 Index/Primary 密钥。像,

Dim s  As String
s = "ODBC;DSN=mydb;Trusted_Connection=Yes;DATABASE=mydb;"

Dim td As TableDef
Set td = CurrentDb.CreateTableDef("vwMyView", 0, "MySchema.vwMyView", s)

CurrentDb.TableDefs.Append td

CurrentDb.Execute "CREATE UNIQUE INDEX SomeIndex ON vwMyView (PrimaryKeyColumn) WITH PRIMARY".

CurrentDb.TableDefs.Refresh

Set td = Nothing

不确定在创建索引之前是否需要刷新 CurrentDB。尝试不先刷新,如果它不起作用 - 刷新它然后执行 CREATE 语句。