以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]SQL中空值与通配符的比较  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=103438)

--  作者:kensou11111
--  发布时间:2017/7/8 10:35:00
--  [求助]SQL中空值与通配符的比较

图片点击可在新窗口打开查看此主题相关图片如下:007.png
图片点击可在新窗口打开查看

我设计了上面这个窗口,在按钮中设计了以下代码,希望可以实现上面所有条件的全模糊查询。但是当[来源],[区域],[时间],[项目],[供应商],[品牌]其中一列数据为空时,则此行数据将查询不出(是否是因为 空值 like “%%%” = false呢?)。那么这个代码该如何改进呢?

Dim ld1,ld2,ld3,ld4,ld5 As String
Dim startdate,enddate As Date

If e.Form.Controls("区域").Value Is Nothing Then
    ld1 = "%"
Else
    ld1 = e.Form.Controls("区域").Value
End If

If e.Form.Controls("项目").Value Is Nothing Then
    ld2 = "%"
Else
    ld2 = e.Form.Controls("项目").Value
End If

If e.Form.Controls("供应商").Value Is Nothing Then
    ld3 = "%"
Else
    ld3 = e.Form.Controls("供应商").Value
End If

If e.Form.Controls("品牌").Value Is Nothing Then
    ld4 = "%"
Else
    ld4 = e.Form.Controls("品牌").Value
End If

If e.Form.Controls("来源").Value Is Nothing Then
    ld5 = "%"
Else
    ld5 = e.Form.Controls("来源").Value
End If

If e.Form.Controls("开始日期").value Is Nothing Then
    startdate = #01/01/1900#
Else
    startdate = e.Form.Controls("开始日期").value
End If

If e.Form.Controls("截止日期").value Is Nothing Then
    enddate = #01/01/9999#
Else
    enddate = e.Form.Controls("截止日期").value
End If


图片点击可在新窗口打开查看此主题相关图片如下:008.png
图片点击可在新窗口打开查看
不知道为何这段代码发不上来,只能以图片贴出了
[此贴子已经被作者于2017/7/8 10:42:47编辑过]

--  作者:有点蓝
--  发布时间:2017/7/8 10:37:00
--  
使用这种方式设置条件:http://www.foxtable.com/webhelp/scr/1058.htm
--  作者:kensou11111
--  发布时间:2017/7/8 10:47:00
--  
确实,这样就可以避免在select语句中判断空值的问题了