报告索引未正确过滤访问 2010
Report Index Not Filtering Properly Access 2010
我在 Access 2010 中有一个子报表,它根据搜索表单的条件在索引中列出项目。在此表格中,用户可以 select 各种参数进行搜索(例如项目编号、区域、项目年份等...)。
我设置了一个SQL来过滤符合搜索条件的项目。目前,它仅适用于项目编号;如果我直接过滤它,它会显示一个项目,否则它会显示每个项目,而不管其他搜索参数。
索引必须能够按 ProjNo 和 按所有其他条件(项目年份、区域、部门、设计师等...)进行过滤
SELECT * FROM INDEX WHERE INDEX.ProjNo LIKE
IIF(Forms![SearchForm]![ProjNo]="","*",Forms![SearchForm]![ProjNo])
我不太擅长 SQL,所以任何建议都很好。
试试这个:
SELECT * FROM INDEX WHERE INDEX.ProjNo LIKE
IIF(Len(Forms![SearchForm]![ProjNo])>0,Forms![SearchForm]![ProjNo],"*")
当然,您可以在 vba 中评估表单的内容并确定是否应该应用过滤器,例如(未测试)
Dim strProject As String, strQuery as string
If Me.ProjNo.Selected > 0 Then
strProject = Me.ProjNo
Else
strProject = "*"
End If
strQuery = "SELECT * FROM INDEX WHERE INDEX.ProjNo LIKE " & Chr(34) & strProject & Chr(34)
然后您可以使用它来构建您的过滤表达式。
你想要...
The rows which match all the criteria. So if they search by, say, area
and project year, it should bring everything that matches both.
使用一个 WHERE
子句条件指定您要在 区域 上匹配,另一个条件用于 项目年份 。用AND
.
组合两个条件
假设您的 SearchForm 包含一个名为 txtArea 的文本框用于 area 值,另一个名为txtProjectYear 项目年份 值 ...
SELECT * FROM [INDEX] AS i
WHERE
i.area = Forms![SearchForm]![txtArea]
AND i.[project year] = Forms![SearchForm]![txtProjectYear]
注意 INDEX
是 reserved word。我将它括在 SQL 语句中,这应该可以减少出现问题的可能性。但是,如果是我,我会给 table 一个不同的名字。
我在 Access 2010 中有一个子报表,它根据搜索表单的条件在索引中列出项目。在此表格中,用户可以 select 各种参数进行搜索(例如项目编号、区域、项目年份等...)。
我设置了一个SQL来过滤符合搜索条件的项目。目前,它仅适用于项目编号;如果我直接过滤它,它会显示一个项目,否则它会显示每个项目,而不管其他搜索参数。
索引必须能够按 ProjNo 和 按所有其他条件(项目年份、区域、部门、设计师等...)进行过滤
SELECT * FROM INDEX WHERE INDEX.ProjNo LIKE
IIF(Forms![SearchForm]![ProjNo]="","*",Forms![SearchForm]![ProjNo])
我不太擅长 SQL,所以任何建议都很好。
试试这个:
SELECT * FROM INDEX WHERE INDEX.ProjNo LIKE
IIF(Len(Forms![SearchForm]![ProjNo])>0,Forms![SearchForm]![ProjNo],"*")
当然,您可以在 vba 中评估表单的内容并确定是否应该应用过滤器,例如(未测试)
Dim strProject As String, strQuery as string
If Me.ProjNo.Selected > 0 Then
strProject = Me.ProjNo
Else
strProject = "*"
End If
strQuery = "SELECT * FROM INDEX WHERE INDEX.ProjNo LIKE " & Chr(34) & strProject & Chr(34)
然后您可以使用它来构建您的过滤表达式。
你想要...
The rows which match all the criteria. So if they search by, say, area and project year, it should bring everything that matches both.
使用一个 WHERE
子句条件指定您要在 区域 上匹配,另一个条件用于 项目年份 。用AND
.
假设您的 SearchForm 包含一个名为 txtArea 的文本框用于 area 值,另一个名为txtProjectYear 项目年份 值 ...
SELECT * FROM [INDEX] AS i
WHERE
i.area = Forms![SearchForm]![txtArea]
AND i.[project year] = Forms![SearchForm]![txtProjectYear]
注意 INDEX
是 reserved word。我将它括在 SQL 语句中,这应该可以减少出现问题的可能性。但是,如果是我,我会给 table 一个不同的名字。