我在Access 2010中有一个子报表,它根据搜索表单中的条件列出项目。在此表单中,用户可以选择ProjNo,或将其留空。如果有一个ProjNo,那么子报告应该只打印那个。如果它是空白的,那么它应该显示所有这些。
我试图设置一个可以执行此操作的SQL。但是,我遇到的问题是,当我尝试搜索所有项目时 - 即。 ProjNo在搜索表单中留空 - 它只显示第一个项目的信息。
SELECT Index.ProjNo, Index.Year, Index.Route, Index.Area,
Index.[Value], Index.[Updated],
Index.Page, Val(Nz([route],0)) AS routeNum
FROM [Index]
WHERE (((IIf([Activity].[ProjNo]<>"",[Index].[ProjNo]=[Activity].[ProjNo],
[Activity].[ProjNo] IS NULL));
我不擅长SQL,所以任何帮助都会非常感激。
答案 0 :(得分:1)
使用LIKE
和IIF()
或NZ()
。
示例A:
WHERE ProjNo LIKE IIF(searchProjNo="","*",searchProjNo)
例B:
WHERE ProjNo LIKE NZ(searchProjNo,"*")
注意:此方法适用于参数化查询,用户可以选择查看一条记录,所有记录或记录子集(例如,使用通配符,如123?或1 *)。
答案 1 :(得分:1)
忘掉条件部分。只需使用常规布尔运算符:
WHERE [Activity].[ProjNo] = "" OR
[Index].[ProjNo] = [Activity].[ProjNo]