我想限制我可以在相对复杂的多对多关系的表单中输入的内容(比大多数示例更复杂)
I want to constrain what I can enter in forms for a relatively complex many-to-many relationship (more complex than in most examples)
首先:我使用的是 Access 2016
我的基本设置如下:
- 客户(包括姓名和业务相关信息等)
- Contacts(联系信息,每个联系人属于一个客户)
- CustomerSite(地址等,每个站点属于一个客户)
- Facilities(设施相关信息,每个设施属于ONE CustomerSite)
这些关系是使用 customer/site id 的外键实现的。这很好用。
不过,我还想要的是:
许多联系人可以负责许多站点and/or许多设施。
因此我制作了以下联结表:
- ContactsCustomerSite(Contact-ID 和 Site-ID 的外键)
- ContactsFacility(Contact-ID 和 Facility-ID 的外键)
只要我小心地将数据手动输入到联结表中,这就有效。
但是,我想提供用于将联系人分配给 sites/facilities 的表格,这就是我遇到的问题。
到目前为止,我尝试了一些自定义的自动生成表单。他们显示例如设施信息,然后是数据表子表单中的相关联系人(带有指向联系人详细信息表单的链接)。
虽然数据表没有得到适当的约束。我可以在那里输入新联系人,但有几个问题:
- 我在那里输入的联系人成为新联系人
- 我必须手动 select 联系人所属的客户,这是错误的来源(例如,不同客户的联系人可能被输入为负责人)
我只想 select 来自属于同一客户的现有联系人。
我该怎么做?
我真的不知道什么样的表格才适合输入这个,我也不太明白什么是访问 "below the surface" :(
我会使用未绑定的组合框来添加新的站点和设施联系人。限制组合框仅显示具有匹配 CustomerID 的联系人。
对于您的站点表单,使用您当前的设置,但将子数据表设置为 AllowAdditions = False。在窗体上放置一个未绑定的联系人选择组合框。在组合框旁边放置一个 [添加联系人] 按钮。单击 [添加联系人] 时,使用 VBA 在 ContactsCustomerSite table 中创建记录。重新查询子数据表以显示新记录。
在贷款表格上做同样的事情。
首先:我使用的是 Access 2016
我的基本设置如下:
- 客户(包括姓名和业务相关信息等)
- Contacts(联系信息,每个联系人属于一个客户)
- CustomerSite(地址等,每个站点属于一个客户)
- Facilities(设施相关信息,每个设施属于ONE CustomerSite)
这些关系是使用 customer/site id 的外键实现的。这很好用。
不过,我还想要的是:
许多联系人可以负责许多站点and/or许多设施。
因此我制作了以下联结表:
- ContactsCustomerSite(Contact-ID 和 Site-ID 的外键)
- ContactsFacility(Contact-ID 和 Facility-ID 的外键)
只要我小心地将数据手动输入到联结表中,这就有效。
但是,我想提供用于将联系人分配给 sites/facilities 的表格,这就是我遇到的问题。
到目前为止,我尝试了一些自定义的自动生成表单。他们显示例如设施信息,然后是数据表子表单中的相关联系人(带有指向联系人详细信息表单的链接)。
虽然数据表没有得到适当的约束。我可以在那里输入新联系人,但有几个问题:
- 我在那里输入的联系人成为新联系人
- 我必须手动 select 联系人所属的客户,这是错误的来源(例如,不同客户的联系人可能被输入为负责人)
我只想 select 来自属于同一客户的现有联系人。
我该怎么做?
我真的不知道什么样的表格才适合输入这个,我也不太明白什么是访问 "below the surface" :(
我会使用未绑定的组合框来添加新的站点和设施联系人。限制组合框仅显示具有匹配 CustomerID 的联系人。
对于您的站点表单,使用您当前的设置,但将子数据表设置为 AllowAdditions = False。在窗体上放置一个未绑定的联系人选择组合框。在组合框旁边放置一个 [添加联系人] 按钮。单击 [添加联系人] 时,使用 VBA 在 ContactsCustomerSite table 中创建记录。重新查询子数据表以显示新记录。
在贷款表格上做同样的事情。