以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]横向展开表数据问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=120963)

--  作者:ymjr2011
--  发布时间:2018/6/27 10:13:00
--  [求助]横向展开表数据问题
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:test2.rar



现在图片好像无法编辑,附码内详
[此贴子已经被作者于2018/6/27 10:18:26编辑过]

--  作者:有点甜
--  发布时间:2018/6/27 10:15:00
--  

参考

 

http://www.foxtable.com/webhelp/scr/2965.htm

 


--  作者:ymjr2011
--  发布时间:2018/6/27 10:20:00
--  
麻烦版主帮看下,内有计算部份,不是单纯的转换
--  作者:有点甜
--  发布时间:2018/6/27 10:28:00
--  

Dim y As Integer = Date.Today.Year
Dim dt1 As Date = DataTables("order").Compute("min(日期)")
Dim dt2 As Date = DataTables("order").Compute("max(日期)")

Dim ndt As new DataTableBuilder("订单表")
ndt.AddDef("客户", Gettype(String),150)
ndt.AddDef("产品", Gettype(String))
Dim dt_temp = dt1
Do While dt_temp <= dt2
    ndt.AddDef(dt_temp, Gettype(Double), "", dt_temp) \'& "_" & WeekDayName(dt_temp.DayOfWeek+1))  \'Output.Show(WeekDayName(d.DayOfWeek))
    dt_temp = dt_temp.AddDays(1)
Loop

Dim t As Table = e.Form.Controls("Table1").Table
t.DataSource = ndt.BuildDataSource

Dim dt As DataTable = DataTables("order")

For Each kh  As String In dt.GetValues("客户号", "日期 >= #" & dt1 & "# and 日期 <= #" & dt2 & "#")
    Dim nr As Row = t.AddNew
    nr("客户") = kh
    For Each dr As DataRow In dt.Select("客户号 = \'" & kh & "\' and 日期 >= #" & dt1 & "# and 日期 <= #" & dt2 & "#")
        nr(dr("日期")) += dr("数量")
    Next
Next


t.AllowEdit = True


--  作者:ymjr2011
--  发布时间:2018/6/27 10:37:00
--  
谢谢甜版,但我试着把产品写进去后,发现不对,没有区分
--  作者:ymjr2011
--  发布时间:2018/6/27 10:37:00
--  
For Each kh  As String In dt.GetValues("客户号", "日期 >= #" & dt1 & "# and 日期 <= #" & dt2 & "#")
    Dim nr As Row = t.AddNew
    nr("客户") = kh
    For Each dr As DataRow In dt.Select("客户号 = \'" & kh & "\' and 日期 >= #" & dt1 & "# and 日期 <= #" & dt2 & "#")
        nr(dr("日期")) += dr("数量")
        nr("产品") = dr("产品")
    Next
Next

--  作者:有点甜
--  发布时间:2018/6/27 10:37:00
--  

Dim y As Integer = Date.Today.Year
Dim dt1 As Date = DataTables("order").Compute("min(日期)")
Dim dt2 As Date = DataTables("order").Compute("max(日期)")

Dim ndt As new DataTableBuilder("订单表")
ndt.AddDef("客户", Gettype(String),150)
ndt.AddDef("产品", Gettype(String))
Dim dt_temp = dt1
Do While dt_temp <= dt2
    ndt.AddDef(dt_temp, Gettype(Double), "", dt_temp) \'& "_" & WeekDayName(dt_temp.DayOfWeek+1))  \'Output.Show(WeekDayName(d.DayOfWeek))
    dt_temp = dt_temp.AddDays(1)
Loop

Dim t As Table = e.Form.Controls("Table1").Table
t.DataSource = ndt.BuildDataSource

Dim dt As DataTable = DataTables("order")

For Each kh  As String() In dt.GetValues("客户号|产品", "日期 >= #" & dt1 & "# and 日期 <= #" & dt2 & "#")
    Dim nr As Row = t.AddNew
    nr("客户") = kh(0)
    nr("产品") = kh(1)
    For Each dr As DataRow In dt.Select("客户号 = \'" & kh(0) & "\' and 产品 = \'" & kh(1) & "\' and 日期 >= #" & dt1 & "# and 日期 <= #" & dt2 & "#")
        nr(dr("日期")) += dr("数量")
    Next
Next

t.AllowEdit = True


--  作者:ymjr2011
--  发布时间:2018/6/27 10:38:00
--  
客户182 ,6-5号应该是 有泵体1  400,泵体2  200
--  作者:有点甜
--  发布时间:2018/6/27 10:40:00
--  
看7楼代码。