我在sql server数据库中有一个可更新的视图.当我使用ODBC创建链接表时,我被要求选择唯一的记录标识符,以便它可以更新.
我需要在VBA中动态重新链接此表,因此我需要删除并重新创建链接表(我无法更新ODBC表的TableDef.Connect属性).
我找到了几个解决方案,在我的情况下不适用:
>链接后创建索引:我不能用于ODBC源代码
>在数据库中创建主键:我不能,这是一个视图
这些适用:
>一个代码,它将执行向导的操作
>重新链接的代码,无需删除TableDef,并且与ODBC链接表一起使用,并且不会重置先前设置的标识符
临时解决方法:
>将视图转换为物化视图并在其上创建唯一索引
解决方法
为什么不能在链接后为ODBC源创建索引?
在工作中,我们使用Access与链接的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","SoMetable",ConString) CurrentDb.TableDefs.Append TD Set TD = Nothing CurrentDb.Execute "CREATE UNIQUE INDEX SomeIndex ON SoMetable (PrimaryKeyColumn) WITH PRIMARY"