我有一个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") & "#"
答案 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,你需要说出来。