当过滤器文本框为空时,返回所有值

时间:2014-05-18 10:11:42

标签: sql ms-access

我有一个Access表单当我将过滤器文本框(例如Me.Text23)留空或空白时,我想返回所有值

这是我的代码:

DoCmd.OpenReport "Report", acViewPreview, " select * from main where border LIKE'" & _ 
me.Text23 & "' AND a_date Between #" & Format(Me.Text18, "mm\/dd\/yyyy") & _ 
"# And #" & Format(Me.Text20, "mm\/dd\/yyyy") & "#" 

2 个答案:

答案 0 :(得分:1)

尝试类似

的内容
... "select * from main where " & iif(me.Text23 <> "", " border like " & me.Text.23 & " and ", "") & "a_date between #" ....

了解iif here

答案 1 :(得分:0)

我想你想要:

DoCmd.OpenReport "Report", acViewPreview, , "border LIKE '" & _
Replace(Me.Text23 & "", "'", "''") & "*' AND a_date Between #" & _
Format(Me.Text18, "yyyy/mm/dd") & _
"# And #" & Format(Me.Text20, "yyyy/mm/dd") & "#"

我建议你在文本框上加上适当的名字,比如txtStartDate 使用年,月,日格式可避免出现问题 OpenReport的WHERE参数接受类似于SQL WHERE参数的字符串,但没有任何额外的位 用两个单引号替换单引号可以避免包含引号的字符串出现问题。

如果Text23为空,则WHERE语句将读取LIKE '*',这是非空的所有内容。如果你需要null Borders,你需要说出来。