|
重要提示 已从下一版本的 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 中自定义”。
-
在 Access 中,如果导航窗格未打开,请按 F11 显示它。 然后,在导航窗格中,右键单击查询,然后单击“ 设计视图”。
-
确定查询中的哪个表是最多数量的表。 一个很好的经验法则是,最多数量的表是在另一个表中查找数据的表。
-
检查要更新的字段是否位于“最多”表中。 如果不是,则无法对查询执行任何作来解决此问题。 作为允许用户编辑字段的另一种方法,请考虑仅基于表创建一个新的可更新视图,然后根据需要轻松打开该视图。 例如,你可以提供一个按钮,其中包含用于打开视图的宏。
-
检查查询输出中是否包含最多表的主键。 如果不存在, 请将主键添加到查询输出。
-
双击每个联接并验证:
-
联接是内部联接;或
-
如果是外部联接,则最多数目的表位于联接的内侧 - 在左联接的左侧或右联接的右侧。
-
如果联接不满足上述两个条件中的至少一个, 请更改联接以使查询可更新。
将最多数的主键添加到查询输出
-
在设计视图中打开查询。
-
确定最多数的表。
-
双击主键中的每个字段。 每个键字段都标有一个小键。
-
在查询设计网格中,确保选中刚添加的关键字段的“ 显示 ”框:
更改联接以使查询可更新
如果任何联接不符合上述条件之一,则会阻止更新。 下面是不可更新联接的示例:
这是一个左外部联接 - 它包括来自左表的所有内容以及来自右表的相应记录。 但是,最多数目的表位于联接的右侧,从而阻止更新。
使外部联接可更新的方法
有三种基本方法可以调整联接,以便其查询可更新。 双击联接以打开“ 联接属性 ”对话框,然后执行下列作之一:
-
将外部联接更改为内部联接 单击“ 联接属性 ”对话框中的选项 1。
-
切换表的位置 将最多数目的表移到联接的内侧,将另一个表移到外部侧, (使用“ 联接属性 ”对话框中的组合框) 设置左表和右表名称。
-
更改联接的方向 单击“ 联接属性 ”对话框中的选项 2 或 3, (将其更改为未) 的值。