以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  将表B的数据生成表A的格式  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=65881)

--  作者:布莱克朱
--  发布时间:2015/3/24 22:11:00
--  将表B的数据生成表A的格式
将表B的数据生成表A的格式

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




--  作者:y2287958
--  发布时间:2015/3/24 22:20:00
--  
这样不行吗?
Dim dr1 As DataRow
For Each dr As DataRow In DataTables("表B").DataRows
    dr1 = DataTables("表A").AddNew
    dr1("名称") = dr("名称")
    dr1("工序") = "抛光"
    dr1("车间") = dr("抛光_车间")
    dr1("班组") = dr("抛光_班组")
    dr1 = DataTables("表A").AddNew
    dr1("名称") = dr("名称")
    dr1("工序") = "打磨"
    dr1("车间") = dr("打磨_车间")
    dr1("班组") = dr("打磨_班组")
Next

--  作者:布莱克朱
--  发布时间:2015/3/24 22:27:00
--  
不行 我现在写的是死的 但是实际表B是动态的
--  作者:有点酸
--  发布时间:2015/3/24 22:37:00
--  
老朱,既然是编码,就没有死活之说的:


Dim dtb As New DataTableBuilder("结果")
dtb.AddDef("名称", Gettype(String), 32)
For Each gx As String In DataTables("表A").GetValues("工序")
    dtb.AddDef(gx & "_车间", Gettype(String), 32)
    dtb.AddDef(gx & "_班组", Gettype(String), 32)
Next
dtb.Build()
For Each r1 As DataRow In DataTables("表A").dataRows
    Dim r2 As DataRow
    r2 = DataTables("结果").Find("名称 = \'" & r1("名称") & "\'")
    If r2 Is Nothing Then
        r2 = DataTables("结果").AddNew()
    End If
    r2("名称") = r1("名称")
    r2(r1("工序") & "_车间") = r1("车间")
    r2(r1("工序") & "_班组") = r1("班组")
Next

[此贴子已经被作者于2015/3/24 22:37:43编辑过]

--  作者:blackzhu
--  发布时间:2015/3/25 7:46:00
--  
老大 你搞错了吧 反了,我要把表B的数据更新到表A的格式,不是要把表A的格式写成表B的格式



--  作者:狐狸爸爸
--  发布时间:2015/3/25 8:14:00
--  

惭愧,我读书时容易看错题,总是考不出高分,老了还是这样。

反过来还是一样:

 

DataTables("表A").DataRows.Clear()
For Each dr1 As DataRow In DataTables("表B").DataRows
    For Each dc As DataCol In DataTables("表B").DataCols
        Dim pts() As String = dc.Name.Split("_")
        If pts.Length = 2 Then
            If pts(1) = "车间" Then
                   Dim dr2 As DataRow = DataTables("表A").AddNew()
                    dr2("名称") = dr1("名称")
                    dr2("工序") = pts(0)
                    dr2("车间") = pts(1)
                    dr2("班组") = dr1(pts(0) & "_" & "班组")
            End If
        End If
    Next
Next


--  作者:blackzhu
--  发布时间:2015/3/25 8:21:00
--  
因为读书不好  所以我写不出比较高深的代码 我试试
--  作者:blackzhu
--  发布时间:2015/3/25 8:25:00
--  
可以了,谢谢! 我写的代码 一直 产生了两行数据.这次学会了处理方式了
[此贴子已经被作者于2015/3/25 8:25:01编辑过]

--  作者:blackzhu
--  发布时间:2015/3/25 8:40:00
--  
还是论坛好 立马解决问题  写了个函数搞定!