【问题标题】:MS ACCES Filter ComboBox ALL OptionMS ACCESS 过滤器组合框所有选项
【发布时间】: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 是伪代码

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

什么是约定?

【问题讨论】:

    标签: ms-access filter combobox wildcard


    【解决方案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 字段中使用它。 * 像文字一样使用,您几乎可以使用任何其他您喜欢的。
    猜你喜欢
    • 1970-01-01
    • 2019-04-13
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    相关资源
    最近更新 更多