客户要求:
1,纸张用高1400mm,宽2400mm的压感纸
2,每行打印10条记录
3,每页进行金额统计
4,按照商品类别分类打印(换类换纸)
5,表头可以输入
1,这个问题和第二个问题是相关的。解决如下:在打印机中自定义满足条件的纸类型,但是发现宽不能
超过216,于是设置高2400,宽1400的纸张,改变一下打印方式就可以了。之所以要这样,是因为在水晶报表里面,纸张是报表的载体
,如果随便用另外一个纸张来代替,打印出来的根本就是改该页了没换,不该换的时候换了,一塌糊涂
。比如说我一开始的时候用的是A4的纸张模拟的,但是根本不行,而且已知类型的纸张里面没有满足条
件的,所以只有自定义才可以。这样,你的报表是建立在你自定义的纸张上的,就是用A4的纸来打印,
报表还是只打印140*240的范围,然后就换纸。可恨我折腾了1天,才明白这个道理。
2,每行打印10条记录。
调整报表的页眉和页脚,就可以完成这个功能,当然,首先是你的纸张符合要求。
3,每页进行金额统计
做了三个公式来完成这个功能。
分别是
whileprintingrecords;
currencyvar Amount;
Amount := Amount + {@item_amount};
用来累加计算,放在详细资料里面
whileprintingrecords;
currencyvar Amount;
用来显示金额,放在页脚
whileprintingrecords;
currencyvar Amount;
Amount := 0;
用来重置,放在页眉
这样,每打印一页就会重置一次Amount。就完成了分页统计。
我不知道当纪录行数没有充满一页的时候水晶报表是否可以打印空白的网格,总之我是没有找到,所以用了一个变通的方法。因为我的报表是分组的,所以在组页脚上放了和页脚上完全一样的内容,在组页脚里面设置一个变量为True,然后在页脚的格式化节里面选中“抑制显示“选项,采用公式来判断变量的值。
这样当组页脚显示之后,页脚就不显示了,解决了一大片空白之后,在页脚上显示统计金额的问题(主要是不美观)。
4 ,这个问题主要是分类换纸,我一开始的时候选中组页脚的“在后面内容新建页“,但是发现,总会多打一张丑陋的纸出来,因为这项选中之后,水晶报表不管后面还有没有内容,总是插入分页符,所以最后会多出一页,这个也是采用公式解决,在“在后面内容新建页“右边选择公式,然后输入
if NextIsNull({INV_INOUT_SUB_DETAIL.ITEM_NAME}) then
false
else
true
这就是说,去看看下一条记录INV_INOUT_SUB_DETAIL.ITEM_NAME还有没有值,如果没有值,就不插入分页符,否则插入,这样就解决了这个问题。
5 表头可以输入
这个用一个参数字段就搞定了,当运行到这个参数字段的时候,水晶报表会弹出一个对话框,要求输入参数值,而且你可以提供默认值的,唯一不好的就是,由于选项太多的缘故,这个对话框很大(因为水晶报表是根据你是否选择了某项内容而决定是否隐藏还是显示对话框上的一些控件,所以没有办法)。
也不知道说清楚没有,总是这是我的一点儿体会,大家可以看下我之前问的两个问题有多菜:)
第一次弄这个,汗死~~:)
1,纸张用高1400mm,宽2400mm的压感纸
2,每行打印10条记录
3,每页进行金额统计
4,按照商品类别分类打印(换类换纸)
5,表头可以输入
1,这个问题和第二个问题是相关的。解决如下:在打印机中自定义满足条件的纸类型,但是发现宽不能
超过216,于是设置高2400,宽1400的纸张,改变一下打印方式就可以了。之所以要这样,是因为在水晶报表里面,纸张是报表的载体
,如果随便用另外一个纸张来代替,打印出来的根本就是改该页了没换,不该换的时候换了,一塌糊涂
。比如说我一开始的时候用的是A4的纸张模拟的,但是根本不行,而且已知类型的纸张里面没有满足条
件的,所以只有自定义才可以。这样,你的报表是建立在你自定义的纸张上的,就是用A4的纸来打印,
报表还是只打印140*240的范围,然后就换纸。可恨我折腾了1天,才明白这个道理。
2,每行打印10条记录。
调整报表的页眉和页脚,就可以完成这个功能,当然,首先是你的纸张符合要求。
3,每页进行金额统计
做了三个公式来完成这个功能。
分别是
whileprintingrecords;
currencyvar Amount;
Amount := Amount + {@item_amount};
用来累加计算,放在详细资料里面
whileprintingrecords;
currencyvar Amount;
用来显示金额,放在页脚
whileprintingrecords;
currencyvar Amount;
Amount := 0;
用来重置,放在页眉
这样,每打印一页就会重置一次Amount。就完成了分页统计。
我不知道当纪录行数没有充满一页的时候水晶报表是否可以打印空白的网格,总之我是没有找到,所以用了一个变通的方法。因为我的报表是分组的,所以在组页脚上放了和页脚上完全一样的内容,在组页脚里面设置一个变量为True,然后在页脚的格式化节里面选中“抑制显示“选项,采用公式来判断变量的值。
这样当组页脚显示之后,页脚就不显示了,解决了一大片空白之后,在页脚上显示统计金额的问题(主要是不美观)。
4 ,这个问题主要是分类换纸,我一开始的时候选中组页脚的“在后面内容新建页“,但是发现,总会多打一张丑陋的纸出来,因为这项选中之后,水晶报表不管后面还有没有内容,总是插入分页符,所以最后会多出一页,这个也是采用公式解决,在“在后面内容新建页“右边选择公式,然后输入
if NextIsNull({INV_INOUT_SUB_DETAIL.ITEM_NAME}) then
false
else
true
这就是说,去看看下一条记录INV_INOUT_SUB_DETAIL.ITEM_NAME还有没有值,如果没有值,就不插入分页符,否则插入,这样就解决了这个问题。
5 表头可以输入
这个用一个参数字段就搞定了,当运行到这个参数字段的时候,水晶报表会弹出一个对话框,要求输入参数值,而且你可以提供默认值的,唯一不好的就是,由于选项太多的缘故,这个对话框很大(因为水晶报表是根据你是否选择了某项内容而决定是否隐藏还是显示对话框上的一些控件,所以没有办法)。
也不知道说清楚没有,总是这是我的一点儿体会,大家可以看下我之前问的两个问题有多菜:)
第一次弄这个,汗死~~:)