MS Access - 级联第二个组合框不级联
Posted
技术标签:
【中文标题】MS Access - 级联第二个组合框不级联【英文标题】:MS Access - Cascading 2nd Combobox Not Cascading 【发布时间】:2021-02-10 02:54:03 【问题描述】:在名为opportunity
的表单上,我有一个名为cmbCompanyName
的组合框,用于从名为Company
的表中选择公司名称。这是我的级联的第一部分。
cmbCompanyName
有三列。
Col 0 是 CompanyID,它是隐藏的。
Col 1 是 CompanayName,填充到表单
Col 2 是 CompanyCity,使用控件 =[cmbCompanyName].[Column](2)
=[cmbCompanyName].[Column](2)
所有这些都正常工作。
我的级联 cmbPoCLastName
的第二部分查看另一个名为 Contacts
的表,并且应该从 cmbCompanyName
中获取 CompanyName 来过滤我的选择。
cmbPoCLastName
使用以下查询
SELECT Contacts.Company, Contacts.[Last Name], Contacts.[First Name], Contacts.[E-mail Address], Contacts.[Business Phone]
FROM Contacts
WHERE (((Contacts.Company)=[Forms]![Opportunity]![cmbCompanyName]));
为了支持我的级联,cmbCompanyName
在更新时请求cmbPoCLastName
。
Private Sub cmbCompanyName_AfterUpdate()
cmbPoCLastName.Requery
End Sub
所有这些都导致在我的级联的第二部分中没有出现任何内容。
我认为问题是 cmbPoCLastName
被隐藏的 CompanyID 过滤。我不知道如何强制此查询查看公司名称与 ID 号。
谢谢。
【问题讨论】:
为什么将公司名称而不是公司 ID 保存到联系人中?查询对象看不到组合框的列。如果您想要公司名称,则有一个从组合框列中提取公司名称的文本框,然后查询对象引用文本框。如果您不使用 CompanyID 作为过滤条件,那么为什么还要麻烦在组合框列中呢? 或者使用VBA通过SQL语句设置combobox RowSource。或者去掉 ID 列,公司名称是组合框的值。 这能回答你的问题吗? Cascading combo boxes @June7,您对CompanyID
的评论起到了作用。我在Contacts
和Company
上创建了CompanyID
之间的一对多关系。谢谢。
【参考方案1】:
根据@June7 的第一条评论,我重新设计了我的表格以使用CompanyID
将它们相互关联。我之前在一些表格中使用了CompanyID
,在其他表格中使用了CompanyName
。
【讨论】:
以上是关于MS Access - 级联第二个组合框不级联的主要内容,如果未能解决你的问题,请参考以下文章