在 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 中根据表单中的多个组合框查询所有记录的主要内容,如果未能解决你的问题,请参考以下文章
从包含 ACCESS 2013 中的多个表的表单中查找带有组合框的记录