Foxtable(狐表)用户栏目专家坐堂 → [原创]将简洁进行到底:简化范例『窗口筛选』的代码


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

主题:[原创]将简洁进行到底:简化范例『窗口筛选』的代码

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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
[原创]将简洁进行到底:简化范例『窗口筛选』的代码  发帖心情 Post By:2008/10/20 12:53:00 [只看该作者]

      以下代码是范例『窗口筛选』的代码,虽然简单明白,不过有点啰嗦

Dim Filter As String
With e.Form.Controls("cmbProduct")
    If .Value IsNot Nothing Then
        Filter = "产品 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("cmbCustomer")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "客户 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("cmbEmployee")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "雇员 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("StartDate")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "日期 >= #" & .Value & "#"
    End If
End With
With e.Form.Controls("EndDate")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "日期 <= #" & .Value & "#"
    End If
End With
If Filter > "" Then
    Tables("订单").Filter = Filter
End If

本人较喜欢简洁点的公式,于是对以上代码进行简化:

筛选代码:
Dim T As String() = {"CP","KH","GY","SD","ED","产品","客户","雇员","起始日期","结束日期"}
Dim Ft As String
    For n As Integer = 0 to 4
        dim Tc As String = e.form.Controls(T(n)).Value
        if Tc > "" then
           if n = 3 Then       
               Ft = Ft & " And " & T(n+5) & " >= #" & Tc & "#"
           ElseIF n = 4 Then 
               Ft = Ft & " And " & T(n+5) & " <= #" & Tc & "#"
           Else
               Ft = Ft & " And " & T(n+5) & " = '" & Tc & "'"
           End If
       End If
Next
If Ft > "" Then
      Tables("订单").Filter = Ft.SubString(5)
End If


清除条件代码:
Dim T As String() = {"CP","KH","GY","SD","ED"}
For n As Integer = 0 to 4
     e.Form.Controls(T(n)).Value = Nothing
Next



 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:窗口筛选.table

[此贴子已经被作者于2008-10-25 13:23:07编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2008/10/20 12:57:00 [只看该作者]

呵呵,我也学一下


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2008/10/20 13:03:00 [只看该作者]

大师风采依旧,学习。

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


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

顶一个!

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


加好友 发短信 好心情 一级勋章
等级:超级版主 帖子:715 积分:5564 威望:0 精华:1 注册:2008/8/31 20:45:00
  发帖心情 Post By:2008/10/20 13:21:00 [只看该作者]

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

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


加好友 发短信
等级:超级版主 帖子:315 积分:3217 威望:0 精华:6 注册:2008/8/31 19:42:00
  发帖心情 Post By:2008/10/20 21:29:00 [只看该作者]

开眼界了,谢谢大师!

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


加好友 发短信
等级:八尾狐 帖子:1995 积分:6338 威望:0 精华:0 注册:2017/11/8 17:37:00
  发帖心情 Post By:2018/11/29 10:51:00 [只看该作者]

好东西一定要好好学习

 回到顶部