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