Foxtable(狐表)用户栏目专家坐堂 → [求助]引用不同表数据、替换、合并字符串


  共有2103人关注过本帖树形打印复制链接

主题:[求助]引用不同表数据、替换、合并字符串

帅哥哟,离线,有人找我吗?
zcgmxf
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1665 积分:14854 威望:0 精华:0 注册:2014/6/6 8:42:00
[求助]引用不同表数据、替换、合并字符串  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1665 积分:14854 威望:0 精华:0 注册:2014/6/6 8:42:00
  发帖心情 Post By:2017/11/20 7:52:00 [只看该作者]

有点甜老师,最后的结果是要将 不同的dr("体检项目") 中的的相同的项目名称也就是相同的字符串 清除,只保留一个,合并到表A 的 e.DataRow("体检项目") 中,
上面的代码合并后没有清除重复项目也就是重复的字符串。麻烦了。谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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

 回到顶部