访问:如何在同一字段内匹配/关联记录?

访问:如何在同一字段内匹配/关联记录?

我的 Access 数据库中有一个包含项目信息的表,其 ID 为“projectnumber”。我希望能够将不同的项目编号(均在同一字段中说明)相互匹配/链接/关联。

因此,当我在表单中打开项目 1 时,我希望看到与项目 1 相关的项目的项目编号,例如项目编号 2、5 和 6。而当我打开项目 2 时,我希望看到项目编号 1、5 和 6。在表单中,我希望添加新的“关系”。

不幸的是,我不知道如何实现这一点。我是否需要创建一个新表(或仅一个字段)来为彼此相关的项目提供“关系 ID”?或者可以通过自连接来解决?

答案1

如果您具有主/从关系(即:一个主项目和几个相关子项目),那么 Andy G 提供的解决方案是完美的。

但是如果你有一个平等的关系,其中任何记录都可以与任意数量的其他记录相关,那么你可以创建所谓的“链接表”,其中有 2 个字段:记录 A 的 ID 和记录 B 的 ID

然后,在您输入或查看记录的表单中,您可以使用此链接表创建子表单来添加链接。

注意:您还可以创建一个宏来确保链接表中的每个 AB 记录也有一个 BA 记录,或者直接手动执行此操作。

答案2

有点晚了,但是,是的,自连接

  • 向表中添加一个新字段,例如MainProject。确保它具有与字段相同的数据类型ProjectNumber
  • 进入关系窗口并再次添加表。将MainProject第一个副本拖放到ProjectNumber第二个副本;
  • 双击连接线并选择实施引用完整性. 这将确保您不能分配一个MainProject不存在的 id ProjectNumber

当您构建用于为此表创建新记录的表单时,请添加ComboBox并将其设置RowSource为列出表中 ProjectNumbers(可能还有其他字段)的 SQL 语句。将其设置ControlSourceMainProject

但请注意,如果您正在创建一个新项目,并且该项目的 ID 也将用作主项目的 ID,那么需要多花点功夫。您需要保存当前记录,并且ReQuery此新 ID 之前的组合框将显示在其列表中。您可能希望使用按钮通过代码实现此目的。手动,您可以按Shift-Enter保存当前记录,然后单击组合框并按F9重新查询。

但是,如果还有与该主项目相关但尚未包含在表中的其他详细信息,那么,是的,您应该创建一个新表来保存这些详细信息 - 具体来说,即仅与主项目相关的信息。

如果您只需要 ProjectNumber(主项目),那么如上所述的自连接就足够了。

相关内容