以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  查询有更简单的办法吗  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=87963)

--  作者:huhu
--  发布时间: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
--  发布时间:2016/7/23 16:15:00
--  

用iif函数拼接条件

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


--  作者:huhu
--  发布时间:2016/7/23 16:33:00
--  
回复2楼。
这样也应该判断多次吧。
可不可以对多个控件循环判断,比如发现有3个控件的值不为空,就把这3个控件作为条件,然后查询。

--  作者:Hyphen
--  发布时间:2016/7/23 16:40:00
--  
动态查询条件肯定要逐个判断,没有办法的。除非条件个数是固定的
--  作者:huhu
--  发布时间:2016/7/23 16:58:00
--  
控件个数是固定的,这样可以实现不?
--  作者:狐狸爸爸
--  发布时间: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
。。。。


--  作者:大红袍
--  发布时间:2016/7/24 10:07:00
--  

mark 查询条件

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=87099&skin=0