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 的评论起到了作用。我在ContactsCompany 上创建了CompanyID 之间的一对多关系。谢谢。 【参考方案1】:

根据@June7 的第一条评论,我重新设计了我的表格以使用CompanyID 将它们相互关联。我之前在一些表格中使用了CompanyID,在其他表格中使用了CompanyName

【讨论】:

以上是关于MS Access - 级联第二个组合框不级联的主要内容,如果未能解决你的问题,请参考以下文章

窗口加载时WPF级联组合框不绑定

组合框级联效应不适用于不同的行

MS Access 查询返回的记录不足,但仅限于某些约束

组合框级联效果不适用于不同的行

Access 2010 级联组合框运行时错误 424

级联组合框不会显示更新的值