以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 报表代码咨询 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=26992) |
||||||||
-- 作者:hch -- 发布时间:2012/12/19 14:05:00 -- 报表代码咨询 现有一个测试Table文件,文件有一数据表,表内有不同年份、不同月份、不同科别中录入不同项目统计数据。按帮助文件可以产生同期对比数据,但此中报表的格式不是我想要的报表样式,我想通过此表生成一个如附件:对比表中样式的统计报表,此种统计报表样式编写代码怎么写,请给予具体指导。
|
||||||||
-- 作者:e-png -- 发布时间:2012/12/19 15:46:00 -- Dim dtb As New DataTableBuilder("工作量完成情况与上年同期对比")
|
||||||||
-- 作者:lin_hailun -- 发布时间:2012/12/19 15:56:00 -- 发觉excel报表的公式识别有些问题,这个Bug还是没有改掉。 当有多个公式的时候,再进行直接统计,会出现错乱。所以只能使用标记的方式一个一个写入excel报表了。 太麻烦,我就不写了。希望狐爸能修改这个Bug。 |
||||||||
-- 作者:e-png -- 发布时间:2012/12/19 17:12:00 -- 2楼代码加上合并: With Tables("工作量完成情况与上年同期对比")
还是用临时表处理数据后,再生成Excel来得方便、准确。 |
||||||||
-- 作者:hch -- 发布时间:2012/12/20 11:44:00 -- 按 e-png提示编写代码,发现部分数据统计不出来,是否我写的代码不完全对,增减率(增减率=(本期-上期)/上期*100%)的代码、表达式怎么写?我不会写烦请写一下,还有一个问题,按你的代码统计的表没有显示出我想要的统计表样式(如附件中的样式),另外我想要的是表中已输入多个连续年份不同月份的数据,怎样才可以统计出不同两个连续年份,不同月份时间段的对比统计数据,Table文件上传和代码如下: Dim dtb As New DataTableBuilder("工作量完成情况与上年同期对比") 请您费心指点
|
||||||||
-- 作者:lin_hailun -- 发布时间:2012/12/20 14:02:00 -- 代码这样写吧,测试过了。不过对于各年各月的对比表,自己想想办法吧,变的只是日期。 Dim dtb As New DataTableBuilder("工作量完成情况与上年同期对比") dtb.AddDef("科室", Gettype(String), 32) dtb.AddDef("项目", Gettype(String), 32) dtb.AddDef("本年度人次", Gettype(Integer)) dtb.AddDef("上年度人次", Gettype(Integer)) dtb.AddDef("人次_增减数", Gettype(Integer), "本年度人次 -上年度人次", "增减数") dtb.AddDef("人次_增减率", Gettype(Double), "本年度人次 / 上年度人次", "增减率") dtb.AddDef("本年度金额", Gettype(Double)) dtb.AddDef("上年度金额", Gettype(Double)) dtb.AddDef("金额_增减数", Gettype(Double),"本年度金额 -上年度金额", "增减数") dtb.AddDef("金额_增减率", Gettype(Double), "本年度金额 /上年度金额", "增减率") dtb.Build() MainTable = Tables("工作量完成情况与上年同期对比") Tables("工作量完成情况与上年同期对比").AutoSizeCols() For Each arys As String() In DataTables("工作量").GetUniqueValues("科别 is not null", "科别", "项目") Dim ff As String = "科别 = \'" & arys(0) & "\' And 项目 = \'" & arys(1) & "\'" Dim ndr As DataRow = DataTables("工作量完成情况与上年同期对比").AddNew ndr("科室") = arys(0) ndr("项目") = arys(1) ndr("上年度人次") = DataTables("工作量").Compute("Sum(人次)", ff & " And 时间 >= #1/1/2011# And 时间 < #1/1/2012# ") ndr("本年度人次") = DataTables("工作量").Compute("Sum(人次)", ff & " And 时间 >= #1/1/2012# And 时间 < #1/1/2013# ") ndr("上年度金额") = DataTables("工作量").Compute("Sum(金额)", ff & " And 时间 >= #1/1/2011# And 时间 < #1/1/2012# ") ndr("本年度金额") = DataTables("工作量").Compute("Sum(金额)", ff & " And 时间 > #1/1/2012# And 时间 < #1/1/2013# ") Next DataTables("工作量完成情况与上年同期对比").DataCols("人次_增减率").SetFormat("#0.00%") DataTables("工作量完成情况与上年同期对比").DataCols("金额_增减率").SetFormat("#0.00%") |
||||||||
-- 作者:hch -- 发布时间:2012/12/21 16:57:00 -- 谢谢大家指导,lin_hailun你能不能再费心给我写一下统计各年各月对比表中的日期代码。我是初学者,为了便于工作需要,一边工作,一边在努力抽时学习狐表,能否给个具体的提示。 |
||||||||
-- 作者:lin_hailun -- 发布时间:2012/12/21 17:12:00 -- 其实,楼主,你只需要修改日期范围,就可以统计不同的了。 ndr("上年度人次") = DataTables("工作量").Compute("Sum(人次)", ff & " And 时间 >= #1/1/2011# And 时间 < #1/1/2012# ") ndr("本年度人次") = DataTables("工作量").Compute("Sum(人次)", ff & " And 时间 >= #1/1/2012# And 时间 < #1/1/2013# ") ndr("上年度金额") = DataTables("工作量").Compute("Sum(金额)", ff & " And 时间 >= #1/1/2011# And 时间 < #1/1/2012# ") ndr("本年度金额") = DataTables("工作量").Compute("Sum(金额)", ff & " And 时间 > #1/1/2012# And 时间 < #1/1/2013# ") |
||||||||
-- 作者:hch -- 发布时间:2012/12/22 9:21:00 -- 你的这个办法是可以实现,需每次修改日期范围,对一些实际应用者使用不现实。我想知道的是在窗口或者其他什么位置设置一个时间段按钮,输入需统计的年、月份后点击这个按钮就可统计出不同年月份的数据表,另外此统计表在EXCEL模板可以实现吗,模板编码怎么写? |
||||||||
-- 作者:lin_hailun -- 发布时间:2012/12/22 9:31:00 -- 把窗口设计一章看完,自己捣鼓一下怎么使用窗口。 http://www.foxtable.com/help/topics/0698.htm 把统计表导出是很轻易的事情。 http://www.foxtable.com/help/topics/0559.htm |