Foxtable(狐表)用户栏目专家坐堂 → 求助【横竖转换】


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

主题:求助【横竖转换】

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


加好友 发短信
等级:幼狐 帖子:185 积分:1526 威望:0 精华:0 注册:2017/7/23 17:17:00
求助【横竖转换】  发帖心情 Post By:2017/7/28 11:26:00 [只看该作者]

请教:
   我现在有源表为值班明细表,我想横竖转换一下
 图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看  图片点击可在新窗口打开查看图片点击可在新窗口打开查看  Dim dtb As New DataTableBuilder("表d")
dtb.AddDef("日期", Gettype(String), 32)
For Each v As String In DataTables("人员值班表").GetValues("部门")
    dtb.AddDef(v, Gettype(String),32)
Next
dtb.Build()

For Each v As String In DataTables("人员值班表").GetValues("日期")
   

    Dim dr1 As DataRow = DataTables("表d").AddNew()
    dr1("日期") = v
 For Each dr2 As DataRow In DataTables("人员值班表").Select("日期 = '" & v & "'")
     
  dr1(dr2("部门")) = dr2("值班人员")
    Next
Next
MainTable = Tables("表d")
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:人员值班表.xlsx



图片点击可在新窗口打开查看此主题相关图片如下:实际结果.png
图片点击可在新窗口打开查看
这个实际达不到的我效果,当某天某部门有多人值班的时候
图片点击可在新窗口打开查看此主题相关图片如下:源表.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2017/7/28 11:33:05编辑过]

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


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

dr1(dr2("部门")) = dr2("值班人员")

 

改成

 

dr1(dr2("部门")) = (dr1(dr2("部门")) & "," & dr2("值班人员")).Trim(",")


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


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

 如果还有问题,具体foxtable例子发上来。


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


加好友 发短信
等级:幼狐 帖子:185 积分:1526 威望:0 精华:0 注册:2017/7/23 17:17:00
  发帖心情 Post By:2017/7/28 11:39:00 [只看该作者]

申请进一步协助:
      谢谢你的方案,但感觉仍有问题,假如人员多的话,这一列里就会很长。
      还有我实际应用的时候,我是有两列的:姓名和手机号码,如果按你这个方法,就更不好操作了,有没有更好的办法,比如说一人一行。
      谢谢

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


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

Dim dtb As New DataTableBuilder("表d")
dtb.AddDef("日期", Gettype(String), 32)
For Each v As String In DataTables("人员值班表").GetValues("部门")
    dtb.AddDef(v, Gettype(String),32)
Next
dtb.Build()

For Each v As String In DataTables("人员值班表").GetValues("日期")
    For Each dr2 As DataRow In DataTables("人员值班表").Select("日期 = '" & v & "'")
        Dim dr1 As DataRow = DataTables("表d").Find("日期 = " & v & " and " & dr2("部门") & " is null")
        If dr1 Is Nothing Then
            dr1 = DataTables("表D").AddNew()
            dr1("日期") = v
        End If
        dr1(dr2("部门")) = dr2("值班人员")
    Next
Next
MainTable = Tables("表d")


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


加好友 发短信
等级:幼狐 帖子:185 积分:1526 威望:0 精华:0 注册:2017/7/23 17:17:00
再请教  发帖心情 Post By:2017/7/28 13:10:00 [只看该作者]

你好,你刚刚的语句执行出来了,但是还需要涉及到合并的问题,所以
  
 我现在想在之前那个语句,也就是在同一个单元格里加换行符,执行结果也是为空的,什么原因?
Dim dtb As New DataTableBuilder("表e")
dtb.AddDef("日期", Gettype(String), 150)
For Each v As String In DataTables("人员值班表").GetValues("部门")
    dtb.AddDef(v, Gettype(String),150)
Next
dtb.Build()

For Each v As String In DataTables("人员值班表").GetValues("日期")
    Dim dr1 As DataRow = DataTables("表e").AddNew()
    dr1("日期") = v
 For Each dr2 As DataRow In DataTables("人员值班表").Select("日期 = '" & v & "'")
  dr1(dr2("部门")) = (dr1(dr2("部门")) & vbcrlf  & dr2("值班人员") & dr2("手机"))

    Next
Next
MainTable = Tables("表e")

[此贴子已经被作者于2017/7/28 13:18:40编辑过]

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


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

 

        dr1(dr2("部门")) = (dr1(dr2("部门")) & vbcrlf  & dr2("值班人员") & dr2("手机")).trim(chr(13), chr(10))

 


 回到顶部