MS ACCESS 过滤器组合框所有选项

Posted

技术标签:

【中文标题】MS ACCESS 过滤器组合框所有选项【英文标题】:MS ACCES Filter ComboBox ALL Option 【发布时间】:2020-10-14 05:24:43 【问题描述】:

在我的 MS-Acces 2013 项目中,我想在列表框中显示订单。我想按公司过滤带有组合框的订单。组合框列出了所有公司以及一个 ALL 选项。我解决这个问题的方法是:

公司组合框:

SELECT tblCompany.Name as Filter, tblCompany.Name
FROM tblCompany 
UNION SELECT "*","<ALL>" 
FROM tblCompany
ORDER BY tblCompany.Name;

订单列表:

SELECT *
FROM tblOrders
INNER JOIN tblCompany ON tblOrders.CompanyID = tblCompany.ID
Where tblCompany.Name Like CompanyCombobox;

CompanyCombobox 是伪代码

我不喜欢这个解决方案。我觉得很脏我的直觉告诉我,我需要过滤公司身份。

什么是约定?

【问题讨论】:

【参考方案1】:

将此作为组合框的行源:

SELECT tblCompany.ID As Filter, tblCompany.Name
FROM tblCompany 
UNION SELECT "*","<ALL>" 
FROM tblCompany
ORDER BY tblCompany.Name

(它选择tblCompany.ID 而不是tblCompany.Name

将此作为列表框的行源:

SELECT * FROM tblOrders
INNER JOIN tblCompany
    ON tblOrders.CompanyID = tblCompany.ID
WHERE tblCompany.ID Like CompanyCombobox.Value
    Or CompanyCombobox.Value = "*"

CompanyCombobox是组合框控件名称)

诀窍是附加条件Or CompanyCombobox.Value = "*",如果您在组合框中选择&lt;ALL&gt;,它将显示所有订单。

顺便说一句:每次在组合框中选择某些内容时,您肯定都必须刷新列表框。

【讨论】:

像魅力一样工作。我觉得有点愚蠢,不考虑在 ID 上使用 LIKE;我尝试了一个=,它适用于所有接受的选项。当 ID 像另一个 ID 时,这会导致问题吗? IE。在组合框中选择 ID 为 2 的公司。这不也显示 id 为:12、22、23 等的公司吗? 我的示例没有使用LIKE,我根本不会在 ID 字段中使用它。 * 像文字一样使用,您几乎可以使用任何其他您喜欢的。

以上是关于MS ACCESS 过滤器组合框所有选项的主要内容,如果未能解决你的问题,请参考以下文章

使用宏过滤带有组合框的表单 - MS Access

MS Access 数据表不会根据组合框更新

如何使用多个组合框过滤 MS Access 中的数据?

在 ms-Access 中使用组合框创建搜索表单

MS Access Form:使用第一个 Combobox 的值来过滤第二个 Combobox 的选项?

使用多个相互构建的组合框过滤表单