Foxtable(狐表)用户栏目专家坐堂 → [求助]求一段行转列的代码,急需啊!


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

主题:[求助]求一段行转列的代码,急需啊!

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


加好友 发短信
等级:幼狐 帖子:169 积分:1678 威望:0 精华:0 注册:2014/3/27 16:44:00
[求助]求一段行转列的代码,急需啊!  发帖心情 Post By:2014/4/7 0:12:00 [只看该作者]

公司本来是要上软件的,我在找软件商的时候看到了狐表这个软件就试着弄起来一套平时记录工作的表格,已经用上了!
现在需要将工序转成一列,不同产品因为工序不一样,15道工序不一定填满,预留15道工序。
论坛里的行转列的例子我都看过了,刚好跟我要的结果反一下,代码正在研究中,可是工作上急需这个,求各位大大帮忙给段代码!非常感谢!!!


订单号   路线卡代号       工序1  工序2  工序3  工序4  工序5 工序6  工序7 工序8 工序9 工序10 工序11 工序12 工序13 工序14 工序15
007      007-XDF-01    A        B         C       D
007      007-XDF-02    O        P         Q       X       Y        Z

订单号   路线卡代号       工序
007     007-XDF-01     A
007     007-XDF-01     B
007     007-XDF-01     C
007     007-XDF-01     D
007     007-XDF-02
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:行转列.table

  

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/4/7 8:13:00 [只看该作者]

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


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


加好友 发短信
等级:幼狐 帖子:169 积分:1678 威望:0 精华:0 注册:2014/3/27 16:44:00
  发帖心情 Post By:2014/4/7 8:56:00 [只看该作者]

卧槽太牛逼了!!!图片点击可在新窗口打开查看万分感谢!

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


加好友 发短信
等级:幼狐 帖子:169 积分:1678 威望:0 精华:0 注册:2014/3/27 16:44:00
  发帖心情 Post By:2014/4/7 17:05:00 [只看该作者]

版主再请教一下,现在有两个总表,一个装置总表,一个金工总表,我想把两个表中的工序都导到一个路线卡明细表中。
我把你写的第一条clear()命令删了,这样两张表导的时候不会覆盖。然后想增加一个选中行的限制,只有选中的行才会执行命令。
试过.TopPosition To .BottomPosition,还有GetCheckedRows但是怎么都不成。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:行列转置2.0.table

谢谢谢谢谢谢谢谢!

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/4/7 17:28:00 [只看该作者]

代码

 

For i As Integer = Tables("金工总表").TopPosition To Tables("金工总表").BottomPosition
    Dim adr As Row  = Tables("金工总表").Rows(i)
    If adr.IsNull("路线卡代号") = False Then
        For Each adc As DataCol In DataTables("金工总表").DataCols
            If adc.Name.StartsWith("工序") AndAlso adr.IsNull(adc.Name) = False Then
                Dim bdr As DataRow = DataTables("路线卡明细").AddNew()
                bdr("序号") = adr("序号")
                bdr("订单号") = adr("订单号")
                bdr("路线卡代号") = adr("路线卡代号")
                bdr("工序") = adr(adc.Name)
            End If
        Next
    End If
Next
DataTables("路线卡明细").Save()
MainTable = Tables("路线卡明细")


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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/4/7 17:42:00 [只看该作者]

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


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


加好友 发短信
等级:幼狐 帖子:169 积分:1678 威望:0 精华:0 注册:2014/3/27 16:44:00
  发帖心情 Post By:2014/4/7 19:05:00 [只看该作者]

谢谢谢谢谢谢图片点击可在新窗口打开查看

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


加好友 发短信
等级:幼狐 帖子:169 积分:1678 威望:0 精华:0 注册:2014/3/27 16:44:00
  发帖心情 Post By:2014/4/11 10:10:00 [只看该作者]

你好,谢谢你的代码。
如果我想加一段代码,防止重复转置,该怎么写啊??
if bdr(路线卡代号)存在与adr(路线卡代号)相同项,则取消更改。

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/4/11 10:15:00 [只看该作者]

看了一下,不影响吧.也没重叠,也没有累加.  生成了还是原样,保持现在这样最好了.太多判断降低效率. 只判断一行有可能其他行有变,要判断就要全部判断.

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/4/11 10:20:00 [只看该作者]

 是不是这个意思?

 

For i As Integer = Tables("金工总表").TopPosition To Tables("金工总表").BottomPosition
    Dim adr As Row  = Tables("金工总表").Rows(i)
    If adr.IsNull("路线卡代号") = False Then
        Dim fdr As DataRow = DataTables("路线卡明细").Find("路线卡代号 = '" & adr("路线卡代号") & "'")
        If fdr Is Nothing Then
            For Each adc As DataCol In DataTables("金工总表").DataCols
                If adc.Name.StartsWith("工序") AndAlso adr.IsNull(adc.Name) = False Then
                    Dim bdr As DataRow = DataTables("路线卡明细").AddNew()
                    bdr("序号") = adr("序号")
                    bdr("订单号") = adr("订单号")
                    bdr("路线卡代号") = adr("路线卡代号")
                    bdr("工序") = adr(adc.Name)
                End If
            End If
        Next
    End If
Next
DataTables("路线卡明细").Save()
MainTable = Tables("路线卡明细")


 回到顶部
总数 15 1 2 下一页