2012-03-07 83 views
6

我在sql server数据库中有一个可更新的视图。当我用ODBC创建链接表时,我被要求选择唯一的记录标识符,以便它可以更新。用主键添加链接表的VBA代码

Dialog in the wizard to select unique identifier

我需要动态地重新链接该表在VBA,所以我需要删除并重新创建链接表(我不能更新ODBC表TableDef.Connect属性)。

我发现了几个解决方案,这并不适用于我的情况:

  • 链接后创建索引:我不能为ODBC数据源
  • 创建数据库主键:我不能,这是一个视图

这将适用:

  • 一个代码,会做什么精灵母鹿小号
  • 代码重新链接,而不需要删除的TableDef和使用ODBC链接表的工作原理,并不会重置以前设置的标识

临时解决方法:

  • 转化为物化视图的视图并创建它的唯一索引
+1

如何:http://bytes.com/topic/access/answers/199482-primary-key-sql-server-linked-view-access-database? – Fionnuala 2012-03-07 13:54:55

回答

11

为什么你不能在链接后创建一个ODBC源的索引?

在工作中,我们使用的是带有链接的SQL Server表访问,当有人想要连接到不同的数据库(从生产环境的变化,以测试环境下),我们做这样的事情的所有表:

Dim TD As TableDef 
Dim ConString As String 

ConString = "ODBC;DRIVER={SQL Server};SERVER=ServerName;DATABASE=DbName;Trusted_Connection=Yes;" 

CurrentDb.TableDefs.Delete "SomeTable" 

Set TD = CurrentDb.CreateTableDef("SomeTable", 0, "SomeTable", ConString) 
CurrentDb.TableDefs.Append TD 
Set TD = Nothing 

CurrentDb.Execute "CREATE UNIQUE INDEX SomeIndex ON SomeTable (PrimaryKeyColumn) WITH PRIMARY"