我的应用程序中的字段意外地处于只读状态

重要:  本文是由机器翻译的,请参阅免责声明。请在 此处 中查找本文的英文版本以便参考。

重要事项    Microsoft 不再建议在 SharePoint 中创建和使用 Access Web 应用。转而请考虑使用 Microsoft PowerApps 构建针对 Web 和移动设备的无代码业务解决方案。

当您使用查询来提供数据的 Access web 应用程序中的视图时,您可能希望其能够编辑某些字段是只读视图中。具体而言,如果您使用多个表,并且至少一个联接,没有可更新查询字段的限制。

注意: 本主题是有关 Access web 应用程序。它不适用于桌面数据库。如果在桌面数据库中有使用查询时遇到问题,请参阅有关概述的查询简介一文。

可更新查询字段的要求

  • 只有联接字段没有唯一值的表(“最多对多”表)中的字段可以更新。

  • 查询输出中必须包括最多对多表的主键字段。

  • 最多对多表必须在所有外部联接的内侧(即,左外部联接的左侧或右外部联接的右侧)。

描述可更新字段的查询图表

此查询中,“任务”表是最多对多表,因为它在“项目”表中查找数据。

但是,因为“任务”表的主键未包括在输出中,所以它的所有字段都不可更新。

即使添加了键,来自“项目”表的所有字段也都不可更新,因为它不是最多对多表。

返回页首

查找并修复可更新字段问题

字段不可更新的原因决定了可用的更新实现方式。若要了解原因,请在“设计”视图中打开查询,并检查查询设计的详细信息。

  1. 如果您刚开始从浏览器中,在 Access 中打开 web 应用程序︰ 在该应用程序的右上角,单击设置> Access 中自定义

  2. 在 Access 中,如果导航窗格未打开,请按 F11 显示导航窗格。然后,在导航窗格中右键单击相应的查询,然后单击“设计视图”

    导航窗格中查询的上下文菜单

  3. 确定查询中哪个表是最多对多表。一个好的经验规则是:最多对多表是在另一个表中查找数据的表。

  4. 检查确定要更新的字段在最多对多表中。否则,将无法通过处理查询来解决问题。作为允许用户编辑字段的替代方法,请考虑仅根据表创建一个新的可更新视图,然后使其易于根据需要打开该视图。例如,可以提供一个包含宏的按钮,用于打开视图。

  5. 选中最多对多表的主键查询输出中包含。如果有,未添加到查询输出中的主键

  6. 双击每个联接进行验证:

    • 联接是内部联接;或者,

    • 如果是外部联接,则最多对多表在联接的内侧,即在左联接的左侧或右联接的右侧。

如果联接不符合上述两个条件,更改联接以使查询可更新中至少一个。

 返回页首

将最多对多主键添加到查询输出中

  1. 在“设计”视图中打开查询。

  2. 确定最多对多表。

  3. 双击主键中的每个字段。每个键字段都有一个小钥匙标记。

  4. 在查询设计网格中,确保显示框中,选中您刚添加的键字段︰

    查询设计网格中“显示”行

返回页首

更改联接以使查询可更新

如果任何联接不符合上述条件之一,它将阻止更新。下面是非可更新联接的示例︰

“联接属性”对话框

这是一个左外部联接 - 它包括了左表中的所有内容以及右表中的对应记录。但是,最多对多表在该联接的右侧,从而妨碍了更新。

使外部联接可更新的方法

有三种基本方法可以调整联接,从而使其查询可更新。双击联接以打开“联接属性”对话框,然后执行下列操作之一:

  • 更改为内部联接外部联接   单击选项 1 中的联接属性对话框。

  • 切换表的位置    将最多对多表移动到的内侧联接和向外侧 (使用在联接属性对话框中,若要设置的左和右表名称的组合框) 的其他表。

  • 更改联接的方向    单击“联接属性”对话框中的选项 2 或选项 3,将值改成非当前值的任意值。

返回页首

注意: 机器翻译免责声明:本文是由无人工介入的计算机系统翻译的。Microsoft 提供机器翻译是为了帮助非英语国家/地区用户方便阅读有关 Microsoft 产品、服务和技术的内容。由于机器翻译的原因,本文可能包含词汇、语法或文法方面的错误。

扩展你的技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×