Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 在MS Access中,基于表单中的多个组合框查询所有记录_Vba_Database_Ms Access_Ms Access 2013 - Fatal编程技术网

Vba 在MS Access中,基于表单中的多个组合框查询所有记录

Vba 在MS Access中,基于表单中的多个组合框查询所有记录,vba,database,ms-access,ms-access-2013,Vba,Database,Ms Access,Ms Access 2013,请帮我解决这个问题。我有两个组合框(函数名和年份)。我想根据这些组合框查询结果,如果这些框为空,则显示所有记录。我使用了以下代码,它仅适用于1个组合框: =[Forms]![你的表格]![YourCombo]或[Forms]![你的表格]![YourCombo]为空 当我对第二个组合框应用相同的逻辑时,结果不会显示出来。以下是我使用的代码: FROM Master_DataBase WHERE (((Master_DataBase.Status_of_Project)="Complet

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

=[Forms]![你的表格]![YourCombo]或[Forms]![你的表格]![YourCombo]为空

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

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;
我已附上表格组合框图像供您参考

另附一份(设计视图)供参考:


首先修复错误:

具有(((Master_DataBase.Function)=[Forms]![Navigator_Form]![FilterbyFunction])或(([Forms]![Navigator_Form]![FilterbyFunction])为空)且 (((Master_DataBase.Function)=[Forms]![Navigator_Form]![FilterbyYear])或(([Forms]![Navigator_Form]![FilterbyYear])为空)

具有(((Master_DataBase.Function)=[Forms]![Navigator_Form]![FilterbyFunction])或(([Forms]![Navigator_Form]![FilterbyFunction])为空)且 ((年份(主数据库。项目开始日期)=[Forms]![Navigator\u Form]![FilterByear]))或(([Forms]![Navigator\u Form]![FilterByear])为空)

编辑:

我只想将整个表达式简化为:

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\u Start\u Date。我使用了年份公式,看看我编辑的例子。我可能漏掉了一个括号,在SO编辑器上很难判断,但这应该足够让你接近。它考虑的是函数组合框结果,而不是年份组合框。