Foxtable(狐表)用户栏目专家坐堂 → [求助]分组统计问题


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

主题:[求助]分组统计问题

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


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
[求助]分组统计问题  发帖心情 Post By:2017/9/17 22:53:00 [只看该作者]

情况:两个表:一个:施工合同,一个:凭证明细(财务的,凭证是一条一条的,有的行,合同编号 有数据,有的没有-根据情况)

问题:生成的表(如下图),我用EXCEL导出报表;
1、项目名称、合同名称、合同金额,都是要显示在多行(查询是多行,汇总后能合并显示)。(实际合同金额,应该是一行,一个数据,如:100元;现在是这个100元,分别显示在多行中);有没有办法让它EXCEL导出报表时,显示成一行?
2、图片:日期列,为空时,它显示是:1900-01-01,有没有办法让它为空显示?
3、想要算出:结算比例=已结算未收款/结算金额(是多行,没有和“已结算未收款”行位置对应),怎么在后面加一列:结算比例,算出数,显示出来?


图片点击可在新窗口打开查看此主题相关图片如下:111.jpg
图片点击可在新窗口打开查看
EXLE报表如下:


图片点击可在新窗口打开查看此主题相关图片如下:22.png
图片点击可在新窗口打开查看


窗口afterload 如下代码:

Dim dtb As New SQLJoinTableBuilder("应收工程款明细表1","施工合同")
dtb.C
dtb.AddTable("施工合同","合同编号","凭证明细","合同编号")
dtb.AddCols("{施工合同}.项目名称","{施工合同}.合同名称","{施工合同}.发包单位","{施工合同}.合同金额","合同预算合计","{施工合同}.结算合计","{施工合同}.质保金结算")
'dtb.AddExp("结算日期","Case When 会计科目_一级科目 = '工程结算' and   贷方金额 is not null Then 日期 Else '' End")
dtb.AddExp("结算日期","Case When 会计科目_一级科目 = '应收账款' and   借方金额 is not null Then 日期 Else '' End")
dtb.AddExp("到账日期","Case When 会计科目_一级科目 = '应收账款' and   贷方金额 is not null Then 日期 Else '' End")
'dtb.AddExp("工程结算","Case When 会计科目_一级科目 = '工程结算' and   贷方金额 is not null   Then 贷方金额 else 0  End")
dtb.AddExp("结算金额","Case When 会计科目_一级科目 = '应收账款' and   借方金额 is not null Then 借方金额 Else 0 End")
dtb.AddExp("到账金额","Case When 会计科目_一级科目 = '应收账款' and   贷方金额 is not null Then 贷方金额 Else 0 End")
dtb.AddExp("合同成本","Case When 会计科目_二级科目 = '合同成本' and  借方金额 is not null Then 借方金额 Else 0 End")
dtb.AddExp("合同毛利","Case When 会计科目_二级科目 = '合同毛利' and   贷方金额 is not null Then 贷方金额 Else 0 End")
dtb.AddExp("已结算未收款","Case When 会计科目_一级科目 = '应收账款' and   借方金额 is not null Then 借方金额 When 会计科目_一级科目 = '应收账款' and   贷方金额 is not null Then -贷方金额 Else 0 end ")
dtb.Distinct = True
'dtb.Filter ="会计科目_一级科目 = '工程结算'  and 贷方金额 <> 0 "
'dtb.Filter ="会计科目_一级科目 = '工程结算' or 会计科目_一级科目 = '应收账款'  "
'Tables(e.form.Name & "_Table1").DataSource = dtb.BuildDataSource()
'dtb.Build()
'MainTable = Tables("应收工程款明细表1")

'生成统计表
Dim b As New GroupTableBuilder("统计表1",dtb.BuildSql,"服务器" )
b.Groups.AddDef("发包单位") '根据产品分组
b.Groups.AddDef("项目名称") '根据产品分组
b.Groups.AddDef("合同名称") '根据产品分组
b.Groups.AddDef("合同预算合计") '对数量进行统计
b.Groups.AddDef("合同金额") '对数量进行统计
b.Groups.AddDef("结算合计") '对数量进行统计
b.Groups.AddDef("质保金结算") '对数量进行统计
'b.Groups.AddDef("结算日期",DateGroupEnum.None) '对数量进行统计
'b.Groups.AddDef("工程结算") '对数量进行统计
b.Groups.AddDef("结算日期",DateGroupEnum.None) '对数量进行统计
b.Totals.AddDef("结算金额") '对数量进行统计
b.Groups.AddDef("到账日期",DateGroupEnum.None) '对数量进行统计
b.Totals.AddDef("到账金额") '对数量进行统计
b.Totals.AddDef("合同成本") '对数量进行统计
b.Totals.AddDef("合同毛利") '对数量进行统计
b.Totals.AddDef("已结算未收款") '对数量进行统计
'b.Filter ="工程名称 is not null"
b.Subtotal = True '生成汇总模式
b.SubtotalLevel = 0
b.Build '生成统计表
Tables(e.form.Name & "_Table1").DataSource =  b.BuildDataSource() '打开生成的统计表
Tables(e.form.Name & "_Table1").Cols("到账日期").Move(9)
Tables(e.form.Name & "_Table1").Filter =" 结算金额 <> 0 or 到账金额 <> 0 or 合同成本 <> 0 or 合同毛利 <> 0 "

''设置合并模式
With Tables(e.form.Name & "_Table1")
    .MergeMode = MergeModeEnum.Standard'标准合并模式
    .MergeCols.Clear() '清除原来的合并列
    .MergeCols.Add("发包单位")
    .MergeCols.Add("项目名称") '加入要合并的列
    .MergeCols.Add("合同名称") '加入要合并的列
    .MergeCols.Add("合同预算合计") '加入要合并的列
    .MergeCols.Add("合同金额") '加入要合并的列
    .MergeCols.Add("结算合计") '加入要合并的列
    .MergeCols.Add("质保金结算") '加入要合并的列
    '.MergeCols.Add("工程结算") '加入要合并的列
    .MergeCols.Add("结算金额") '加入要合并的列
    .MergeCols.Add("合同成本") '加入要合并的列
    .MergeCols.Add("合同毛利") '加入要合并的列
    .MergeSort = "发包单位,项目名称,结算日期,到账日期" '设置合并模式下的排序方式
    .AllowMerge = True '启用合并模式
End With

'设置汇总模式--发包单位
Dim t As Table = Tables(e.form.Name & "_Table1")
Dim g As Subtotalgroup
t.SubtotalGroups.Clear()
t.GroupAboveData = False
t.TreeVisible = False
t.SpillNode = True

g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "发包单位"
g.TotalOn = "合同预算合计,合同金额,结算合计,质保金结算,结算金额,到账金额,合同成本,合同毛利,已结算未收款"
g.Caption = "{0} 小计"
t.SubtotalGroups.Add(g)

t.Subtotal()

现在手上的EXCEL样板表,大概如下:


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


图片点击可在新窗口打开查看此主题相关图片如下:44.png
图片点击可在新窗口打开查看


[此贴子已经被作者于2017/9/17 22:58:40编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/18 0:02:00 [只看该作者]

 这种问题,就是上次一个例子测试吧。

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


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2017/9/18 8:35:00 [只看该作者]

这种是不是,应该在这个表,不做:结算的明细?  应该选做个汇总。然后,再考虑,另做一个表,做结算的明细?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/18 8:38:00 [只看该作者]

 做个小例子发上来,说明要做到的效果。

 回到顶部