Foxtable(狐表)用户栏目专家坐堂 → [求助]表格结构转换


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

主题:[求助]表格结构转换

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


加好友 发短信
等级:婴狐 帖子:3 积分:86 威望:0 精华:0 注册:2013/6/19 15:18:00
[求助]表格结构转换  发帖心情 Post By:2013/6/19 16:29:00 [只看该作者]

数据表如下,

 
此主题相关图片如下:1.jpg
按此在新窗口浏览图片

不管用什么方式,怎样才能用上图的数据做出下图的表来?

 
此主题相关图片如下:2.jpg
按此在新窗口浏览图片

 

图2中的表应该是由图1中的数据自动生成的,不是固定格式的数据表。

 

报表也可以啊

 

 数据表附件

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目2.table

[此贴子已经被作者于2013-6-19 18:00:02编辑过]

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


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

图挂了


图片点击可在新窗口打开查看此主题相关图片如下:上传图片请参考这里.gif
图片点击可在新窗口打开查看


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


加好友 发短信
等级:婴狐 帖子:3 积分:86 威望:0 精华:0 注册:2013/6/19 15:18:00
  发帖心情 Post By:2013/6/19 16:45:00 [只看该作者]

谢谢,这就改

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


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

你这是什么表? 代码生成的统计表? 还是一般的数据表.  问题描述清楚一点. 才能快速解决问题.

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/6/19 16:50:00 [只看该作者]

最好设计好表,输入少量测试数据,然后发上来。

这样可以直接帮你写一下。

 


 回到顶部
帅哥,在线噢!
狐狸爸爸
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/6/19 17:20:00 [只看该作者]

大概这样,关键在于通过统计表的列标题获取日期,然后从原始数据表找出对应的行:

 

For Each dr1 As DataRow In DataTables("统计表").DataRows
    Dim nm As String = dr1("姓名")
    For Each dc As DataCol In DataTables("统计表").DataCols
        If dc.name <> "姓名" Then
            Dim dt As Date = CDate(dc.Caption)
            Dim dr2 As DataRow = DataTables("数据表").Find("姓名 = '" & nm & "' and 日期 = #" & dt & "#" )
            If dr2 IsNot Nothing Then
                dr1(dc.name) = dr2("考勤")
            End If
        End If
    Next
Next

[此贴子已经被作者于2013-6-19 17:20:21编辑过]

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


加好友 发短信
等级:超级版主 帖子:521 积分:4910 威望:0 精华:7 注册:2008/9/2 22:22:00
  发帖心情 Post By:2013/6/19 18:26:00 [只看该作者]

Dim v1 As New List(of String)
v1.AddRange(DataTables("表A").GetComboListString("日期","","日期").split("|"))
Dim sql,s1 As String
For n1 As Integer =1 To v1.count
    SQL+=" ,Max(考勤)  As A" &  n1
Next
SQL="Select 姓名" & SQL & "  From{表A}  Group by 姓名"

Dim dtb As New DataTableBuilder("统计")
dtb.Build()

With DataTables("统计")
    .StopRedraw
    .Fill(SQL,True)
    For Each c As Col In Tables("统计").Cols
        If c.Index > 0 Then
            .DataCols(c.name).Caption = Format(Cdate(v1(c.Index -1)),"yyyy-MM-dd")
            .BuildHeader()
        End If
    Next
    
    For Each r As Row In Tables("统计").Rows
        For Each c As Col In Tables("统计").Cols
            If c.Index > 0 Then
                r(c.name) = DataTables("表A").Find("姓名 = '" & r("姓名") & "' And 日期 =#" & c.Caption & "#")("考勤")
            End If
        Next
    Next
    MainTable= Tables("统计")
    .ResumeRedraw
End With


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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2013/6/19 19:03:00 [只看该作者]

Dim sql As String
Dim v1() As String=DataTables("表A").GetComboListString("日期","","日期").split("|")

For n1 As Integer =0 To v1.Length-1
    SQL+=" ,Max(iif(日期 = #" & v1(n1) & "#,考勤,'')) As A" & n1
Next
SQL="Select 姓名" & SQL & "  From{表A}  Group by 姓名"

Dim dtb As New DataTableBuilder("统计")
dtb.Build()

Dim t1 As Table = Tables("统计")
t1.StopRedraw
t1.DataTable.Fill(SQL,True)
For n1 As Integer =0 To v1.Length-1
    t1.grid.setData(0,n1+2, Format(Cdate(v1(n1)),"yyyy-MM-dd"))
Next
t1.ResumeRedraw

MainTable= t1
[此贴子已经被作者于2013-6-20 6:53:07编辑过]

 回到顶部