2012-03-07 77 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"