以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]引用不同表数据、替换、合并字符串  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=109753)

--  作者:zcgmxf
--  发布时间:2017/11/18 17:20:00
--  [求助]引用不同表数据、替换、合并字符串
老师,如何在编辑表A的“危害因素”时,将表B危害因素的对应体检项目,去掉重复值合并到表A的体检项目中?表A 的体检项目是从表B中多选的。谢谢!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.foxdb


        Dim str As String = e.DataRow("危害因素")
        Dim pas() As String = str.Split("、")        
        For Each pa As String In pas
            Dim s As String = ""
            Dim n As Integer = pas.Length            
            For i As Integer = 0 To n - 1
                Dim drs As List(of DataRow) = DataTables("表B").Select("危害因素 = \'" & pas(i) & "\'")
                For Each dr As DataRow In drs                    
                    s = dr("体检项目") & "、" & s
                Next
            Next
            e.DataRow("体检项目") = s
        Next

不知道如何清除重复值
[此贴子已经被作者于2017/11/19 16:09:20编辑过]

--  作者:有点甜
--  发布时间:2017/11/19 17:19:00
--  
\'\'\'
Select Case e.DataCol.Name
    Case "危害因素"
        Dim str As String = e.DataRow("危害因素")
        Dim pas() As String = str.Split("、")
        For Each pa As String In pas
            Dim ls As new List(of String)
            Dim n As Integer = pas.Length
            For i As Integer = 0 To n - 1
                Dim drs As List(of DataRow) = DataTables("表B").Select("危害因素 = \'" & pas(i) & "\'")
                For Each dr As DataRow In drs
                    If ls.Contains(dr("体检项目")) = False Then
                        ls.add(dr("体检项目"))
                    End If
                Next
            Next
            e.DataRow("体检项目") = String.Join("、", ls.ToArray)
        Next
End Select

--  作者:zcgmxf
--  发布时间:2017/11/20 7:52:00
--  
有点甜老师,最后的结果是要将 不同的dr("体检项目") 中的的相同的项目名称也就是相同的字符串 清除,只保留一个,合并到表A 的 e.DataRow("体检项目") 中,
上面的代码合并后没有清除重复项目也就是重复的字符串。麻烦了。谢谢!

--  作者:有点甜
--  发布时间:2017/11/20 8:55:00
--  
\'\'\'
Select Case e.DataCol.Name
    Case "危害因素"
        Dim str As String = e.DataRow("危害因素")
        Dim pas() As String = str.Split("、")
        Dim ls As new List(of String)
        For Each pa As String In pas
           
            Dim drs As List(of DataRow) = DataTables("表B").Select("危害因素 = \'" & pa & "\'")
            For Each dr As DataRow In drs
                For Each s As String In dr("体检项目").split("、")
                    If ls.Contains(s) = False Then
                        ls.add(s)
                    End If
                Next
            Next
           
        Next
        e.DataRow("体检项目") = String.Join("、", ls.ToArray)
End Select