Foxtable(狐表)用户栏目专家坐堂 → 查询有更简单的办法吗


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

主题:查询有更简单的办法吗

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


加好友 发短信
等级:五尾狐 帖子:1182 积分:8225 威望:0 精华:0 注册:2015/3/30 10:44:00
查询有更简单的办法吗  发帖心情 Post By:2016/7/23 16:08:00 [只看该作者]

Dim ddh As WinForm.ComboBox = e.Form.Controls("ComboBox7")
Dim ddhh As WinForm.ComboBox = e.Form.Controls("ComboBox8")
Dim startdd As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker1")
Dim enddd As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker2")

组合查询有没有代码简单点的写法。datatables("A").loadfilter = ""
我现在做的需要判断好多次,比如ddh.text = ""情况下,ddhh <> ""  然后加载。
我这么写需要把各种情况都要写出了,感觉很不满意。
有没有随便选择每个控件的值,自动去判断其他控件的值是否为空,然后把不为空的值作为条件来查询。


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


加好友 发短信
等级:狐精 帖子:3360 积分:24792 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2016/7/23 16:15:00 [只看该作者]

用iif函数拼接条件

比如: loderfilter=iif(e.form.controls("txt1").value<>"","产品='" & .form.controls("txt1").value & ”’“,"产品 is not null")& 下一个条件


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


加好友 发短信
等级:五尾狐 帖子:1182 积分:8225 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/7/23 16:33:00 [只看该作者]

回复2楼。
这样也应该判断多次吧。
可不可以对多个控件循环判断,比如发现有3个控件的值不为空,就把这3个控件作为条件,然后查询。

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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/7/23 16:40:00 [只看该作者]

动态查询条件肯定要逐个判断,没有办法的。除非条件个数是固定的

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


加好友 发短信
等级:五尾狐 帖子:1182 积分:8225 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/7/23 16:58:00 [只看该作者]

控件个数是固定的,这样可以实现不?

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2016/7/24 7:34:00 [只看该作者]

Dim Filter As String
Dim cls() as String = ("列1","列2","列3")
Dim ops() AS string = ("=" ,"=",">")
dim nms() as string = {"TextBox1","TextBox2","TextBox3"}
for i as integer = 0 to  nms.length -1
   if  e.form.Controls(nm).Value is not nothing then
         if filter > "" then
             filtter = filter & " And "
         end if
         dim prefix as string = ""
         if datatables("表名").DataCols(cls(i)).Isdate then
            prefix = "#"
         elsieif datatables("表名").DataCols(cls(i)).IsString then
           prefix = “‘”
         end if
         filter = filter & cls(i) & ops(i) & prefix & e.form.Controls(nm).Value & prefix
   end if
next
。。。。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/7/24 10:07:00 [只看该作者]


 回到顶部