Foxtable(狐表)用户栏目专家坐堂 → DataTableBuilder


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

主题:DataTableBuilder

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107472 积分:546639 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/6 16:05:00 [显示全部帖子]

Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("2019_3月", GetType(String), 32)
dtb.AddDef("
2019_4月", GetType(String), 32)
……
dtb.Build()
MainTable
Tables("统计")

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107472 积分:546639 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/6 16:25:00 [显示全部帖子]

内部表还是外部表?access还是SqlServer?

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107472 积分:546639 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/6 17:15:00 [显示全部帖子]

Dim dtb As New DataTableBuilder("统计")
For Each s As String In DataTables("表A").SQLGetValues("Year(日期) + '_' + Month(日期)")
    dtb.AddDef(s & "月", Gettype(String), 32)
Next
dtb.Build()
MainTable= Tables("统计")


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107472 积分:546639 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/6 20:34:00 [显示全部帖子]

Dim dtb As New DataTableBuilder("统计")
For Each s As String In DataTables("表A").SQLGetValues("convert(nvarchar(7),日期,120)")
    dtb.AddDef(s.replace("-","_") & "月", Gettype(String), 32)
Next
dtb.Build()
MainTable= Tables("统计")


 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107472 积分:546639 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/9 20:15:00 [显示全部帖子]

  gcmd.CommandText="select * from 产品_应收账清单 where 1=2"
Dim dtb2 As DataTable= gcmd.ExecuteReader
Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("公司", Gettype(String), 32)
dtb.AddDef("单位名称", Gettype(String), 32)
Dim prds As List(of String) = dtb2.SQLGetValues("convert(nvarchar(7),开piao日期,120)")
For Each s As String In prds 
    dtb.AddDef(s.replace("-","_") & "月_开piao金额", Gettype(String), 32)
    dtb.AddDef(s.replace("-","_") & "月_回款金额", Gettype(String), 32)
Next
dtb.AddDef("应收账款", Gettype(Double), 32)
dtb.Build()

For Each  nm() As String In dtb2.SQLGetValues("开piao公司|单位名称")
    Dim dr As DataRow = DataTables("统计").AddNew()
    dr("公司") =  nm(0)
    dr("单位名称")= nm(1)
    For Index As Integer = 0 To prds.Count -1
        dr(prds(Index).replace("-","_") & "月_开piao金额") = dtb2.SQLCompute("sum(开piao金额)","编号 Like '%CKB%' and 单位名称='" & nm(1) & "'  and 开piao公司='" & nm(0) & "' and 开piao日期 >='" & prds(Index) & "-01' And 开piao日期 <='" & prds(Index) & "-" & Date.DaysInMonth(prds(Index).SubString(0,4),prds(Index).SubString(6,1)) &"'")
        dr(prds(Index).replace("-","_") & "月_回款金额") = dtb2.SQLCompute("sum(开piao金额)","编号 Like '%CKH%' and 单位名称='" & nm(1) & "'  and 开piao公司='" & nm(0) & "' and 开piao日期 >='" & prds(Index) & "-01' And 开piao日期 <='" & prds(Index) & "-" & Date.DaysInMonth(prds(Index).SubString(0,4),prds(Index).SubString(6,1)) &"'")
    Next
dr("应收账款")=dtb2.SQLCompute("sum(开piao金额)","编号 Like '%CKB%' and 单位名称='" & nm(1) & "'  and 开piao公司='" & nm(0) & "' ")-dtb2.SQLCompute("sum(开piao金额)","编号 Like '%CKH%' and 单位名称='" & nm(1) & "'  and 开piao公司='" & nm(0) & "' ")
Next
MainTable= Tables("统计")


 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107472 积分:546639 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/9 20:15:00 [显示全部帖子]

应该是可以使用交叉统计+合并查询结果的方式直接统计的:http://www.foxtable.com/webhelp/topics/2320.htm,方便的话上传实例看看

 回到顶部