以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于两个表数据的整理转换  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=102499)

--  作者:bootes29
--  发布时间:2017/6/21 10:45:00
--  关于两个表数据的整理转换
各位老师,我又来给大家添麻烦了,如下图所示,我想把表a的内容,按照要求转换到表b

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


--  作者:bootes29
--  发布时间:2017/6/21 10:45:00
--  
这个狐表
--  作者:bootes29
--  发布时间:2017/6/21 10:46:00
--  
table呢?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:实验录入产品1.table


--  作者:有点色
--  发布时间:2017/6/21 10:51:00
--  

是不是固定3行数据填入?是否按照顺序填写,顺序是否固定?

 

 

[此贴子已经被作者于2017/6/21 10:50:51编辑过]

--  作者:bootes29
--  发布时间:2017/6/21 10:54:00
--  
线路名称有的会有四行,他的行数由编号决定,编号有几行,他就几行。
成人价格都是第一行  儿童 第二行 房差第三行 基本一致

--  作者:bootes29
--  发布时间:2017/6/21 10:57:00
--  
发团 都是第一行 是发团情况 第二行 是年龄大组
--  作者:有点色
--  发布时间:2017/6/21 10:58:00
--  

 参考代码

 

Dim dt1 As DataTable = DataTables("表A")
Dim dt2 As DataTable = DataTables("表B")
For Each ary() As String In dt1.GetValues("板块|编号", "")
    Dim drs As List(Of DataRow) = dt1.Select("板块 = \'" & ary(0) & "\' And 编号 = \'" & ary(1) & "\'")
    Dim ndr As DataRow = dt2.AddNew
    ndr("板块") = ary(0)
    ndr("线路名称") = drs(0)("线路名称") & "," & drs(1)("线路名称") & "," & drs(2)("线路名称")
    ndr("编号") = ary(1)
    ndr("成人价") = drs(0)("价格")
    ndr("儿童价") = drs(1)("价格")
    ndr("房差") = drs(2)("价格")
Next


--  作者:bootes29
--  发布时间:2017/6/21 11:08:00
--  
@有点色  太牛了 老师  真是只要是手工 能操作的 狐表都可以去用软件实现


--  作者:bootes29
--  发布时间:2017/6/21 11:17:00
--  
用了实验的表,没有问题,用了真实的表,报错
图片点击可在新窗口打开查看此主题相关图片如下:报错.jpg
图片点击可在新窗口打开查看

--  作者:有点色
--  发布时间:2017/6/21 11:22:00
--  

Dim dt1 As DataTable = DataTables("表A")
Dim dt2 As DataTable = DataTables("表B")
For Each ary() As String In dt1.GetValues("板块|编号", "")
    Dim drs As List(Of DataRow) = dt1.Select("板块 = \'" & ary(0) & "\' And 编号 = \'" & ary(1) & "\'")
    Dim ndr As DataRow = dt2.AddNew
    ndr("板块") = ary(0)
    ndr("编号") = ary(1)
    Dim str1 As String = ""
    If drs.count > 0 Then
        ndr("成人价") = drs(0)("价格")
        str1 &= drs(0)("线路名称")
    End If
    If drs.count > 1 Then
        ndr("儿童价") = drs(1)("价格")
        str1 &= "," & drs(1)("线路名称")
    End If
    If drs.count > 2 Then
        ndr("房差") = drs(2)("价格")
        str1 &= "," & drs(2)("线路名称")
    End If
    ndr("线路名称") = str1
Next