如何在与CreateTableDef链接时设置主键

时间:2015-06-18 12:19:53

标签: sql-server vba ms-access 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

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

但是,我无法插入/更新/删除,因为Access不知道"主键"。如何在VBA中添加有关主键的信息?

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

2 个答案:

答案 0 :(得分:4)

CREATE INDEX <YourIndexName> ON <YourTableName>(<YourFieldName>) WITH PRIMARY

答案 1 :(得分:4)

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

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

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