运行时错误'3326'此记录集不可更新

运行时错误'3326'此记录集不可更新

问题描述:

我有一个使用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

访问连接字符串能够更新链接表只有,当他们有一个主键。
当他们没有一个,你会得到“此记录集不可更新”的错误。

如果底层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