【发布时间】: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之间的一对多关系。谢谢。