Foxtable(狐表)用户栏目专家坐堂 → 另类筛选技巧


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

主题:另类筛选技巧

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
另类筛选技巧  发帖心情 Post By:2009/3/20 10:05:00 [显示全部帖子]

另类筛选技巧


筛选只能通过表达进行的,例如:

Tables("订单").Filter = "[产品] = 'PD01'"


菜单中的筛选命令,也只是将用户的操作转换为筛选表达式而已。

但是表达式的表述能力是有限的,现实中一些复杂的筛选,可能没有办法用表达式来实现,那么应该如何来满足这样的需要呢。

实现的思路是,在表中增加一个表达式列,但是不设置表达式,并将其隐藏起来,当我们进行一些复杂的逻辑筛选式,可以逐行进行计算,将结果保存在这个临时列中,至于这个表达式列的数据类型,可以根据需要选择,我个人觉得用整数型列较为合适。


示例


要从订单表中筛选出各月上旬的订单:


1、预先可以通过代码或者菜单命令,增加一个整数型的表达式列,列名随便取,这里姑且命名为"ms",并将其隐藏起来。


2、定义一个窗口按钮或者菜单按钮,用于筛选,Click事件代码为:


For Each
dr As DataRow In DataTables("订单").DataRows
    If
dr.IsNull("日期") Then
        dr(
"ms") = "0"
   
Else
        dr(
"ms") = dr("日期").Day
    End
If
Next
Tables(
"订单").Filter = "ms >= 1 and ms <=10"


这样单击次按钮,即可筛选出每月上旬的订单。

这里只是提供了一个方法,你可以用这个方法完成各种任意复杂的筛选,实际上,Foxtable本身的排除重复内容筛选,就是用这个方法实现的。

需要特别提醒的是,用于辅助筛选的列,必须是表达式列,不能是数据列,否则会严重影响执行和存取性能。

[此贴子已经被作者于2009-3-20 10:07:05编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/3/20 10:28:00 [显示全部帖子]

呵呵,不多了,吐得差不多了。

图片点击可在新窗口打开查看

 回到顶部