以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  Find Filter 条件 问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=4329)

--  作者:mr725
--  发布时间:2009/9/14 10:37:00
--  Find Filter 条件 问题
科目名称 列(内容样式): 银行存款_招商银行

在不分列的情况下

Dim dr As DataRow
dr = DataTables("test").Find("\'" & dr("科目名称").split("_")(0) & "\' = \'银行存款\' And \'\'" & dr("科目名称").split("_")(1) & "\' = \'招商银行\' ")

Tables("test").Filter ="[科目名称]1 = \'" & Value(0) & "\' And [科目名称]2 = \'" & Value(1) & "\'"

代码中标有底色的部分,\'" & dr("科目名称").split("_")(0) & "\'可以这么用吗?[科目名称]1又应怎样表达? 

【说明】:
[科目名称]1 = 银行存款   和 [科目名称]2 =招商银行  】
【Value(0) 和 Value(1) 是目录树级次上的[科目名称]1 和[科目名称]2】


不知道我说的清楚没有?
 
[此贴子已经被作者于2009-9-14 10:37:52编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/9/14 11:06:00
--  
比较的时候必须是列名和常量的比较,你的Split计算出来的是一个常量,常量和常量的比较,对于任何行都一样。
不能用find,只能用for each,逐行比较。
--  作者:mr725
--  发布时间:2009/9/14 11:42:00
--  

        Select Case e.Node.Level
            Case 0
                Dim Val() As String
                for each s as datarow in datatables("test").datarows
                    Val = s("科目名称").Split("_")
                    if Val(0)= " & Value(0) & " then
                        Tables("test").Filter ="Val(0) = \'" & Value(0) & "\'"
                        exit for
                    end if
                next
            Case 1
                Dim Val() As String
                for each s as datarow in datatables("test").datarows
                    Val = s("科目名称").Split("_")
                    if Val(1)= " & Value(1) & " then
                        Tables("test").Filter ="Val(0) = \'" & Value(0) & "\' And Val(1) = \'" & Value(1) & "\'"
                        exit for
                    end if
                next
        End Select       


这样?

[此贴子已经被作者于2009-9-14 11:41:42编辑过]

--  作者:mr725
--  发布时间:2009/9/14 11:55:00
--  
还是不行,又是常量比较啦,难道非要把 科目名称 列 进行分列后,再取 分列名 来比较? 
要知道: 科目 可能有五极,难道我要再分五列?就算内部表,每年也有几万条记录啊~

不分列真的不可以吗?
--  作者:chenwuwenyu
--  发布时间:2009/9/14 13:00:00
--  

Dim dr As DataRow
dr = DataTables("test").Find(" 科目名称= \'" & dr("科目名称").split("_")(0)&"_招商银行"& "\' )
不知道这样的行不行呀?

[此贴子已经被作者于2009-9-14 13:01:17编辑过]

--  作者:czy
--  发布时间:2009/9/14 14:38:00
--  

为何不用Like ?


--  作者:czy
--  发布时间:2009/9/14 14:49:00
--  
这样行吗?

Dim Value() As String = e.Node.FullPath.Split("\\")
Select Case e.Node.Level
    Case 0
        Tables("test").Filter = "科目名称 Like  \'" & e.Node.Text & "*\'"
    Case 1
        Tables("test").Filter = "科目名称 Like \'" & Value(0) & "_"  & Value(1) & "*\'"
End Select

--  作者:mr725
--  发布时间:2009/9/14 18:59:00
--  
以下是引用czy在2009-9-14 14:49:00的发言:
这样行吗?

Dim Value() As String = e.Node.FullPath.Split("\\")
Select Case e.Node.Level
    Case 0
        Tables("test").Filter = "科目名称 Like  \'" & e.Node.Text & "*\'"
    Case 1
        Tables("test").Filter = "科目名称 Like \'" & Value(0) & "_"  & Value(1) & "*\'"
End Select

谢谢c版,很好用~  【下午有空时一直在琢磨不分列怎么来生成目录树,没成功(用其他方式替代了),所以刚刚才试了试您的代码,非常理想】