以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  生成查询条件的通用代码  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=4028)

--  作者:reachtone
--  发布时间:2009/8/24 16:40:00
--  生成查询条件的通用代码
该代码可根据当前打开的table列,自动生成查询条件。比如,table表有2列,就可以输入2列的查询关键字;有5列就可以输入5列的查询关键字。这样的通用代码,将使查询更加灵活。
以下图为例,如要查询叠次等于“B”、且叠名包含“休”字的记录,只要输入“B,休”即可。关键字之间用半角逗号分开;
如要查询叠名包含“休”字的全部记录,只要输入“,休”即可。这表明第一列没有输入关键字。

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

--  作者:reachtone
--  发布时间:2009/8/24 16:41:00
--  
通用条件生成函数Filter的代码如下:

\'生成可见的列名称
Dim Cols,Vals as New List(of String)
Dim txt As String = "A"             \'加个A是为了便于替换
For Each c as Col in Args(0).Cols
    If c.Visible = True
        txt = txt & "," & c.name
    End If
Next
txt = txt.Replace("A,","")         \'生成可见列名
\'生成查询条件
Cols.AddRange(txt.Split(","))      \'字段列表
Vals.AddRange(Args(1).Replace("\'","\'\'").Replace("*","[*]").Split(","))  \'查询值列表并保证其有效
Dim flt As String = "A"            \'加个A是为了便于替换
Dim i as Integer = 0
For Each Val as String in Vals
    If i < Cols.Count
        flt = flt & " and " & Cols(i) & " like \'*" & Val & "*\'"
    End If
    i = i + 1
Next
flt = flt.Replace("A and ","")
Return flt


调用方法,如:

\'生成查询条件
Dim txt as String = Functions.Execute("Filter",Tables("窗口1_Table1"),e.Form.Controls("TextBox1").Text)
\'执行查询
Tables("窗口1_Table1").Filter = txt


这是例子:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table

[此贴子已经被作者于2009-8-24 16:42:41编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/8/24 16:46:00
--  
我重新顶
--  作者:roy78
--  发布时间:2009/8/24 16:46:00
--  
不顶白不顶,顶了还是顶,,,学习~~
--  作者:yangming
--  发布时间:2009/8/24 16:48:00
--  
学习研究,谢谢楼主!
--  作者:chenwuwenyu
--  发布时间:2009/8/24 17:03:00
--  
你太牛了,正琢磨实现这个功能呢,
看来我又可以偷懒了
谢谢
--  作者:reachtone
--  发布时间:2009/8/24 17:19:00
--  
以下是引用chenwuwenyu在2009-8-24 17:03:00的发言:
你太牛了,正琢磨实现这个功能呢,
看来我又可以偷懒了
谢谢

但要注意,二楼的代码只能对字符型的列进行查询。如果你的列中有其它数据类型,需要在 If i < Cols.Count 里进行判断。如:
If  Args(0).Cols(i).DataCol.IsNumeric   \'如果是数值型
If  Ars(0).Cols(i).DataCol.IsDate         \'如果是日期型,等等。否则会出错的。

[此贴子已经被作者于2009-8-24 17:22:26编辑过]

--  作者:狐哥
--  发布时间:2009/8/24 17:40:00
--  
越来越觉得reachtone伟大!
方便了自己更方便了大家.
--  作者:kylin
--  发布时间:2009/8/24 18:02:00
--  
抛玉的作用,收藏
谢谢了,呵呵
--  作者:gdlgh
--  发布时间:2009/8/24 19:44:00
--  
顶个!