无法编辑基于多个表的任何查询
Posted
技术标签:
【中文标题】无法编辑基于多个表的任何查询【英文标题】:Can't Edit any query based on more than one table 【发布时间】:2017-08-22 12:59:32 【问题描述】:现在在 Access 上工作了几个月,所以我还是个新手。少量的 VBA 知识和几乎为零的 SQL 知识。我的数据库中有 2 个表。一个是合同细节,另一个是所有合同的单独交付。我做了一个查询,通过合同编号的简单连接将两者连接起来(SQL 语句是一个简单的 SELECT 字段,table1 INNER JOIN table2 ON contract no),并从所述查询中制作了一个表格来输入或编辑交货。我的问题是突然查询(以及作为结果的表单)变成了只读的。经过一些测试,我所做的连接 2 个表的每个查询都被创建为只读的。数据库很简单,打开表单的按钮上的一些过滤代码等等。欢迎任何建议。
编辑:作为一个新手,大多数定义对我来说都是陌生的......所以我创建了一个小型数据库示例来解决我的问题。给您添麻烦了。
https://www.dropbox.com/s/tt0a68a8534d38s/Problem_recreation.accdb?dl=0
【问题讨论】:
Why is my query not updateable?的可能重复 @ErikvonAsmuth 可能是。如果我理解他的问题发生在一个更复杂的情况下,有两个“INNER JOIN”和条件,而我的只是两个表的组合,根本没有计算。我 99% 确信这个特定的查询和表单在不久前工作正常,但不是 100%,因为我有多个数据输入表单,只有这个基于 2 表查询。 好吧,您没有向我们提供任何信息,为什么这不能解决您的问题。请根据该帖子中提供的答案提供有关您的设置是什么以及您认为它将起作用的全面信息。听起来你只是有一个不是 1-1 的关系,所以你需要有足够的唯一键。 @ErikvonAsmuth 对不起,我觉得很愚蠢,但你能看看我在我的问题中附加的文件吗?我可以理解关于 Access 的非常简单的事情。 抱歉,没有。由于多种原因,我对下载 Access 数据库有一个严格的规定(请参阅this meta answer,因为某些原因,这是一个糟糕的计划)。 【参考方案1】:请查看this 答案,“记录集在某些条件下可更新”部分。很可能您在连接的表之间没有关系
更新
我检查了您的数据库。如上述答案中所述,可更新查询需要具有主键或唯一索引的字段之间的关系。您的字段 [Ctr No]
没有唯一索引。这是最典型的解决方案:
或者您可以使用合同号作为主键:
但在这种情况下,它的运行速度会慢一些(按数字字段搜索会更快),并且您将无法编辑合同编号。
【讨论】:
我再说一遍,我是新手,所以这篇文章有点混乱。我会尝试添加更多信息。这两个表有共同的“联系号码”字段,我创建了一个关系(第一种,我认为它被称为“一对一”)。在查询中,我使用“合同编号”字段,第一个表中的一些字段(例如卖家信息)和交货表中的一些字段(日期、数量、价格等)。没有计算、过滤器、总计等。这以两种形式使用。一个是所有交付的概述,另一个是用于数据输入。没有一个是可编辑的。 另外,我查看了数据库关系,这两个表在“合同号”上正确连接。我尝试检查“强制引用完整性”选项(不知道它的作用,但在文章中提到)并收到错误“没有为主表的引用字段找到唯一索引”。两个表都有一个“ID”字段设置为主键,索引没有重复,所以我完全迷路了。 你的问题。可用于联接的关系必须从主键开始。因此,将Deliveries.Ctr No
更改为Contract_ID
并将Contracts.ID
链接到关系中的此列。然后你可以设置参照完整性。以上是关于无法编辑基于多个表的任何查询的主要内容,如果未能解决你的问题,请参考以下文章
尝试使用DBeaver同时执行多个查询时,无法与Ignite群集通信