我有两个表tblContacts
和tblAddresses
,它们与contactID
相关,作为tblAddresses
上的外键。并非每个地址都与联系人相关联,因为其中一些地址与组织相关,但与人员无关。当前,表之间的关系是联系人和地址之间的一对多关系,因为有时一个联系人可以具有多个地址(办公室,邮件等),我不对这种关系实施参照完整性,因为出于上述原因-并非每个地址都有联系人。
在以frmContacts
作为记录源的表单tblContacts
中,我有一个以fsubAddresses
作为记录源的子表单tblAddresses
,需要链接到当前记录的contactID
。但是,contactID
上的窗体和子窗体之间的父子关系似乎无效-当我将控件源设置为子窗体中contactID
的文本框时,我看到一个空值,而不是与当前联系人匹配的预期contactID
号码。
我创建了一个不完整的解决方法,我想看看是否有更好的解决方案或其他方式来构建这种关系。
我在txtContactID
主窗体中创建了一个文本框frmContacts
,其控制源设置为contactID
,然后在fsubAddresses
子窗体中创建了一个带有默认设置的锁定组合框值设置为txtContactID
,这将为当前记录显示正确的contactID
。然后,我将此组合框的控件属性设置为contactID
,这样它将把该值传递到tblAddresses
的{{1}}字段中。这行得通,但我觉得问题过于复杂了。我想念什么?
答案 0 :(得分:0)
添加新地址时,您不必访问主表单的contactID
并使用它来填写子表单的contactID
。另外,我认为您既不想在主窗体上也不在子窗体上看到contactID
,实际上您也不必这样做。当在子表单中添加新地址时,Access使用“链接子域”和“链接主域”定义的关系来填充子表单的记录源的contactID
。保存地址之前不会发生这种情况,因此当记录仍然是新的且未保存时,您就不会在子窗体上“看到”该值。