Foxtable(狐表)用户栏目专家坐堂 → 生成查询条件的通用代码


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

主题:生成查询条件的通用代码

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


加好友 发短信 一级勋章
等级:版主 帖子:1991 积分:19363 威望:0 精华:20 注册:2008/9/2 10:09:00
生成查询条件的通用代码  发帖心情 Post By:2009/8/24 16:40:00 [只看该作者]

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

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

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


加好友 发短信 一级勋章
等级:版主 帖子:1991 积分:19363 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By: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编辑过]

[本帖被加为精华]
 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/8/24 16:46:00 [只看该作者]

我重新顶

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


加好友 发短信
等级:一尾狐 帖子:463 积分:3559 威望:0 精华:0 注册:2009/6/26 8:01:00
  发帖心情 Post By:2009/8/24 16:46:00 [只看该作者]

不顶白不顶,顶了还是顶,,,学习~~

 回到顶部
美女呀,离线,留言给我吧!
yangming
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/8/24 16:48:00 [只看该作者]

学习研究,谢谢楼主!

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


加好友 发短信
等级:幼狐 帖子:180 积分:1239 威望:0 精华:0 注册:2009/5/5 10:20:00
  发帖心情 Post By:2009/8/24 17:03:00 [只看该作者]

你太牛了,正琢磨实现这个功能呢,
看来我又可以偷懒了
谢谢

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


加好友 发短信 一级勋章
等级:版主 帖子:1991 积分:19363 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:三尾狐 帖子:719 积分:5181 威望:0 精华:1 注册:2008/9/24 10:41:00
  发帖心情 Post By:2009/8/24 17:40:00 [只看该作者]

越来越觉得reachtone伟大!
方便了自己更方便了大家.

 回到顶部
帅哥,在线噢!
kylin
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 F6
等级:狐精 帖子:3030 积分:19188 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By:2009/8/24 18:02:00 [只看该作者]

抛玉的作用,收藏
谢谢了,呵呵

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


加好友 发短信
等级:一尾狐 帖子:449 积分:3506 威望:0 精华:5 注册:2008/9/1 2:32:00
  发帖心情 Post By:2009/8/24 19:44:00 [只看该作者]

顶个!

 回到顶部
总数 26 1 2 3 下一页