4

我有两个表(personsprojects),它们位于多对多表中,因此由第三个表链接在一起persons_projects

在 ms 访问中,我现在创建了一个显示projects表中数据的表单。

我想要的是有一个显示所有persons参与该项目的数据集的子表单。在这个子表单中,还应该可以从这个项目中添加(或删除)人员——下拉菜单似乎是这里的最佳选择。

我怎样才能做到这一点?我可以显示所有参与者,但我无法添加他们。似乎我又遇到了“插入视图”问题,因为我需要personspersons_projects显示正确的数据集。但由于我只是在单个表中更改/添加行(persons_projects),我不明白为什么访问再次变得很糟糕。

4

2 回答 2

1

你不应该需要人员,只需要persons_projects。我假设 person_projects 包括:

person_id  -> FK  ) Combined as PK, perhaps, if not, an autonumber PK
project_id -> FK  )

和(推荐)日期时间戳和用户字段。

该子表单设置了一个链接子字段和主字段 project_id,这将由 Access 自动完成,以及一个类似于以下内容的组合框:

Control Source: person_id
Row Source: SELECT person_id, surname & " " & forename, some_field FROM persons
Bound Column: 1
Column Count: 3 
Column Widths: 0cm;2cm;2cm 

编辑重新评论

虽然通常有点困难,但可以同时包含两个表并具有可更新的记录集,查询(视图)应该包含联结表中的 project_id 和 person_id。

于 2009-08-31T09:58:34.157 回答
0

听起来,persons 是这里的驱动数据集,因为您希望能够将其链接到多个项目以及删除人员记录。

将表单基于 Persons 表。子表单应基于 person_projects 表并由相应的 id 链接。您可以在子表单中的 projectid 上使用组合框并显示其他一些字段,以便用户可以识别项目(名称?)。您可能希望在此表单上显示每个项目的所有项目数据,但您可能会发现它让用户非常困惑。拥有一个可以“弹出”以提供更多项目信息的单独表格可能是更好的选择。

如果你想删除一个人,你可以从 person 表中删除,但你需要决定是否需要 person_projects 表中的任何孤立记录(你不应该这样做)。在 Access 中很容易建立具有引用完整性的链接(级联更新和删除可选)。这需要有多强大取决于您。

于 2009-08-31T20:33:35.103 回答