Foxtable(狐表)用户栏目专家坐堂 → 请教:窗口的DataList1筛选的代码问题


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

主题:请教:窗口的DataList1筛选的代码问题

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


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
请教:窗口的DataList1筛选的代码问题  发帖心情 Post By:2009/4/30 12:14:00 [只看该作者]

下列代码中请看红色部分应该如何写,如果删除这二条,可以在表中筛选出来,加上的意思是想在DataList1中显示筛选结果,其它的字符型的都可以用,就是时间型无法用
Dim Filter As String
Dim dst As WinForm.DataList = e.Form.Controls("DataList1")

With e.Form.Controls("StartDate")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "离司时间 >= #" & .Value & "#"
       dst.RowFilter = 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 & "#"
       dst.RowFilter = Filter & "离司时间<= #" & .Value & "#"
 
       End If
End With
With e.Form.Controls("ComboBox9")
    If .Value IsNot Nothing Then
        Filter = "离司原因= '" & .Value & "'"
    dst.RowFilter =  "离司原因= '" & .Value & "'"

    End If
End With


If Filter > "" Then
    Tables("调出人员表").Filter = Filter
End If


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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/4/30 12:25:00 [只看该作者]

见下面.

[此贴子已经被作者于2009-4-30 12:27:44编辑过]

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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/4/30 12:27:00 [只看该作者]

以下是引用yangming在2009-4-30 12:14:00的发言:

下列代码中请看红色部分应该如何写,如果删除这二条,可以在表中筛选出来,加上的意思是想在DataList1中显示筛选结果,其它的字符型的都可以用,就是时间型无法用


  A.      Filter = Filter & "离司时间 >= #" & .Value & "#"
  B.     dst.RowFilter = Filter & "离司时间 >= #" & .Value & "#"


  A.      Filter = Filter & "离司时间<= #" & .Value & "#"
  B.     dst.RowFilter = Filter & "离司时间<= #" & .Value & "#"
 

你的红色代码好像有问题,前面的一行已经生成了正确的筛先表达式,Rowfilter这一行又重复连接了一次,就不正确了.


你的B行中的RowFilter是在A中的Filter的基础上又连了一次,连接重复了.不知是不是这个原因.

可以,把B行改为:dst.RowFilter = Filter 试一下.

[此贴子已经被作者于2009-4-30 12:29:31编辑过]

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


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

先谢谢!我试试

是这个问题,再次感谢!
[此贴子已经被作者于2009-4-30 12:38:37编辑过]

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2009/4/30 14:34:00 [只看该作者]

以下是引用yangming在2009-4-30 12:33:00的发言:
先谢谢!我试试

是这个问题,再次感谢!
[此贴子已经被作者于2009-4-30 12:38:37编辑过]

不用这么麻烦,利用老六的代码不要太爽!

1、首先在订单表新增一个窗口,窗口类型为模式,窗口插入一个TextBox和一个DataList,DataList绑定到客户表。

2、将TextBox1的TextChanged事件代码设为:

Dim txt As String = e.Form.Controls("TextBox1").Value
Dim
dst As WinForm.DataList = e.Form.Controls("DataList1")
If
txt = "" Then
    dst.RowFilter = ""

Else

    txt =
"'*" & txt & "*'"
    dst.RowFilter =
"客户ID Like " & txt & " Or 公司名称 Like " & txt & " Or 地址 Like " & txt & " Or 联系人 Like " & txt
End
If

这样我们在文本框中输入任何内容,DataList就会自动进行模糊筛选,显示客户ID、公司名称、地址、联系人这四列中,任何一列包括输入内容的行。


 回到顶部