以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]表A多列多值跨表转单行  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=193291)

--  作者:185723664
--  发布时间:2024/9/2 10:10:00
--  [求助]表A多列多值跨表转单行
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:12.foxdb



图片点击可在新窗口打开查看此主题相关图片如下:捕获.jpg
图片点击可在新窗口打开查看

求助表A多列值变化时,自动拆分到表B

--  作者:有点蓝
--  发布时间:2024/9/2 10:13:00
--  
http://www.foxtable.com/webhelp/topics/2965.htm
--  作者:185723664
--  发布时间:2024/9/2 10:42:00
--  回复:(有点蓝)http://www.foxtable.com/webhelp/to...
蓝大师,上楼教程 垂直表和水平表的转换
单元格不是多值,1个单元格多值行拆分多行的教程有吗?

--  作者:有点蓝
--  发布时间:2024/9/2 10:47:00
--  
一样的,多一个循环而已,在遍历所有行的时候,再把多值split拆分后遍历即可
--  作者:y2287958
--  发布时间:2024/9/2 12:27:00
--  
DataTables("表B").DataRows.Clear
For Each 行 As DataRow In DataTables("表A").DataRows
    For Each 科目 As String In "事宜|环境|成本".Split("|")
        For Each 事宜 As String In 行.Lines(科目)
            Dim 新增行 As DataRow = DataTables("表B").AddNew
            新增行("编号") = 行("编号")
            新增行("国家") = 行("国家")
            新增行("科目") = 科目
            新增行("表A多列多值跨表转单行") = 事宜
        Next 
    Next 
Next 

--  作者:185723664
--  发布时间:2024/9/2 14:51:00
--  回复:(y2287958)DataTables("表B").DataRows.Clear...
感谢,前辈高手 蓝大师
交学费,收徒吗?

前辈、蓝大师,增加一个判断,如果表b已经存在就不新增行,还有如果表a删除这行,表b也删除这行,代码怎么写?这个对我来说太难了
DataTables("表B").DataRows.Clear
For Each 行 As DataRow In DataTables("表A").DataRows
    For Each 科目 As String In "事宜|环境|成本".Split("|")
        For Each 事宜 As String In 行.Lines(科目)
            
            Dim dr As DataRow = DataTables("表B").Find("编号 = " & "\'" & e.DataRow("编号") & "\' and  国家 = " & "\'" & e.DataRow("国家") & "\' and  成本 = " & "\'" & e.DataRow("成本") & "\'")
            If dr IsNot Nothing\' Then Then如果找到,则设置各列内容
                Dim 新增行 As DataRow = DataTables("表B").AddNew
                新增行("编号") = 行("编号")
                新增行("国家") = 行("国家")
                新增行("科目") = 科目
                新增行("表A多列多值跨表转单行") = 事宜              
            End If
        Next
        
    Next 
Next
[此贴子已经被作者于2024/9/2 15:13:01编辑过]

--  作者:y2287958
--  发布时间:2024/9/2 16:36:00
--  
For Each 行 As DataRow In DataTables("表A").DataRows
    For Each 科目 As String In "事宜|环境|成本".Split("|")
        For Each 表A多列多值跨表转单行 As String In 行.Lines(科目)
            Dim 编号 As String = 行("编号")
            Dim 国家 As String = 行("国家")
            Dim 查找行 As DataRow = DataTables("表B").Find("编号 = \'" & 编号 & "\' and  国家 = \'" & 国家 & "\' and  科目 = \'" & 
            科目 & "\' and 表A多列多值跨表转单行 = \'" & 表A多列多值跨表转单行 & "\'")
            If 查找行 Is Nothing Then
                Dim 新增行 As DataRow = DataTables("表B").AddNew
                新增行("编号") = 行("编号")
                新增行("国家") = 行("国家")
                新增行("科目") = 科目
                新增行("表A多列多值跨表转单行") = 表A多列多值跨表转单行 
            End If
        Next
        
    Next 
Next

--  作者:185723664
--  发布时间:2024/9/2 17:49:00
--  回复:(y2287958)For Each 行 As DataRow In DataTa...
前辈、高手
发现一个问题,表A修改 多值中的一行值“吊顶”,改成“吊顶22”
表B  吊顶,这行没删,有点问题
求助 :   如果要表B里有这行,表A里没这行,单元格绘制 样式1    这样如果就能发现问题

图片点击可在新窗口打开查看此主题相关图片如下:113.jpg
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2024/9/2 19:31:00
--  
这种到表事件处理,参考:http://www.foxtable.com/webhelp/topics/1453.htm