重要提示 已从下一版本的 SharePoint 中删除 Access Services 2010 和 Access Services 2013。 建议不要创建新的 web 应用,可将现有应用迁移到替代平台,如Microsoft Power App。 可以与 Dataverse 共享 Access 数据。Dataverse 是一种云数据库,可在其上构建面向 Web、手机或平板电脑的 Power Platform 应用、自动化工作流、虚拟代理等。 有关详细信息,请参阅 入门:将 Access 数据迁移到 Dataverse。 |
使用查询为 Access Web 应用中的视图提供数据时,可能希望能够编辑的某些字段在视图中是只读的。 具体而言,如果使用多个表且至少有一个联接,则可以更新哪些查询字段存在限制。
注意: 本主题介绍 Access Web 应用。 它不适用于桌面数据库。 如果在桌面数据库中遇到查询问题,请参阅文章 “查询简介 ”以获取概述。
可更新查询字段的要求
-
只有联接字段没有唯一值的表中的字段(“最多”表)才能更新。
-
查询输出必须包含最多表的主键字段。
-
最多表必须位于任何外部联接的内部端 (即左外部联接的左侧或右外部联接的右侧) 。
在此查询中,“任务”表是数量最多的表,因为它在“项目”表中查找数据。
但是,由于输出中未包含任务的主键,因此其字段都不可更新。
即使添加了密钥,来自 Projects 表的字段也不可更新,因为它不是最多表。
查找并修复可更新字段问题
字段不可更新的原因决定了如何启用更新。 若要找出原因,请在设计视图中打开查询并检查查询设计详细信息。
-
如果从浏览器开始,请在 Access 中打开 Web 应用:在应用右上角,单击“设置”>自定义访问。
-
在 Access 中,如果导航窗格未打开,请按 F11 显示它。 然后,在导航窗格中,右键单击查询,然后单击 “设计视图”。
-
确定查询中的哪个表是最多表。 一个很好的经验法则是,最多表是查找另一个表中数据的表。
-
检查要更新的字段是否在最多表中。 如果没有,则无法对查询执行任何操作来解决此问题。 作为允许用户编辑字段的替代方法,请考虑仅基于表创建新的可更新视图,然后根据需要轻松打开该视图。 例如,可以提供一个按钮,其中包含打开视图的宏。
-
检查查询输出中是否包含最多表的主键。 如果不存在,请 将主键添加到查询输出。
-
双击每个联接并验证:
-
联接是内部联接;或
-
如果是外部联接,则最多表位于联接的内部端 ( 位于左联接的左侧或右联接的右侧)。
-
如果联接至少不符合上述两个条件之一, 请更改联接以使查询可更新。
将最多主键添加到查询输出
-
在设计视图中打开查询。
-
标识最多表。
-
双击主键中的每个字段。 每个键字段都用一个小键进行标记。
-
在查询设计网格中,确保已选中 “显示 ”框以检查刚添加的键字段:
更改联接以使查询可更新
如果任何联接不符合上述条件之一,则会阻止更新。 下面是不可更新联接的示例:
这是一个左外部联接 - 它包含左表中的所有内容和右表中的相应记录。 但是,最多表位于联接的右侧,从而阻止更新。
使外部联接可更新的方法
有三种基本方法可以调整联接,使其查询可更新。 双击联接以打开“ 加入属性 ”对话框,然后执行下列操作之一:
-
将外部联接更改为内部联接 单击“ 联接属性 ”对话框中的选项 1。
-
切换表的位置 将最多多个表移到联接的内侧,将另一个表移到外侧, (使用“ 联接属性 ”对话框中的组合框设置左表名和右表名) 。
-
更改联接的方向 在“ 联接属性 ”对话框中单击选项 2 或 3, (将其更改为未) 的任何值。