以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教:窗口的DataList1筛选的代码问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=2644)

--  作者:yangming
--  发布时间:2009/4/30 12:14:00
--  请教:窗口的DataList1筛选的代码问题

下列代码中请看红色部分应该如何写,如果删除这二条,可以在表中筛选出来,加上的意思是想在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
--  发布时间:2009/4/30 12:25:00
--  

见下面.

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

--  作者:cpayinyuan
--  发布时间: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
--  发布时间:2009/4/30 12:33:00
--  
先谢谢!我试试

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

--  作者:blackzhu
--  发布时间: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、公司名称、地址、联系人这四列中,任何一列包括输入内容的行。