Foxtable(狐表)用户栏目专家坐堂 → [求助]SQL中空值与通配符的比较


  共有3060人关注过本帖树形打印复制链接

主题:[求助]SQL中空值与通配符的比较

帅哥哟,离线,有人找我吗?
kensou11111
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:255 积分:2359 威望:0 精华:0 注册:2011/4/25 9:23:00
[求助]SQL中空值与通配符的比较  发帖心情 Post By:2017/7/8 10:35:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下: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编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111408 积分:567110 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/7/8 10:37:00 [只看该作者]

使用这种方式设置条件:http://www.foxtable.com/webhelp/scr/1058.htm

 回到顶部
帅哥哟,离线,有人找我吗?
kensou11111
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:255 积分:2359 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By:2017/7/8 10:47:00 [只看该作者]

确实,这样就可以避免在select语句中判断空值的问题了

 回到顶部