以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]目录树长时间列筛选出错  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=113531)

--  作者:天一生水
--  发布时间:2018/1/17 16:44:00
--  [求助]目录树长时间列筛选出错

点击“时间筛选”按钮或者在列表框选择“收寄时间”,调出目录树;

为什么日期是当天的筛选无结果,往前或往后没有问题,找不出原因,请老师指教。谢谢!

 

 


图片点击可在新窗口打开查看此主题相关图片如下:image 2.jpg
图片点击可在新窗口打开查看

 

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


--  作者:有点甜
--  发布时间:2018/1/17 16:51:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:多选筛选树 - 副本.table


--  作者:天一生水
--  发布时间:2018/1/17 21:12:00
--  

甜老师,我下载后,按照一楼的勾选2018-1-17,仍然没有筛选到数据。

单位和家里的两台电脑都一样,是哪里原因?


--  作者:有点甜
--  发布时间:2018/1/17 21:16:00
--  

下载2楼代码,认认真真测试。我测试没问题。


--  作者:天一生水
--  发布时间:2018/1/17 21:29:00
--  

重新下载测试后还是不行,请看图:

 


图片点击可在新窗口打开查看此主题相关图片如下:gif.gif
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2018/1/17 21:43:00
--  

Dim s As String = e.Form.Controls("CheckedComboBox筛选树").Text
Dim Colstr() As String
Dim qts As String() = {"\'","#",""}
Dim trv As WinForm.TreeView = e.Sender
Dim flt As String = ""
Dim nd As WinForm.TreeNode
Dim pd As WinForm.TreeNode
Dim notchecked As Integer = 0
Colstr = s.split("|")
For i As Integer = 0 To Colstr.Length - 1
    If CurrentTable.Cols.Contains(Colstr(i)) = False Then
        If trv.Nodes.Count > 0 Then
            trv.Nodes.Clear()
        End If
        e.Form.Controls("CheckedComboBox筛选树").Text = "选择筛选列(最好包括拼音)"
        Return
    End If
Next
If e.Node.Name = "显示所有行" Then
    If e.Node.Checked = True Then
        For Each nd In trv.AllNodes
            If nd.Name <> "显示所有行" Then
                nd.Checked = False
            End If
        Next
        CurrentTable.Filter = ""
    Else
        For Each nd In trv.AllNodes
            nd.Checked = False
        Next
        CurrentTable.Filter = (1 = 2)
    End If
    trv.CollapseAll
    Return
Else
    trv.AllNodes(0).Checked = False
End If
For Each nd In e.node.allNodes
    nd.Checked = False
Next
pd = e.Node.ParentNode
Do While pd IsNot Nothing
    pd.Checked = False
    pd = pd.ParentNode
Loop
For Each nd In trv.AllNodes
    If nd.Checked  Then
        Dim rts() As String = nd.FullPath.Split("\\")
        Dim val As String = ""
        For i As Integer = 0 To rts.length - 1
            If CurrentTable.DataTable.DataCols(Colstr(i)).IsString Then
                If rts(i) <> "空" Then
                    If val > "" Then
                        val = val & " And "
                        val = val & Colstr(i) & " = " & qts(0) & rts(i) & qts(0)
                    Else
                        val = val & Colstr(i) & " = " & qts(0) & rts(i) & qts(0)
                    End If
                ElseIf rts(i) = "空" Then
                    If val > "" Then
                        val = val & " And "
                        val = val & Colstr(i) & " Is Null"
                    Else
                        val = val & Colstr(i) & " Is Null"
                    End If
                End If
            ElseIf CurrentTable.DataTable.DataCols(Colstr(i)).IsDate Then
                If rts(i) <> #0001-1-1 0:00:00# Then
                    If val > "" Then
                        val = val & " And "
                        val = val & Colstr(i) & " >= " & qts(1) & rts(i) & qts(1) & " and " & Colstr(i) & " < " & qts(1) & cdate(rts(i)).addSeconds(1) & qts(1)
                    Else
                        val = val & Colstr(i) & " >= " & qts(1) & rts(i) & qts(1) & " and " & Colstr(i) & " < " & qts(1) & cdate(rts(i)).addSeconds(1) & qts(1)
                    End If
                ElseIf rts(i) = #0001-1-1 0:00:00# Then
                    If val > "" Then
                        val = val & " And "
                        val = val & Colstr(i) & " Is Null"
                    Else
                        val = val & Colstr(i) & " Is Null"
                    End If
                End If
            ElseIf CurrentTable.DataTable.DataCols(Colstr(i)).IsNumeric Then
                If rts(i) <> 0 Then
                    If val > "" Then
                        val = val & " And "
                        val = val & Colstr(i) & " = " & qts(2) & rts(i) & qts(2)
                    Else
                        val = val & Colstr(i) & " = " & qts(2) & rts(i) & qts(2)
                    End If
                ElseIf rts(i) = 0 Then
                    If val > "" Then
                        val = val & " And "
                        val = val & Colstr(i) & " Is Null"
                    Else
                        val = val & Colstr(i) & " Is Null"
                    End If
                End If
            ElseIf CurrentTable.DataTable.DataCols(Colstr(i)).IsBoolean Then
                If rts(i) <> False Then
                    If val > "" Then
                        val = val & " And "
                        val = val & Colstr(i) & " = " & qts(0) & True & qts(0)
                    Else
                        val = val & Colstr(i) & " = " & qts(0) & True & qts(0)
                    End If
                ElseIf rts(i) = False Then
                    If val > "" Then
                        val = val & " And "
                        val = val & Colstr(i) & " = " & qts(0) & False & qts(0)
                    Else
                        val = val & Colstr(i) & " = " & qts(0) & False & qts(0)
                    End If
                End If
            End If
        Next
        If flt > "" Then
            flt = flt & " Or (" & val & ")"
        Else
            flt = val
        End If
        notchecked + = 1
    End If
Next

If flt > "" AndAlso notchecked > 0 Then
    CurrentTable.Filter = flt
Else
    CurrentTable.Filter = (1 = 2)
End If


--  作者:天一生水
--  发布时间:2018/1/17 21:48:00
--  
行了,谢谢老师!