Foxtable(狐表)用户栏目专家坐堂 → [求助]表A多列多值跨表转单行


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

主题:[求助]表A多列多值跨表转单行

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


加好友 发短信
等级:幼狐 帖子:113 积分:980 威望:0 精华:0 注册:2023/6/18 23:26:00
[求助]表A多列多值跨表转单行  发帖心情 Post By:2024/9/2 10:10:00 [只看该作者]

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



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

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

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111407 积分:567105 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/9/2 10:13:00 [只看该作者]


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


加好友 发短信
等级:幼狐 帖子:113 积分:980 威望:0 精华:0 注册:2023/6/18 23:26:00
回复:(有点蓝)http://www.foxtable.com/webhelp/to...  发帖心情 Post By:2024/9/2 10:42:00 [只看该作者]

蓝大师,上楼教程 垂直表和水平表的转换
单元格不是多值,1个单元格多值行拆分多行的教程有吗?

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111407 积分:567105 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/9/2 10:47:00 [只看该作者]

一样的,多一个循环而已,在遍历所有行的时候,再把多值split拆分后遍历即可

 回到顶部
帅哥,在线噢!
y2287958
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:4773 积分:34673 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By: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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:113 积分:980 威望:0 精华:0 注册:2023/6/18 23:26:00
回复:(y2287958)DataTables("表B").DataRows.Clear...  发帖心情 Post By:2024/9/2 14:51:00 [只看该作者]

感谢,前辈高手 蓝大师
交学费,收徒吗?

前辈、蓝大师,增加一个判断,如果表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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:4773 积分:34673 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By: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
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:113 积分:980 威望:0 精华:0 注册:2023/6/18 23:26:00
回复:(y2287958)For Each 行 As DataRow In DataTa...  发帖心情 Post By:2024/9/2 17:49:00 [只看该作者]

前辈、高手
发现一个问题,表A修改 多值中的一行值“吊顶”,改成“吊顶22”
表B  吊顶,这行没删,有点问题
求助 :   如果要表B里有这行,表A里没这行,单元格绘制 样式1    这样如果就能发现问题

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

 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111407 积分:567105 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/9/2 19:31:00 [只看该作者]

这种到表事件处理,参考:http://www.foxtable.com/webhelp/topics/1453.htm

 回到顶部