如何在Access 2016中在查询和表之间创建一对多关系?

时间:2018-09-12 15:31:55

标签: ms-access ms-access-2016

enter image description here

上表是“人”

enter image description here

上面是基于表“人物”的查询“国家/地区”的SQL视图

enter image description here

上图是基于“人”表的“国家/地区”查询的数据表视图

enter image description here

上面是另一个称为“城市列表”的表

enter image description here

为什么不能在“ Count Country”查询和“ City List”表之间建立一对多关系?

2 个答案:

答案 0 :(得分:0)

您所描述的听起来像是级联(依赖)组合框。因此,如果没有国家(地区)表,则cbxCountry的RowSource可以为SELECT DISTINCT Country FROM CityList;。然后,通过cbxCountry SELECT City FROM CityList WHERE Country=[cbxCountry];过滤的cbxCity的RowSource。当移至另一条记录和/或更改cbxCountry中的选择时,您将需要代码来重新查询cbxCity。

如果要显示不同国家/地区的表单,则RecordSource可以是相同的DISTINCT查询。然后编写代码以打开关联城市的表单:

DoCmd.OpenForm "Cities", , , "Country='" & Me.Country & "'"

答案 1 :(得分:0)

您只能在表之间创建具有引用完整性的关系。此外,两个字段都必须具有相同的数据类型,并且左侧的字段(拖动到另一侧的字段)必须是该表的主键(或者至少具有唯一的索引,不允许为Null值)。

创建没有引用完整性的关系的唯一原因是告诉Access数据如何关联,因此,当您将两个表(如您所用的表和查询)都添加到表中时,Access会自动将它们连接在一起。查询。另外,Access在处理数据表时可能会自动创建一个“子数据表”。

要“自动”构建跳转到城市的表单,请使用表单向导并在查询和表格中添加字段。