Access 2010中的条件WHERE语句

时间:2014-08-05 22:26:14

标签: sql ms-access report ms-access-2010 subreport

我在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,所以任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:1)

使用LIKEIIF()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]