以文本方式查看主题

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

--  作者:douglas738888
--  发布时间:2017/9/28 8:52:00
--  提取重复值的问题

老师,下面代码可以进行单数据的比对,如果是多值的如何进行比对,并提取重复值到另一列

 

-DataColChanged

 

Dim dt As DataTable = DataTables("技术表")
For Each dr As DataRow In dt.DataRows
    If dt.Find("测试数据 = \'" & dr("标准数据") & "\'") IsNot Nothing Then
        dr("包含数据") = dr("标准数据")
    End If
Next

 

标准数据                  测试数据                  包含数据

123,456,789           111,234,123           123

 

256,547,986           986,369,256           256,986

[此贴子已经被作者于2017/9/28 8:52:14编辑过]

--  作者:有点甜
--  发布时间:2017/9/28 8:55:00
--  

Dim dt As DataTable = DataTables("技术表")
For Each dr As DataRow In dt.DataRows
    If dt.Find("测试数据 like \'%" & dr("标准数据") & "%\'") IsNot Nothing Then
        dr("包含数据") = dr("标准数据")
    End If
Next

 

http://www.foxtable.com/webhelp/scr/1647.htm

 

 


--  作者:douglas738888
--  发布时间:2017/9/28 9:39:00
--  

老师,这里的条件表达式的LIKE很难设置,因为标准数据根据每次实验得到的数据不一样,而测试数据也是变化的,很难设通配符附近的值

 

做了个例子,请老师指导指导 

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:技术数据比对.foxdb


--  作者:有点甜
--  发布时间:2017/9/28 9:55:00
--  

DataColChanged事件

 

Select Case e.DataCol.name
    Case "测试数据","标准数据"
        Dim s1 As String = e.DataRow("标准数据")
        Dim s2 As String = e.DataRow("测试数据")
        If s1 = "" OrElse s2 = "" Then
            e.DataRow("包含数据") = Nothing
        Else
            Dim str As String = ""
            Dim ary As String() = s2.split(",")
            For Each s As String In s1.Split(",")
                If array.IndexOf(ary, s) >= 0 Then
                    str &= s & ","
                End If
            Next
            e.DataRow("包含数据") = str.trim(",")
        End If
End Select