以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]判断语句不执行  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=94329)

--  作者:铜豆
--  发布时间:2016/12/21 11:27:00
--  [求助]判断语句不执行
Dim Arys As List(Of String())
Arys = DataTables("行政级别").GetValues("省|市")
Dim drs As List(Of DataRow)
drs = DataTables("商务通对话表").Select("")
For Each dr As DataRow In drs
    For Each Ary As String() In Arys
        If dr("IP定位") Like " * Ary(1) * " Then
            dr("市") = Ary(1)
        End If
    Next
Next
[此贴子已经被作者于2016/12/21 11:34:55编辑过]

--  作者:有点色
--  发布时间:2016/12/21 11:34:00
--  

 

If dr("IP定位") Like "*" & Ary(1) & "*" Then


--  作者:铜豆
--  发布时间:2016/12/21 11:50:00
--  
老师,上述代码可以修成用FIND 方法查找引用吗?
--  作者:有点色
--  发布时间:2016/12/21 12:02:00
--  
 不可以。
--  作者:铜豆
--  发布时间:2016/12/21 12:31:00
--  
If e.DataCol.Name = "IP定位" Then
Dim Arys As List(Of String())
Arys = DataTables("行政级别").GetValues("省|市")
Dim drs As List(Of DataRow)
drs = DataTables("商务通对话表").Select("")
For Each dr As DataRow In drs
    For Each Ary As String() In Arys
        If dr("IP定位") Like "*" & Ary(0) & "*" Then
            dr("省") = Ary(0)
        End If
        If dr("IP定位") Like "*" & Ary(1) & "*" Then
            dr("市") = Ary(1)
        End If
    Next
Next
End If
老师运行这段代码速度有点慢150行要40秒左右,有没有什么方法可以快点,我代码是放在DataColChanged事件中
[此贴子已经被作者于2016/12/21 12:33:12编辑过]

--  作者:blackzhu
--  发布时间:2016/12/21 13:12:00
--  
 你都几层遍历了.
--  作者:blackzhu
--  发布时间:2016/12/21 13:17:00
--  
 这样改改吧!

If e.DataCol.Name = "IP定位" Then
    Dim dr As DataRow = DataTables("行政级别").Find("省 like \'*" & e.DataRow("IP定位") & "*\'")
    If dr IsNot Nothing Then
        e.DataRow("省") = dr("省")
    End If
End If

--  作者:铜豆
--  发布时间:2016/12/21 13:17:00
--  
有改进方法吗?


--  作者:铜豆
--  发布时间:2016/12/21 13:22:00
--  
老师省是段语句,IP是长语句,*不能在后面哦
--  作者:blackzhu
--  发布时间:2016/12/21 13:30:00
--  
If e.DataCol.Name = "IP定位" Then
    Dim Arys As List(Of String())
    Arys = DataTables("行政级别").GetValues("省|市")
    Dim str As String = e.DataRow("IP定位").tostring
    For Each Ary As String() In Arys
        If str.Contains(Ary(0)) The
 e.DataRow("省") = Ary(0)

        End If
    Next
End If
[此贴子已经被作者于2016/12/21 13:30:35编辑过]