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

时间:2012-07-02 13:35:17

标签: 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"));

非常感谢任何帮助。谢谢,Oli。

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:0)

可能的原因是它不是已经改变的查询,而是数据库。

检查数据库文件是否未被写保护。那会导致错误信息。