快速准确实现发票套打

概述

发票打印要求将数据准确地打印在空白发票的对应位置,要求数据打印输出位置准确,并且数据的书写格式符合发票的填写要求。本文档将说明用 Grid++Report 实现发票打印的过程,从中感受到 Grid++Report 轻易做到很多国外报表开发工具很难实现的要求,以及实现票据打印的便利与快速。

下图是用 Grid++Report 实现的发票打印预览截图,从图中可以看出发票套打需要克服的难点。

数据定位准确快速。
每一笔明细准确输出到对应行中。
每笔明细的金额准确打印到金额栏位中。
合计金额大写输出并准确打印到对应金额位中。
合计大写金额前输出圆圈中画叉图标。
Grid++Report 为发票套打制作的例子报表为“4j.发票套打.grf”,在安装目录的“Samples\Reports”子目录下。因为例子数据库不能提供完整的数据,我们制作的例子模板缺少了一些数据,但整个发票打印的要点都涉及到了。

 阅读本文档要求

要求对 Grid++Report 有一定了解,能够用 Grid++Report 进行基本的报表设计。

准备任务

  1. 精确的测量出发票的长度与宽度。
  2. 扫描出空白发票的图像,要求图像方正不扭曲,长宽比例不发生变化。在安装目录的‘Samples\Reports\Image\发票背景图.jpg’就是我们制作的空白发票图像。
  3. 如果不具备扫描背景图的条件,就要量出各个数据输出区域的左上角位置与大小。位置以发票的左上角为原点。

报表结构分析

为了将发票与报表定义对应起来,我们把整个发票分为三个部分:票头、明细表格与票尾,这三个部分各自对应报表定义中的报表头、明细网格与报表尾。

报表模板设计主要步骤

  1. 定义报表的页面设置:选定纸型为自定义,根据测量的发票宽高设置纸张宽度与高度;如果宽度超过打印机支持的最大打印宽度,可以将方向设为“横向”;将四个页边距全部设为零。
  2. 加载背景图:报表主对象的“背景图”属性加载“Samples\Reports\Image\发票背景图.JPG”,切换到页面视图就可以看到背景图显示在设计面板中。为了让背景图在打印预览时可见。将报表主对象的‘背景图预览’属性设为‘是’。
  3. 分别插入一个报表头,一个报表尾及明细网格。进入页面视图,根据背景图拖放报表头的高度与票头一致,报表尾的高度与票尾一致,明细网格标题行的高度与明细表格的表头一致,明细网格内容行的高度与明细表格的明细行一致。
  4. 定义票据的数据源:与其它报表设计一样,请参见例子模板中的定义。如果主项数据不在记录集中,可以定义对应的参数对象。
  5. 在报表头与报表尾中定义主项数据的输出,选用合适的部件框并摆放在对应的位置。
  6. 定义明细网格对应的列,根据背景图设定正确的宽度,内容格关联对应的字段。因为票据的明细表格与左边有间距,定义一个空白列对应这个间距。
  7. 明细金额准确打印到金额栏位中:将该列的内容格设为自由格,然后在其中查入一个综合文字框,综合文字框的停靠属性设为“充满”,综合文字框关联对应的数据,并设置综合文字框的“字间距”属性。
  8. 在报表尾插入两个综合文字框,数据为金额求和。其中一个显示金额合计并打印在金额栏位中,另一个显示大写金额,两者都要设置合适的“字间距”。
  9. 中文大写金额:设置数据的格式化串为“$$$$#.00”。
  10. 圆圈中画叉图标:在综合文字框的文本属性值前加一个“*”符号,最后综合文字框的文本属性为“*[#Sum(Amount):$$$$#.00#]”。

下图即为我们制作的例子模板:

 

以上过程读起来可能会比较晦涩,如果读者对 Grid++Report 比较熟悉,并参考例子模板,完全可以根据自己的思路把整个报表模板设计出来并应用在自己的程序中。在设计的过程中可以切换到“预览视图”,随时查看设计效果。不要任何代码参与就可以设计出发票套打功能,只要在程序中关联实际的数据就可以完成发票打印功能,充分说明了 Grid++Report 是解决我们国内报表与打印任务的最佳工具。

 

posted on 2009-12-23 15:21  报表工具研究  阅读(2121)  评论(1编辑  收藏  举报

导航