与 CreateTableDef 链接时如何设置主键

SQL*_*ice 4 sql-server ms-access vba ms-access-2010

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

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
Run Code Online (Sandbox Code Playgroud)

这将创建一个链接表,该表链接到 SQL Server 中的视图。

但是,我无法 insert/update/delete,因为 Access 不知道“主键”。如何在VBA中添加主键信息?

使用链接表向导时,系统始终会要求您从列表框中选择唯一键列。我想在 VBA 中重现这种行为。

Pau*_*cis 5

您始终可以更新刚刚附加的表以包含索引/主键。就像是,

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
Run Code Online (Sandbox Code Playgroud)

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