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

标签 sql ms-access ms-access-2007 recordset

我在 Access 2007 中有一个查询。几个月来它运行良好,但我突然收到“记录集不可更新”错误。我认为错误一定是由最近的更改引起的,我回到了存档版本(确实有效)——它们都抛出了相同的错误。表本身是可更新的;事实上,同一张表上的另一个查询工作得很好。突然发生了什么事情会破坏我的查询?代码如下:

    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"));

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

最佳答案

如果您使用链接的 ODBC 表,并且希望查询可更新,则需要在查询中包含所有表的主键字段。以下是一些潜在的“陷阱”:

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

关于sql - 为什么我的 Access 2007 查询突然变得不可更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11294807/

相关文章:

sql - 尝试在 Access 中创建 View 给出 "Syntax error in CREATE TABLE statement"

ms-access - MS Access 在窗体关闭时停止插入命令

sql - 从多个表中查找

sql - 在 UPDATE 查询中使用 SELECT

sql - 如何连接/连接 SQLite 中分组列中的字符串?

php - 如何在一个 MySQL 查询中获取另一个表中引用的数据

mysql - MySQL 支持 "if not exists"吗?

mysql - SQL 查询获取 SUM 生成的新列的前 10 名

mysql - 带有 Access 前端的mysql数据库的结构

c# - 从数据集复制到 C# 中的 Access 表?