为什么我的Access 2007查询突然变得不可更新?

Sin*_*ard 2 sql ms-access ms-access-2007 recordset

我在Access 2007中有一个查询.它工作好几个月,但我突然得到一个"记录集不可更新"错误.认为一个错误必定是由最近的一次变化引起的,我回到了归档版本(definitley工作) - 他们都在扔掉同样的错误.表本身是可更新的; 实际上,同一个表上的另一个查询工作正常.什么可能突然发生破坏我的查询?代码如下:

    SELECT Prospects.Company, Contactnames.*, IIf([Prospects]![Key Contact]=[ContactID],True,False) AS [Key Contact], Prospects.Status
FROM Contactnames INNER JOIN Prospects ON Contactnames.CompanyID=Prospects.ID
WHERE (((Prospects.Status) Not Like "Duplicate"));
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.谢谢,奥利.

mwo*_*e02 5

如果使用链接的ODBC表,则需要包含查询中所有表的主键字段(如果希望查询可更新).这里有一些潜在的"陷阱":

  • Access可能无法在链接的ODBC表中正确识别主键字段; 经常(总是?)Access选择它为表找到的第一个唯一索引(基于索引名称的字母顺序)并假设索引是主键
  • 将复制添加到MS SQL Server(以及可能还有其他RDBMS)中的表将添加具有唯一索引的GUID列; 除了上述观点,这可能会导致Access认为您的链接表具有与实际不同的主键
  • 对ODBC链接表的设计所做的更改不会自动反映在Access中; 链接的ODBC表可以通过工具 - >数据库实用程序 - >链接表管理器...(以及其他方式)刷新

  • @OliJeffery如果在创建了Access中的链接之后更改了源表*的设计,则存储的有关这些表的Access信息可能已过期.重新创建链接以确保Access使用有关源表的更新信息. (2认同)