以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求助 目录树  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=146672)

--  作者:jackyfashion
--  发布时间:2020/2/28 21:53:00
--  求助 目录树
老师:
          您好!

 

Dim kk As String = ("( = \'2020\' And = \'02\' And = \'24\') and ((odkl = \'女装\' and  ffaa = \'连衣裙\') or (odkl = \'女装\' and ffaa = \'恤衫\')) and (kkth = \'Ms lee\')")

tables("表A").Filter = kk

以上是根根下边三个多选筛选树得出的字句合成的的

以上代码可以从表A 筛选


以下三个选筛选树的代码:
Dim nms As String() = {"年","月","日"} \'指定生成目录树的各列
Dim qts As String() = {"\'","\'","\'"} \'指定将各列的值括起来的符号,这里都是字符型,所以都是单引号
Dim tr1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim flt As String
Dim nd As WinForm.TreeNode
For Each nd In tr1.SelectedNode.allNodes \'清除子节点的选中标记
    nd.Checked = False
Next
nd = tr1.SelectedNode.ParentNode
Do While nd IsNot Nothing \'清除父节点的选中标记
    nd.Checked = False
    nd = nd.ParentNode
Loop
For Each nd In tr1.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 val > "" Then
                val = val & " And "
            End If
            val = val & nms(i) & " = " & qts(i) & rts(i) & qts(i)
        Next
        If flt > "" Then
            flt = flt & " Or (" & val & ")"
        Else
            flt = val
        End If
    End If
Next 
Dim tr2 As WinForm.TreeView = e.Form.Controls("TreeView2")
Dim odkl As String
For Each nd1 As WinForm.TreeNode In tr2.SelectedNode.Nodes \'清除子节点选中状态
    nd1.Checked = False
Next
If tr2.SelectedNode.ParentNode IsNot Nothing Then \'去掉父节点选中状态
    tr2.SelectedNode.ParentNode.Checked = False
End If
For Each nd1 As WinForm.TreeNode In tr2.AllNodes
    If nd1.Checked Then
        If odkl > "" Then
            odkl = odkl & " Or "  \'注意用or而不是And
        End If
        If nd1.Level = 0 Then \'注意下面的条件都要用括号括起来
            odkl = odkl & "( odkl = \'" & nd1.Text & "\')"
        Else
            odkl = odkl & "( odkl = \'" & nd1.ParentNode.Text & "\' And ffaa = \'" & nd1.Text & "\')"
        End If
    End If
Next
Dim tr3 As WinForm.TreeView = e.Form.Controls("TreeView3")
Dim kkth As String
For Each nd2 As WinForm.TreeNode In tr3.SelectedNode.Nodes \'清除子节点选中状态
    nd2.Checked = False
Next
If tr3.SelectedNode.ParentNode IsNot Nothing Then \'去掉父节点选中状态
    tr3.SelectedNode.ParentNode.Checked = False
End If
For Each nd2 As WinForm.TreeNode In tr3.AllNodes
    If nd2.Checked Then
        If kkth > "" Then
            kkth = kkth & " Or "  \'注意用or而不是And
        End If
        If nd2.Level = 0 Then \'注意下面的条件都要用括号括起来
            kkth = kkth & "( kkth = \'" & nd2.Text & "\')"
        End If
    End If
Next
Tables("表A").Filter = ((flt) And (odkl) And (kkth))
提示:
"从字符串“年 = \'2020\' And 月 = \'02\' And 日 = ”到类型“Long”的转换无效"
以上的 年 月  日 三列都是字符型
请老师指教!!!
谢谢!!!
[此贴子已经被作者于2020/2/28 22:00:18编辑过]

--  作者:有点蓝
--  发布时间:2020/2/28 21:59:00
--  
Tables("表A").Filter = "(" & flt & ") And (" & odkl & ") And (" & kkth & ")"
--  作者:jackyfashion
--  发布时间:2020/2/28 22:02:00
--  
谢谢老师!!!
谢谢!!!

--  作者:jackyfashion
--  发布时间:2020/2/28 22:21:00
--  
老师:
您好!
改了代码后三个多选筛选树都选,就可以,
如果其中一个没选中就有如下提示:
语法错误:“”运算符后缺少操作数。
请老师指教!!!
谢谢!!!

--  作者:有点蓝
--  发布时间:2020/2/28 22:27:00
--  
Tables("表A").Filter = "(" & IF(flt>"",flt,"1=1") & ") And (" & IF(kkth>"",kkth,"1=1") & ") And (" & IF(odkl>"",odkl,"1=1")& ")"

--  作者:jackyfashion
--  发布时间:2020/2/28 22:30:00
--  
谢谢老师!!!
谢谢!!!

--  作者:jackyfashion
--  发布时间:2020/2/28 22:53:00
--  
老师:
您好!
保存不了,
提示:

编译错误:应为表达式。

Tables("A").Filter = "(" & IF(flt>"",flt,"1=1") & ") And (" & IF(kkth>"",kkth,"1=1") & ") And (" & IF(odkl>"",odkl,"1=1")& ")"

请老师指点!!!

谢谢!!!



--  作者:有点蓝
--  发布时间:2020/2/29 9:13:00
--  
我测试没有问题,上传实例说明
--  作者:jackyfashion
--  发布时间:2020/2/29 11:05:00
--  
老师:
您 好!

老师:上传了压缩文件,但看不到
谢谢!!!
[此贴子已经被作者于2020/2/29 11:10:30编辑过]

--  作者:有点蓝
--  发布时间:2020/2/29 11:12:00
--  
文件不能大于2M。重复上传,多试几次,直到成功