在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中重现此行为。

最佳答案

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

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语句。

10-05 21:27