Foxtable(狐表)用户栏目专家坐堂 → 关于临时表


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

主题:关于临时表

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


加好友 发短信
等级:七尾狐 帖子:1684 积分:16374 威望:0 精华:0 注册:2013/7/31 13:03:00
关于临时表  发帖心情 Post By:2016/1/27 11:58:00 [只看该作者]

下面是帮助“分组统计和交叉统计的实现原理”中的一段代码:
Dim dtb As New DataTableBuilder("统计")
dtb.AddDef(
"产品", Gettype(String), 16)
dtb.AddDef(
"数量", Gettype(Integer))
dtb.AddDef(
"金额", Gettype(Double))
dtb.Build()

For Each
nm As String In DataTables("订单").GetValues("产品")
   
Dim dr As DataRow = DataTables("统计").AddNew()
    dr(
"产品") = nm
    dr(
"数量") = DataTables("订单").Compute("Sum(数量)","[产品] = '" & dr("产品") & "'")
    dr("金额") = DataTables("订单").Compute("Sum(金额)","[产品] = '" & dr("产品") & "'")

Next
MainTable
= Tables("统计")

我想把[产品]改成[]和[月],就是临时表为:

Dim dtb As New DataTableBuilder("统计")
dtb.AddDef(
"年"Gettype(Intege))
dtb.AddDef("月"Gettype(Intege))
dtb.AddDef(
"数量"Gettype(Integer))
dtb.AddDef(
"金额"Gettype(Double))
dtb.Build()

再往下该如何写代码?关键是“订单”表没有“年”和“月”列,用year(日期)和month(日期)替代?

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/27 12:02:00 [只看该作者]

方法一:加上年月列 http://www.foxtable.com/help/topics/1285.htm

 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/27 12:07:00 [只看该作者]

方法二:用sqlGetValues

 

For Each nm As String() In DataTables("订单").SqlGetValues("year(日期)|month(日期)")

    output.show(nm(0) & nm(1)

Next

[此贴子已经被作者于2016/1/27 12:07:02编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1684 积分:16374 威望:0 精华:0 注册:2013/7/31 13:03:00
  发帖心情 Post By:2016/1/27 12:22:00 [只看该作者]

没有取到值:

 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20160127121550.jpg
图片点击可在新窗口打开查看

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


加好友 发短信
等级:七尾狐 帖子:1684 积分:16374 威望:0 精华:0 注册:2013/7/31 13:03:00
  发帖心情 Post By:2016/1/27 13:13:00 [只看该作者]

报错

 

 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20160127131006.jpg
图片点击可在新窗口打开查看

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


加好友 发短信
等级:七尾狐 帖子:1684 积分:16374 威望:0 精华:0 注册:2013/7/31 13:03:00
  发帖心情 Post By:2016/1/27 13:15:00 [只看该作者]

代码为:

Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("年", Gettype(String),16)
dtb.AddDef("月", Gettype(String),16)
dtb.AddDef("产品", Gettype(String), 16)
dtb.AddDef("数量", Gettype(Integer))
dtb.AddDef("金额", Gettype(Double))
dtb.Build()
For Each n As String In DataTables("订单").SqlGetValues("year(日期)")
    For Each y As String In DataTables("订单").SqlGetValues("month(日期)")
        Dim dr As DataRow = DataTables("统计").AddNew()
        dr("年") = n
        dr("月") = y
        dr("数量") = DataTables("订单").Compute("Sum(数量)","year(日期) = '" & n & "' and  month(日期) ='" & y & "'")
        dr("金额") = DataTables("订单").Compute("Sum(金额)","year(日期) = '" & n & "' and  month(日期) ='" & y & "'")
    Next
Next
MainTable= Tables("统计")


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/27 13:15:00 [只看该作者]

那就要用代码处理了

 

Se lect Distinct Year(日期) As 年, Month(日期) As 月, 产品 From {订单}

http://www.foxtable.com/help/topics/0695.htm

 


 回到顶部