【问题标题】:Querying all the records based on multiple combo boxes from a form, in MS Access在 MS Access 中根据表单中的多个组合框查询所有记录
【发布时间】:2021-02-05 12:53:13
【问题描述】:

请帮我解决这个问题。我有 2 个组合框(功能名称和年份)。我想根据这些组合框查询结果,如果这些框为空,则显示所有记录。我使用了以下代码,它仅适用于 1 个组合框:

=[Forms]![YourForm]![YourCombo] OR [Forms]![YourForm]![YourCombo] IS NULL

当我对第二个组合框应用相同的逻辑时,结果没有显示出来。以下是我使用的代码:

FROM Master_DataBase
WHERE (((Master_DataBase.Status_of_Project)="Completed"))
GROUP BY Master_DataBase.Function, Master_DataBase.Project_Name, Year([Project_Start_Date])
HAVING (((Master_DataBase.Function)=[Forms]![Navigator_Form]![FilterbyFunction])) OR ((([Forms]![Navigator_Form]![FilterbyFunction]) Is Null)) AND
(((Master_DataBase.Function)=[Forms]![Navigator_Form]![FilterbyYear])) OR ((([Forms]![Navigator_Form]![FilterbyYear]) Is Null))
ORDER BY Count(Master_DataBase.Status_of_Project) DESC;

我已附上表单组合框图片供您参考。

再附一张(设计图)供参考:

【问题讨论】:

    标签: vba database ms-access ms-access-2013


    【解决方案1】:

    首先修复你的错误:

    HAVING (((Master_DataBase.Function)=[Forms]![Navigator_Form]![FilterbyFunction])) 或 ((([Forms]![Navigator_Form]![FilterbyFunction]) 为空)) 和 ((((Master_DataBase.Function)=[Forms]![Navigator_Form]![FilterbyYear])) OR ((([Forms]![Navigator_Form]![FilterbyYear]) 为空)))

    HAVING (((Master_DataBase.Function)=[Forms]![Navigator_Form]![FilterbyFunction])) 或 ((([Forms]![Navigator_Form]![FilterbyFunction]) 为空)) 和 (((Year(Master_DataBase.Project_Start_Date))=[Forms]![Navigator_Form]![FilterbyYear])) OR ((([Forms]![Navigator_Form]![FilterbyYear]) 为空) )

    编辑:

    我会将整个表达式简化为:

    HAVING Master_DataBase.Function=Nz([Forms]![Navigator_Form]![FilterbyFunction],Master_DataBase.Function)
    AND Year(Master_DataBase.Project_Start_Date)=Nz([Forms]![Navigator_Form]![FilterbyYear],Year(Master_DataBase.Project_Start_Date))
    

    【讨论】:

    • 它要求 Master_Database.Year 作为参数,但是,它没有显示确切的结果。
    • 您的表字段实际上是否称为Year?那只是一个例子。您必须使用应该与 FilterbyYear 进行比较的任何字段。
    • 我已附上设计视图图像供您参考。实际上,字段名称是 Project_Start_Date。我为此使用了年份公式。
    • 看看我编辑的例子。我可能错过了一个括号,在 SO 编辑器上很难判断,但这应该让你足够接近。
    • 它正在考虑功能组合框结果,而不是年份组合框。
    猜你喜欢
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    相关资源
    最近更新 更多