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