MS Access:如何创建连接以避免“无法添加记录;表的连接键...不在记录集中”错误

MS Access:如何创建连接以避免“无法添加记录;表的连接键...不在记录集中”错误

我是 MS Access 的新手。我有一个非常简单的植物分类数据库,我正在使用它来尝试学习和理解该程序。该数据库有三个表,如下所示:

在此处输入图片描述

这些表之间的关系如下:

在此处输入图片描述

强制执行引用完整性,并将相关字段设置为级联更新。然后,我使用表单向导构建了以下表单:

在此处输入图片描述

我在向导中选择了以下字段:

在此处输入图片描述

也许与某些人选择构建此类数据库的方式相反,我希望每个物种只看到一条记录,因此不想使用子表单。因此我选择了以下选项,并且对最终表单的布局感到满意。

在此处输入图片描述

当我尝试通过此表单添加新记录时,我可以输入“科”的数据,但尝试输入“属”或“物种”的数据时会出现“无法添加记录;表的连接键...不在记录集中”的错误。

在设置这些表格和表单时我做错了什么?

答案1

为了保持数据库的参照完整性,当向tblSpecies表中添加记录时,字段GenusID必须包含表中已存在的 ID tblGenus,否则表中的记录tblSpecies将成为孤立记录,从而破坏数据库的参照完整性。

同样,在向表中添加记录时tblGenus,外键( )必须与表中记录的FamilyID主键()相对应。IDtblFamily

由于您不想使用子表单,因此您需要在向表中添加记录之前,使用所有可能的外键值预先填充您的tblFamily&表;或者,在表单中添加一个按钮,该按钮将打开引用父表的表单,允许用户动态添加此类记录。tblGenustblSpecies

答案2

您无法修改 SQL 内连接 - 与底层表的关系将丢失。

您不应该通过基于查询的单个表单将数据输入到多个表中。在某些情况下可以这样做,但使用绑定到引用表的父表单,并在其中绑定到引用表的子表单是更好的解决方案。

这样,每个 for 或子表单都绑定到一张表,因此每个表都可以自行更新。

相关内容