可能会遇到无法编辑查询 数据表视图 数据以更改基础表中的数据的情况。 本文可帮助你了解何时可以编辑查询数据、何时无法编辑查询数据,以及如何更改查询的设计以便编辑其基础数据。
本文内容
简介
在数据表视图中打开查询时,可能会发现要编辑数据。 也许你注意到了错误,或者你看到一些信息已过期。 根据查询的生成方式,可以直接在查询 数据表 中编辑数据。
如果尝试编辑查询数据表中的数据但未发生任何操作,或者 Windows 播放声音且未进行编辑,则无法执行编辑。 查询本身可能无法进行编辑,例如交叉表查询。 此外,可能只有您尝试编辑的字段才可用于编辑,例如,如果字段基于聚合函数(例如平均值)。 在任一情况下,都可以执行某些操作来启用编辑。
除了在查询数据表视图中编辑数据外,还可以使用 更新查询 更新表中的数据。 本文不介绍更新查询。
有关更新查询的详细信息,请参阅创建和运行更新查询一文。
通常,如果要在查询数据表视图中编辑数据,则希望将更改保存到查询所基于的表中。 如果不想更改这些表中的数据,但仍希望编辑数据并在完成后保留编辑的数据,则可以使用 生成表查询 首先创建可编辑其数据的新表。 还可以使用生成表查询保存不允许编辑为新表的查询的结果,然后编辑该新表中的数据。 本文不讨论如何创建和运行生成表查询。
有关生成表查询的详细信息,请参阅生成表查询Create一文。
何时可以在查询中编辑数据?
如果查询仅基于一个表或两个表,则始终可以编辑查询中的数据,这些表相互 一对一关系 。
注意: 即使可以在查询中编辑数据,其某些字段也可能无法编辑。 以下部分列出了此类情况。
何时不能编辑查询中的数据?
在以下情况下,永远无法编辑查询中的数据:
-
查询是 交叉表查询 。
-
查询是 SQL 特定查询 。
-
您尝试编辑的字段是 计算字段 。 在这种情况下,可以编辑其他字段。
-
查询基于三个或多个表,存在多对一对多关系。
注意: 虽然在这种情况下无法编辑查询数据表,但当窗体的 RecordsetType 属性设置为 Dynaset ( 不一致汇报) 时,可以编辑窗体中的数据。
-
查询包含 GROUP BY 子句。
如何实现更改查询以便编辑其数据?
下表列出了无法编辑查询的情况,这些情况与方法配对,使查询数据表可供编辑。
在以下情况下,不能编辑查询数据表中的值: |
若要使查询数据表可供编辑,请执行以下操作: |
查询的 “唯一值” 属性设置为 “是”。 |
将查询的 “唯一值” 属性设置为 “否”。 请参阅以下部分: 将“唯一值”属性设置为“否”,了解如何设置此属性。 |
该查询包括一个没有 唯一索引 的链接 ODBC 数据库 表,或一个没有 主键 的 Paradox 表。 |
使用链接数据库供应商提供的方法向链接表添加主键或唯一索引。 |
您没有基础表的“更新数据”权限。 |
分配“更新数据”权限。 |
查询包括多个表或一个查询,并且表或查询不由设计视图中的联接线联接。 |
Create相应的联接。 请参阅Create联接部分,了解如何创建联接。 |
数据库以只读的形式打开,或位于只读驱动器上。 |
关闭数据库并重新打开它,而不选择 “打开只读”;或者,如果数据库位于只读驱动器上,请从驱动器中删除只读属性,或将数据库移动到非只读驱动器。 |
您尝试更新的记录中的字段已被其他用户删除或锁定。 |
等待记录解锁。 锁定的记录可以在记录解锁后立即更新。 等待其他用户完成已锁定记录的操作。 |
查询基于具有 一对多关系 的表,并且“多”端的联接字段不是输出字段。 在这种情况下,无法编辑“一”端的联接字段中的数据。 |
将关系的“多”端的联接字段添加到查询输出字段。 若要了解如何添加 联接字段,请参阅将“多”端的联接字段添加到查询输出字段部分。 |
编辑数据后,“多”侧的联接字段 () 位于“一”侧。 |
按 SHIFT+F9 提交更改并刷新查询。 |
一对多关系的“一”端有一个空白字段,联接是右外部联接。 |
确保“一”侧的该字段中有值。 仅当“一”侧的字段中有值时,才能编辑“多”侧的联接字段。 |
您使用的是链接的 ODBC 数据库表,并且并非链接表的唯一索引中的所有字段都在查询输出中。 |
将 ODBC 表的唯一索引中的所有字段添加到查询输出字段。 若要了解如何添加字段,请参阅 从链接的 ODBC 表中添加唯一索引字段部分。 |
将“唯一值”属性设置为“否”
-
在“设计”视图中打开查询。
-
如果 属性表 未打开,则按 F4 将其打开。 在查询设计网格中单击一次,以确保属性表显示查询属性而不是字段属性。
-
在属性表中,找到 “唯一值” 属性框。 单击它旁边的框,单击该框中的箭头,然后单击 “否”。
Create联接
-
在“设计”视图中打开查询。
-
对于要联接到另一个表或查询的每个表或查询,将联接字段从该表或查询拖到要创建联接的表或查询中的相应字段。
有关创建联接的详细信息,请参阅 联接表和查询一文。
将“多”端的联接字段添加到查询输出字段
-
在“设计”视图中打开查询。
-
在查询设计器中,找到对应于相关一对多关系的联接。
-
从一对多关系的“多”端双击联接字段。 联接字段显示在字段网格中,指示它现在是输出字段。
从链接的 ODBC 表添加唯一索引字段
-
在“设计”视图中打开查询。
-
在查询设计器中,找到链接的 ODBC 表。
-
唯一索引字段将在字段名称旁边有一个键符号。 双击字段网格中尚不存在的每个字段。 每个字段都显示在字段网格中,指示它现在是输出字段。