以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  提取需要行的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=49270)

--  作者:小猪鑫鑫
--  发布时间:2014/4/15 12:02:00
--  提取需要行的问题

各位老师:请教一个问题如下

 

标准 数据 结果
1,2,3 1,2,6,8 ok
5,6,7  
2,3,5,9 ok
3,4,5,7 ok
1,6 ok
4,7  
5,6,9,7  
3,7 ok
在数据列中提取包含有标准列中的任意一个数的行,如结果所示

意思是在数据列中只要包含有我的标准列中的任意一个数字的行(可以是1,也可以是2、3),都需要提取数据列中的该行,请各位老师指教!


--  作者:有点甜
--  发布时间:2014/4/15 12:31:00
--  

 比如代码可以这样写

 

 dim drs as list(of datarow) = Datatables("表A").select("数据 like \'*a*\' or 数据 like \'*b*\'")

 

 又或者,这样

 for each 标准

     for each 每一行

         \'比较

     next

 next


--  作者:逛逛
--  发布时间:2014/4/15 13:11:00
--  

前后加个逗号,把数据范围固定  再查询,

 

 

Dim drs As List(of DataRow) = DataTables("表A").Select("\',\'+ [数据] +\',\'  like \'%,1,%\' or  \',\'+ [数据] +\',\'  like \'%,2,%\'")


 


--  作者:小猪鑫鑫
--  发布时间:2014/4/15 13:36:00
--  

两位老师,感谢指点,但我的标准列是变量,不是固定的1,2,3,请问在变量的情况下,怎么样才能提取相关的行呢?


--  作者:逛逛
--  发布时间:2014/4/15 13:51:00
--  

Dim str As String = "1,2,6"
Dim str1() As String = str.Split(",")
Dim str2 As String = "\',\' + [列名] + \',\'"
Dim Filter As String = str2 & "like \'%," & str1(0) & ",%\'"
For i As Integer =1 To  str1.Length - 1
    Filter = Filter & " or " & str2 & "like \'%," & str1(i) & ",%\'"
Next

Dim drs As List(of DataRow) = DataTables("表名").Select(Filter)
For Each dr As DataRow In drs
    Output.show(dr("列名"))
Next


--  作者:小猪鑫鑫
--  发布时间:2014/4/15 14:08:00
--  

谢谢逛逛:您太牛了!


--  作者:lsy
--  发布时间:2014/4/15 14:13:00
--  

If e.DataCol.Name = "第一列" AndAlso e.DataRow.IsNull(e.DataCol) = False Then
    For Each s As String In DataTables("表B").DataRows(0)("第一列").Split(",")     \'取标准。
        For Each s1 As String In e.DataRow(e.DataCol).Split(",")
            If s = s1 Then
                e.DataRow("第二列") = "OK"
                Exit For
            End If
        Next
    Next
End If

 

= 最可靠,Like和Contains往往有误。