【问题标题】:How to set primary key when linking with CreateTableDef与 CreateTableDef 链接时如何设置主键
【发布时间】:2015-09-04 01:57:11
【问题描述】:

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

【问题讨论】:

    标签: sql-server vba ms-access ms-access-2010


    【解决方案1】:
    CREATE INDEX <YourIndexName> ON <YourTableName>(<YourFieldName>) WITH PRIMARY
    

    【讨论】:

    • 这里也是——是的,行得通!我完全忘记了您在 MS Access 中也有 DDL 语句。伙计,这为我节省了很多时间——非常感谢!
    【解决方案2】:

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

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

    【讨论】:

    • 是的!我完全忘记了您在 MS Access 中也有 DDL 语句。伙计,这为我节省了很多时间——非常感谢!
    猜你喜欢
    • 2021-01-03
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 2019-08-16
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多