概要本文向您介绍了如何在相关表中编辑记录。包括以下主题: 如何在数据表(表或查询)或窗体中添加或编辑数据 如何保存数据表或窗体中的记录 如何删除数据表或窗体中的记录 如何撤消数据表或窗体中的添加或编辑更改 参照完整性 级联更新和级联删除 关于限制或确认数据 子数据表 何时可以从查询中更新数据 更多信息 如何在数据表(表或查询)或窗体中添加或编辑数据 在数据表视图中打开表或查询或者在窗体视图中打开窗体。 执行下列操作之一: 若要添加新记录,请指向编辑菜单中的转到,然后单击新建记录。键入数据,然后按 TAB 键转到下一个字段。到达记录末尾时,按 TAB 键转到下一条记录。 要在某个字段中编辑数据,请单击要编辑的字段,然后键入数据。 若要替换整个值,请将鼠标指针移到该字段的最左边,直到指针变为十字形指针时单击。键入数据。 注意:若要纠正键入错误,请按 BACKSPACE 键。若要取消当前字段的更改,请按 ESC 键。若要取消整个记录的更改,请在移出此字段之前再次按 ESC 键。当您移动到另外一个记录时,Microsoft Access 将保存更改。 如何保存数据表或窗体中的记录一旦您将插入点移动到别的记录中或关闭正在处理的窗体或表,Microsoft Access 就会自动保存您添加或编辑的记录。 若要在编辑记录时特意保存其数据,请单击记录菜单上的保存记录。 如何删除数据表或窗体中的记录 在“数据表”视图中打开表或查询或者在“窗体”视图中打开窗体。 单击要删除的记录。 在编辑菜单上,单击删除记录。注意: 当删除数据时,您可能希望删除其他表中与之相关的数据。例如,如果您删除了一个供应商,则您可能还希望删除此供应商提供的产品。在某些情况下,您可以通过实施参照完整性和打开级联删除以确保删除适当的数据。参照完整性和级联更新及删除将在本文稍后部分更详细地讲述。 如何撤消数据表或窗体中的添加或编辑更改执行下列操作之一: 若要撤消最新的更改,请单击编辑菜单上的撤消。 如果您已经保存了当前记录的更改或已移动到其他记录,则请单击编辑菜单上的撤消保存的记录。注意: 一旦您开始编辑其他记录,应用或删除了一个筛选器,或者切换到了另一个窗口,则不能使用这些方法纠正更改。 参照完整性参照完整性是一套规则,Microsoft Access 使用它确保相关表中的记录之间的关系有效,并保证您不会无意间删除或更改相关的数据。当您使用参照完整性时,以下规则适用: 不可以在主表的主键中不存在的相关表外键字段中输入值。不过,您可以在外键中输入一个 Null(空)值以表明这些记录不相关。例如,您不能让一个订单分配给不存在的客户,但您可以通过在“客户 ID”字段中输入一个 Null 值让一个订单不分配给任何客户。 如果一个记录在相关的表中存在匹配的记录,则不能够从主表中删除该记录。例如,如果在“订单”表中有分配给某个员工的订单,则您不能够从“员工”表中删除该员工记录。 如果一个记录有相关的记录,则您不能在主表中更改其主键值。例如,如果在“订单”表中有订单分配给某一员工,则您不能够在“员工”表中更改此员工的 ID。 级联更新和级联删除对于强制执行了参照完整性的关系,您可以指定是否希望 Microsoft Access 自动级联更新和级联删除相关的记录。如果设置了这些选项,则通常由参照完整性规则阻止的删除和更新操作将能够进行。当您在主表中删除记录或更改主键值时,Microsoft Access 将对相关表进行必要的更改以保持参照完整性。 如果您在定义关系时单击级联更新相关字段复选框,则每当您更改主表中的记录主键时,Microsoft Access 就会自动地将所有相关记录中的主键值更新为新的值。例如,如果您更改“客户”表中的客户 ID,则“订单”表中此客户的每一个订单的“客户 ID”字段都会自动更新,这样就不会破坏关系。Microsoft Access 执行级联更新时不显示任何消息。 注意: 如果主表中的主键是一个“自动编号”字段,则设置级联更新相关字段复选框将不起作用,因为不能更改“自动编号”字段中的值。 如果您在定义关系时选中了级联删除相关记录复选框,则每当您删除主表中的记录时,Microsoft Access 就会自动删除相关表中的相关记录。例如,如果您从“客户”表中删除一个客户记录,则此客户的所有订单会自动从“订单”表(包括与“订单”记录相关的“订单明细”表)中删除。当您在选中级联删除相关记录复选框的情况下从窗体或数据表中删除记录时,Microsoft Access 会警告您说相关记录也可能会被删除。然而,当您使用删除查询删除记录时,Microsoft Access 将自动删除相关表中的记录而不显示警告。 关于限制或确认数据Microsoft Access 提供了多种方法用以控制用户向数据库中输入数据的方式。例如,您可以通过为某个字段定义一个确认规则来限制用户可以向此字段中输入的数据。如果用户输入到此字段的数据违反了此规则,Access 将显示一个消息,告诉用户哪些输入类型是允许的。另一个控制数据输入的方法是创建一个输入掩码以限制可以输入到字段中不同位置的值的种类。您可以通过设置表中的字段属性或设置窗体上的控件的属性来执行这些简单形式的确认和限制。 在多数情况下,最好通过在表的“设计”视图中设置字段的属性来定义数据的检验和限制。这样,无论何时在窗体中使用此字段,该字段的确认规则和其他属性都将应用于通过使用此窗体执行的数据输入。 不过,如果输入到窗体控件的数据没有绑定到表中某个字段,并且您需要限制或确认数据输入,则您必须在此窗体中定义这些属性。另外,还有一些情况要求您必须将“宏”或 Microsoft Visual Basic for Applications 代码与窗体一起使用,以执行更复杂的确认。例如,您可能希望能够覆盖您的确认规则或将不同表中的值进行比较。 有关表和窗体中的确认方面的更多信息,请单击帮助菜单上的 Microsoft Access 帮助,在“Office 助手”或“应答向导”中键入“确认”,然后单击搜索以查看返回的主题。 有关表和窗体中的子数据表的更多信息,请单击帮助菜单上的 Microsoft Access 帮助,在“Office 助手”或“应答向导”中键入“子数据表”,然后单击搜索以查看返回的主题。 数据可更新:以下情况您可以更新查询或查询字段: 查询基于一个表 查询基于具有一对一关系的多个表 查询结果包含了“备注”、“超级链接”或“OLE 对象” 数据在某些条件下可以更新:如果查询基于具有一对多关系的多个表,则您可能无法编辑以下查询字段的数据。 查询字段 解决办法 从“一”方联接字段 启用两个表之间的级联更新。 新建记录 — 如果数据表中没有出现“多”方联接字段 将“多”方中的联接字段添加到查询中以允许添加新记录。 在更新“一”方的数据之后,从“多”方联接字段。 保存记录;然后您将能够对“多”方联接字段进行更改。 存在外部联接的一对多关系中的“一”方表中的空白字段 在“多”方表中的字段中输入值 — 但只有在“一”方的联接字段中包含此记录的值时。 新建记录 — 如果 ODBC 表的整个唯一键不输出 选择 ODBC 表的所有主键字段以允许向其中插入。 数据可以删除但不可以更新: 查询或查询字段 解决办法 未授予更新数据权限的查询(或底层的表) 若要修改数据,则必须赋予权限。 未授予删除数据权限的查询(或底层的表) 若要删除数据,则必须赋予权限。 数据不可更新: 查询或查询字段 解决办法 基于三个或更多表的查询,这些表之间存在“多对一对多”的关系 尽管您不能够直接更新查询中的数据,但是,如果窗体的 RecordsetType 属性设置为 Dynaset(不一致更新),则您可以根据查询的具体情况在窗体或数据访问页上更新数据。 交叉表查询 无 SQL 传递查询 无 计算总和、平均、合计或字段中其他类型的总计值的查询,或满足以下条件的更新查询:引用了交叉表查询、选择查询或包含了汇总或聚合函数的子查询的“更新为”行中的字段。 通过使用更新查询的“更新为”行中的域聚合函数,您可以引用交叉查询、选择查询或包含了汇总或聚合函数的子查询中的字段。 联合查询 无 UniqueValues 属性设置为“Yes”的查询 无 包含一个无唯一索引的链接 ODBC 表或无主键的“Paradox”表的查询 无 包含不止一个表或查询的查询,而且这些表或查询未在“设计”视图中通过联接线联接 为了更新这些表,您必须正确地联接它们。 计算字段 无 字段为只读;数据库以只读方式打开或位于一个只读驱动器上 无 由另一个用户删除或锁定的记录中的字段 锁定的记录一解除锁定后就应该可以更新。 |