📄 想到一个报表的方法.txt
字号:
想到一个报表的方法
作者:康康
不知你想要的报表是什么样?我的报表就是这样的:(当然那些线是不能完全准确了)
产品名称 规格 数量 金额 ddd aaa
|-----|-----|----|----|
|电视机 |17英寸 |10台 |100000元| 3
| |-----|----|----|
| |21英寸 |20台 |200000元| 3
| |-----|----|----|
| |25英寸 |30台 |300000元| 3
|-----|----------|----|
|小计 | 60台 |600000元|
|-----|----------|----|
|电冰箱 |小小的 |15台 | 1500元| 2
| |-----|----|----|
| |大大的 |25台 | 2500元| 2
|-----|----------|----|
|小计 | 40台 | 4000元|
|-----|---------------|
|当页合计 | 604000元|
|-----|---------------|
|总合计 | 604000元| &&这项是指几页的“当页合计加起来”
|-----|---------------|
很不幸,我也会遇到你这样的情况,说也会的原因是我报表中的产品还不很多,暂时还没超过页长。我考虑过了,我会遇到以下几个问题:
1、当一个分组的细节部分刚好打完,小计还没打的时候就换页了;
2、象上面的电冰箱类一样,若剩下的位置只能打小小的,而大大的就要换页,这样一个只有二个细节的分组要分二页来打,很不美观;
3、各个分组及对应的小计都打完了,而合计却要在新的一页打,这也是个问题。
我现在报表中的数据源表中是没有小计的,只有详细的记录内容,所有的合计都在报表中算的,不知这种方法对上面的要求是好还是坏?
啊,想到一个方法了,还是跟上次我说的方法差不多,但略有改进。
具体方法如下(本人口才不好,可能说得不大简洁):
1、首先你要知道一页可以打印多少个细节,放在变量cnt_detail,这个数字在设计报表时就知道了,有些朋友说可以算,我就不会了;
2、我上面的报表只一个分组,就是产品名称,但现在要加一个分组了。方法是在数据表中加一个辅助字段aaa(呵呵,好象几何证明的辅助线段),这个字段是关键所在,它的具体值无所谓,只要满足以下要求就可以了:在相同一页打印的记录,它们的aaa值就相同;相邻的两页之间,aaa值也要不同,最好把它设为数值型,然后把它当页码都可以。它把不同aaa的值的记录分在不同的页,有时可以通过修改它的值来强制把一些记录放在下一页打印,等一下再说怎样修改它的值。然后根据这个字段做第一个分组。把当页合计放在这个分组的组注脚里,这个当页合计的表达式是表中的金额字段,在“计算”选项里选总和,“重置”选“aaa";
3、创建一个总结区,把总合计放在这个总结区内,表达式也是金额,“计算”中也是选总和,但“重置”是选“报表尾”。
4、根据产品名称创建第二个分组。注意,这个分组一定要在上面那个分组的里面,即先根据aaa分组再根据产品名称分组。把产品名称等字段内容这个分组的细节中去(分级aaa的细节部分是空白的),不使用计算功能。
5、这一步是关键的一步,是在程序运行中在打印报表前做的。再在数据表中加一个辅助字段ddd(别这么大意见,以前的几何证明有更多的辅助线段,而且我是用视图做数据表的,加几个字段容易过吃饭)。这个字段就是记录当前这个产品有几种规格,上面有例子。这个字段的用途是算出报表剩下的细节区还够不够打印当前这种产品及它的小计。判断方法是cnt_detail-ddd>aaa,若真就说明够位置打印。若假,就要修改aaa的值。但若就这样简单的比较,还会出现两个问题:一是当最后一页的当页合计都打了,但总合计不够。简单的解决方法就是把条件改为cnt_detail-ddd-1>aaa,把每一页都留一行给总合计,但有点浪费;二是麻烦一点:判断是不是最后一页,不是就用cnt_detail-ddd>aaa这个条件,是最后一页,就用cnt_detail-ddd-1>aaa这个条件。
6、每当改变了aaa的值都要把cnt_detail初始化为原来的值。
至于那些在细节中又长又短的线段就好办,放一条长的在细节,但不要伸过产品名称这边来;放条短的,刚才和产品名称那个格子这么长就好了,但把打印条件设为不重复打印。两条线小心对准了就行了。
以上证明,当否,请各位批示
返回
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -