以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 生成查询条件的通用代码 (http://foxtable.net/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 这是例子:
[此贴子已经被作者于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 里进行判断。如: [此贴子已经被作者于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 -- 顶个! |