Foxtable(狐表)用户栏目专家坐堂 → [求助]统计报表中的Build方法与BuildDataSource方法区别?


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

主题:[求助]统计报表中的Build方法与BuildDataSource方法区别?

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


加好友 发短信
等级:三尾狐 帖子:677 积分:6222 威望:0 精华:0 注册:2012/1/20 17:53:00
[求助]统计报表中的Build方法与BuildDataSource方法区别?  发帖心情 Post By:2013/6/25 15:53:00 [只看该作者]

统计报表中的Build方法与BuildDataSource方法区别?

 

在看帮助文件“统计与查询”章节,看到,有的时候用.Build(),有的时候用.BuildDataSource(),两者到底有什么区别呢?狐爸爸!


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


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

build直接生成一个统计表,在主界面中显示,就像通过菜单统计一样。

buildDatasource生成的统计表,不会显示在主界面中,通常用于动态绑定到窗口中的Table控件:

 

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

 


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


加好友 发短信
等级:三尾狐 帖子:677 积分:6222 威望:0 精华:0 注册:2012/1/20 17:53:00
  发帖心情 Post By:2013/6/25 16:07:00 [只看该作者]

 狐爸爸:下面的代码红色那句不要就会出错,但是要了就会在主界面中看到统计表,为了不显示统计表1,我该怎么修改呢?

 

 

 

  '----------以下是结账运算代码
            Dim Date1,Date2 As Date
            Date1 =  Tables("月末结账").Current("结账期_起")
            Date2 =  Tables("月末结账").Current("结账期_讫")
            Dim bd1 As New GroupTableBuilder("统计表1",DataTables("采购入库单明细表"))
            Dim dt1 As fxDataSource
            bd1.Filter = "[日期] >= # " & Date1 & "# And [日期]<= # " & Date2 & "#"
            bd1.Groups.AddDef("品号") '根据品号分组
            bd1.Totals.AddDef("数量","采购_数量") '对数量进行统计
            bd1.Totals.AddDef("金额","采购_金额") '对金额进行统计
            dt1 = bd1.BuildDataSource()
           
            Dim bd2 As New GroupTableBuilder("统计表2",DataTables("生产入库单明细"))
            Dim dt2  As fxDataSource
            bd2.Filter = "[日期] >= #" & Date1 & "# And [日期]<= # " & Date2 & "#"
            bd2.Groups.AddDef("品号") '根据品号分组
            bd2.Totals.AddDef("数量","生产入库_数量") '对数量进行统计
            bd2.Totals.AddDef("金额","生产入库_金额") '对金额进行统计
            dt2 = bd2.BuildDataSource()
           
           
           
            dt1.Combine("品号",dt2,"品号") '将生产入库统计数据组合到采购入库统计数据
           
            dt1.show("统计表1")
           
            With DataTables("统计表1").DataCols  '用表达式列计算库存数据
                .Add("库存_数量",Gettype(Double), "IsNull([采购_数量],0) + ISNULL([生产入库_数量],0)")
                .Add("库存_金额",Gettype(Double), "IsNull([采购_金额],0) + ISNULL([生产入库_金额],0)")
            End With
           
           
            '将计算数据填充到仓库总账中

            Tables("仓库总账").Filter = "[期间] = '" & Date1.Month & "'"
            For Each r1 As DataRow In DataTables("统计表1").DataRows
                For Each r2 As Row In Tables("仓库总账").Rows
                    If r1("品号") = r2("品号") Then
                        r2("入库数量") = r1("库存_数量")
                        r2("入库金额") = r1("库存_金额")
                    End If
                   
                Next
            Next
           Tables("仓库总账").DataTable.save
           


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


加好友 发短信
等级:幼狐 帖子:116 积分:687 威望:0 精华:0 注册:2013/5/31 14:25:00
  发帖心情 Post By:2013/6/25 16:10:00 [只看该作者]

一般在进行组合多个统计结果时会用到buildDatasource,比如:

 

Dim b As New GroupTableBuilder("统计表1",DataTables("订单"))
b
.Groups.AddDef("日期","月份")
b
.Totals.AddDef("数量")
Tables
("窗口1_Table1").DataSource = b.BuildDataSource
()

 

与Build相比,buildDatasource可以生成不显示在主界面,但是能绑定table的表格。最重要的是它生成的统计表是fxDataSource类型,

可以使用Combine方法对多个统计表进行合并。所以在组合多个统计表时常常要用到它。


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


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

最简单的办法就是.设置这个表的  visible=false

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


加好友 发短信
等级:三尾狐 帖子:677 积分:6222 威望:0 精华:0 注册:2012/1/20 17:53:00
  发帖心情 Post By:2013/6/25 16:15:00 [只看该作者]

以下是引用Bin在2013-6-25 16:11:00的发言:
最简单的办法就是.设置这个表的  visible=false

这也是个办法.

GroupTableBuilder
CrossTableBuilder
SQLGroupTableBuilder
SQLCrossTableBuilder
SQLJoinTableBuilder
DataTableBuilder

 

另外以上类型生成的都是临时表,对吗?我重新打开项目后,统计表1就会不见了。

[此贴子已经被作者于2013-6-25 16:15:58编辑过]

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


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

是的.

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


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

看樓主的代碼,這樣就達到目的吧:

Dim t1 As Table = Tables("仓库总账")
Dim dt1,dt2 As DataTable
Dim flt,s1 As String
Dim Date1,Date2 As Date
Date1 = Tables("月末结账").Current("结账期_起")
Date2 = Tables("月末结账").Current("结账期_讫")
dt1 = DataTables("采购入库单明细表")
dt2 = DataTables("生产入库单明细")
s1 = "[日期] >= #" & Date1 & "# And [日期]<= #" & Date2 & "#"

t1.Filter = "[期间] = '" & Date1.Month & "'"
For Each r2 As Row In t1.Rows
    flt = s1 & " and 品号 = '" r2("品号") & "'"
    r2("入库数量") = dt1.Compute("Sum(数量)",flt) + dt2.Compute("Sum(数量)",flt)
    r2("入库金额") = dt1.Compute("Sum(金额)",flt) + dt2.Compute("Sum(金额)",flt)
Next

t1.DataTable.save

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


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

以下是引用don在2013-6-25 16:40:00的发言:
看樓主的代碼,這樣就達到目的吧:

Dim t1 As Table = Tables("仓库总账")
Dim dt1,dt2 As DataTable
Dim flt,s1 As String
Dim Date1,Date2 As Date
Date1 = Tables("月末结账").Current("结账期_起")
Date2 = Tables("月末结账").Current("结账期_讫")
dt1 = DataTables("采购入库单明细表")
dt2 = DataTables("生产入库单明细")
s1 = "[日期] >= #" & Date1 & "# And [日期]<= #" & Date2 & "#"

t1.Filter = "[期间] = '" & Date1.Month & "'"
For Each r2 As Row In t1.Rows
    flt = s1 & " and 品号 = '" r2("品号") & "'"
    r2("入库数量") = dt1.Compute("Sum(数量)",flt) + dt2.Compute("Sum(数量)",flt)
    r2("入库金额") = dt1.Compute("Sum(金额)",flt) + dt2.Compute("Sum(金额)",flt)
Next

t1.DataTable.save

 

呵呵,我看着别人的代码就晕,这方面的能力我能有你一半就好了。

 

图片点击可在新窗口打开查看


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


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

哈哈,互換吧,我給你一半,你給俺一半,包括Money图片点击可在新窗口打开查看

 回到顶部
总数 11 1 2 下一页