vba - 在 MS Access 中根据表单中的多个组合框查询所有记录
问题描述
请帮我解决这个问题。我有 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;
我附上了表格组合框图片供您参考。
再附一张(设计图)供参考:
解决方案
首先修复您的错误:
HAVING (((Master_DataBase.Function)=[Forms]![Navigator_Form]![FilterbyFunction])) OR ((([Forms]![Navigator_Form]![FilterbyFunction]) 为空)) AND (((Master_DataBase.Function) =[Forms]![Navigator_Form]![FilterbyYear])) OR ((([Forms]![Navigator_Form]![FilterbyYear]) 为空))
到
HAVING (((Master_DataBase.Function)=[Forms]![Navigator_Form]![FilterbyFunction])) OR ((([Forms]![Navigator_Form]![FilterbyFunction]) 为空)) AND ((( 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))
推荐阅读
- vue.js - VueJS:Firebase 抛出错误“FirebaseError:消息:为用户订阅 FCM 时出现问题”
- variable-assignment - 二次分配过程应该在有向或无向数据上运行吗?(在 ucinet 中)
- shell - 发光做一个sh脚本
- python - 理解 numpy 自引用赋值
- asp.net - ASP:NET 如何正确地将参数发送到 Actions?
- python - TypeError:“列表”对象不能解释为整数 Python 二进制文件
- unit-testing - 如何测试假设其输入来自智能构造函数的函数?
- c# - 如何使用 QuikGraph C# 从顶点列表构造最小生成树?
- python - 我的 LSTM 解决方案给出了预测的平均线,但 val_loss 的损失为 0.1 * e-5
- r - 使用 blogdown 自动化站点构建