2015-03-25 46 views
1

我有一個使用Access 2007創建的應用程序,它與DSN完美協作,我更新應用程序以使用無DSN連接到SQL-Server,我沒有' T改變應用程序中的任何代碼,但是當我運行該應用程序我得到這個錯誤運行時錯誤'3326'此記錄集不可更新

運行時錯誤「3326」此記錄是不可更新

Sub DnsLessLinkTable() 

    Dim td As TableDef 
    Dim stConnect As String 
    Dim strTablesName(0 To 7) As String 
    strTablesName(0) = "dbo_Directorate" 
    strTablesName(1) = "dbo_Nationality" 
    strTablesName(2) = "dbo_personal" 
    strTablesName(3) = "dbo_Qualification" 
    strTablesName(4) = "dbo_Qualimain" 
    strTablesName(5) = "dbo_Qualisec" 
    strTablesName(6) = "dbo_Section" 
    strTablesName(7) = "dbo_Trips" 

    For Each td In CurrentDb.TableDefs 
     For Each TableName In strTablesName 
      If td.Name = TableName Then 
       CurrentDb.TableDefs.Delete TableName 
      End If 
     Next 
    Next 

    stConnect = "ODBC;Driver={SQL Server};Server=ServerNametest;Database=DBName;Uid=user;Pwd=password;" 
    For Each TableName In strTablesName 
     Dim splitTarget As Variant 
     splitTarget = Split(TableName, "_") 
     Set td = CurrentDb.CreateTableDef(TableName, dbAttachSavePWD, splitTarget(1), stConnect) 
     CurrentDb.TableDefs.Append td 
     AttachDSNLessTable = True 
    Next 
    Err.Description 
End Sub 

唯一表那個dosnt的主鍵是SQL服務中的[Personal]呃,我又把它連接到[dbo_personal]

的DSN的模塊已成功運行並更新所有的鏈接表,我真的使用這個應用程序掙扎, 注意,DSN-less連接之前,我用的是相同的打造的DSN

任何建議,這將有助於

+0

你能分享你用來更新記錄集的代碼嗎? – izzymo 2015-03-25 12:30:01

+0

記錄集是單個表還是查詢? – 2015-03-25 13:31:12

回答

1

訪問連接字符串能夠更新鏈接表只有,當他們有一個主鍵。
當他們沒有一個,你會得到「此記錄集不可更新」的錯誤。

如果底層SQL Server表具有主鍵,Access通常會檢測到它並在鏈接表中使用它。

如果表確實是而不是在服務器上有一個主鍵,或者如果它是一個視圖而不是一個表,Access無法自行設置一個主鍵。

如果每DSN手動鏈接視圖,一個窗口會彈出,並要求您選擇哪個接入應該考慮作爲主鍵的列:

select unique record identifier

當您鏈接表DSN-更少(即每個代碼)並且您沒有指定主鍵,則Access將鏈接沒有主鍵的表。

所以我想你所談論的表是一個視圖或它沒有主鍵。
當它最初與DSN鏈接時,某人在上面顯示的彈出窗口中選擇了主鍵。
當您將其與無DSN代碼重新鏈接時,您可能沒有設置主鍵,這就是爲什麼現在您收到「此記錄集不可更新」錯誤的原因。

解決方案:將表格鏈接到您的無DSN代碼explicitly set the primary key via VBA code後。

+0

謝謝你的答覆,我檢查了鏈表,他們都有一個在SQL服務器中指定的主鍵,並且我可以在Access中查看查詢構建器中的鍵,除了一個表沒有主鍵,所以怎麼能我修改我的代碼?,我用模塊代碼更新了我的問題,它將鏈接表。 – 2015-03-26 06:12:45

+0

非常感謝幫助,finnaly它工作:) – 2015-03-26 08:47:23