以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]表格结构转换 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=34933) |
||||
-- 作者:yujianbin0535 -- 发布时间:2013/6/19 16:29:00 -- [求助]表格结构转换 数据表如下, 不管用什么方式,怎样才能用上图的数据做出下图的表来?
图2中的表应该是由图1中的数据自动生成的,不是固定格式的数据表。
报表也可以啊
数据表附件
[此贴子已经被作者于2013-6-19 18:00:02编辑过]
|
||||
-- 作者:Bin -- 发布时间:2013/6/19 16:31:00 -- 图挂了 |
||||
-- 作者:yujianbin0535 -- 发布时间:2013/6/19 16:45:00 -- 谢谢,这就改 |
||||
-- 作者:Bin -- 发布时间:2013/6/19 16:49:00 -- 你这是什么表? 代码生成的统计表? 还是一般的数据表. 问题描述清楚一点. 才能快速解决问题. |
||||
-- 作者:狐狸爸爸 -- 发布时间:2013/6/19 16:50:00 -- 最好设计好表,输入少量测试数据,然后发上来。 这样可以直接帮你写一下。
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2013/6/19 17:20:00 -- 大概这样,关键在于通过统计表的列标题获取日期,然后从原始数据表找出对应的行:
For Each dr1 As DataRow In DataTables("统计表").DataRows [此贴子已经被作者于2013-6-19 17:20:21编辑过]
|
||||
-- 作者:ybil -- 发布时间: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 -- 发布时间: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编辑过]
|