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


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

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

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9876 积分:57613 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2009/8/26 13:35:00 [显示全部帖子]

 学习.

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9876 积分:57613 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2009/8/26 13:42:00 [显示全部帖子]

以下是引用reachtone在2009-8-24 17:19: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编辑过]

 有谁可以告诉我这个判断是怎么加进去的?


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9876 积分:57613 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2009/8/26 14:59:00 [显示全部帖子]

以下是引用reachtone在2009-8-26 14:43:00的发言:

如果是数值型的列,可以这样:
把原来代码中的:flt = flt & " and " & Cols(i) & " like '*" & Val & "*'"  替换成:

        If Args(0).Cols(i).DataCol.IsNumeric and Trim(Val).length > 0 and Char.IsNumber(Val) Then
            flt = flt & " and " & Cols(i) & " = " & Val
        ElseIf Args(0).Cols(i).DataCol.IsString Then
            flt = flt & " and " & Cols(i) & " like '*" & Val & "*'"
        End If

第一行表示的意思是:
如果列类型为数值型:Args(0).Cols(i).DataCol.IsNumeric,而且
      输入的关键字不为空:Trim(Val).length > 0,而且
     输入的关键字也是数值型:Char.IsNumber(Val)

[此贴子已经被作者于2009-8-26 14:44:10编辑过]

  老大,你好人做到底,这一个只是数值型的,如其他的类型呢,你特别提到日期型的,怎么改呢?


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9876 积分:57613 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2009/8/26 15:01:00 [显示全部帖子]

还有这个代码绑定表不能用吗?


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9876 积分:57613 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2009/8/26 15:15:00 [显示全部帖子]

以下是引用blackzhu在2009-8-26 15:01:00的发言:

还有这个代码绑定表不能用吗?

  不存在这个问题.


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9876 积分:57613 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2009/8/26 15:25:00 [显示全部帖子]

以下是引用reachtone在2009-8-26 15:14:00的发言:

日期也很简单啊,无非再加上date的判断而已。
这个代码就是根据用户输入的查询关键字自动生成查询条件的,返回值就是一串字符。在filter里可以直接使用。

   你这个代码我刚才试出来了,谢谢!但效果做不到的是如我在"textbox1"输入一个数据如"123",可以列出一个表中凡是和这个数据相匹配的行出来,不管在什么列.数据越完整,如这个表只有一个列的数据是"123",那么最后显示的就是这个数据的行.这个能改吗?


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9876 积分:57613 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2009/8/26 16:50:00 [显示全部帖子]

以下是引用reachtone在2009-8-26 16:18:00的发言:

这个查询代码是按列顺序来的,如表中有A、B、C三列,输入的关键字是1,2,3,则自动查询A=1 and B=2 and C=3的记录。如果只输入了1,则只查A=1;如果输入了,1,则只查B=1。。。明白了吗?输入的关键字是和相应的列对应的。
你这个要求也很容易做到,无非是把每个列和关键字进行比较查询而已。

  奇怪,我的做不到你所说的.按你的说法,我只要输入在这个表有这个数据的就能找出这个数据行,但我却不行.有的列能找出有的列找不到.你的代码是不是控制列数的?


 回到顶部