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 = "*"
,如果您在组合框中选择<ALL>
,它将显示所有订单。
顺便说一句:每次在组合框中选择某些内容时,您肯定都必须刷新列表框。
【讨论】:
像魅力一样工作。我觉得有点愚蠢,不考虑在 ID 上使用 LIKE;我尝试了一个=,它适用于所有接受的选项。当 ID 像另一个 ID 时,这会导致问题吗? IE。在组合框中选择 ID 为 2 的公司。这不也显示 id 为:12、22、23 等的公司吗? 我的示例没有使用LIKE
,我根本不会在 ID 字段中使用它。 *
像文字一样使用,您几乎可以使用任何其他您喜欢的。以上是关于MS ACCESS 过滤器组合框所有选项的主要内容,如果未能解决你的问题,请参考以下文章