在 MS Access 中根据表单中的多个组合框查询所有记录

Posted

技术标签:

【中文标题】在 MS Access 中根据表单中的多个组合框查询所有记录【英文标题】:Querying all the records based on multiple combo boxes from a form, in 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;

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

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

【问题讨论】:

【参考方案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 编辑器上很难判断,但这应该让你足够接近。 它正在考虑功能组合框结果,而不是年份组合框。

以上是关于在 MS Access 中根据表单中的多个组合框查询所有记录的主要内容,如果未能解决你的问题,请参考以下文章

Ms Access - 从组合框列更新图像

从包含 ACCESS 2013 中的多个表的表单中查找带有组合框的记录

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

MS Access - 构建一个组合框,该组合框根据先前的组合框选择返回多个值

来自组合框的 MS Access Like 查询

使用单个表单组合框中的多列作为 MS Access 中的查询参数