彻底解决PB打印金融业务单据方法.doc

上传人:夏** 文档编号:560959565 上传时间:2023-01-05 格式:DOC 页数:3 大小:26.01KB
返回 下载 相关 举报
彻底解决PB打印金融业务单据方法.doc_第1页
第1页 / 共3页
彻底解决PB打印金融业务单据方法.doc_第2页
第2页 / 共3页
彻底解决PB打印金融业务单据方法.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《彻底解决PB打印金融业务单据方法.doc》由会员分享,可在线阅读,更多相关《彻底解决PB打印金融业务单据方法.doc(3页珍藏版)》请在金锄头文库上搜索。

1、彻底解决PB打印金融业务单据方法(深圳:独孤求败2003-05-19)-打印业务单据、报表,历来是金融业务类应用软件开发的重点,一般可占整个工作量的三分之一左右。目前国内的不少软件开发工具在这方面做了大量的工作,不过基本上是基于xbase数据库的产品,Client/Server方面的开发工具几乎无一例外的是国外的产品,例如PowerBuilder、Delphi、VisualBasic等等。但是国外的产品在打印中国式报表,特别是金融类单据、报表功能十分微弱。这是国外、国内的国情不同所致;看来这样的问题只有中国人自己来想办法解决。本文就自己在使用PowerBuilder开发金融类业务软件过程中积累

2、的打印金融单据、报表一些方法作些介绍,就打印中国式报表的问题做点探索。一、使用数据窗口打印的优点及其局限-数据窗口是powerbuilder优于其他可视化开发工具的最主要的特色。它可以使用五种数据源:QuickSelect,SQLSelect,Query,External,StoredProceduce,并提供了一系列预定义的表现风格:自由格式、统计图、网格、标签、分组报告、表格、N-UP、大文本、OLE2.0、交叉表。对于每一种风格,PowerBuilder都提供了标准的报表列(标题列,细节列,总计列,分组标题列,分组脚注列),显示格式、排序、分组和复合显示形式(如一个带有相关图表的电子表格

3、用户界面)。-一般来说,应用软件主要分为数据录入、数据查询、数据修改、数据打印等功能模块。根据笔者的开发经验,数据窗口技术对于数据查询、修改类的窗口,有明显的优越性。对于数据录入,一般的应用都要求按凭证的式样建立数据的录入窗口(或屏幕),使用PowerBuilder提供的用户自定义对象,建立仿凭证样子的数据录入窗口,并不是一件困难的事。对于数据的打印,如果是仅仅是打印参数表或者普通的统计报表,数据窗口也能胜任。但是对于复杂报表,尤其是金融业务单据、报表,虽然数据窗口提供了组合风格,真正操作起来,要符合业务要求,真让任何开发人员望“表”兴叹!-以金融行业常用的“分户帐”来说,余额必需逐笔滚动,本

4、页的余额又作为下一页的第一笔数据。余额是计算好放在数据库中,还是不放在数据库中,而在需要查询、打印时再计算,对应用软件的功能和复杂性有很大的影响。在数据库设计时,通常为了保证数据的一致性、减少被维护数据的相关性,数据库的表中只保留了基本数据,所有的小计、类计、合计项目,即使占了报表的一行,也是边计算边打印的。这类打印问题数据窗口就不能解决了二、与MS-EXECL组合起来解决打印问题-这是PowerBuilder提供的一种补救措施。软件开发人员可以事先在微软的EXECL中设计好所需的单据、报表,然后在PowerBuilder的应用软件中,将单据、报表所需要的数据,边计算、边输出给MS-EXECL

5、,用户在MS-EXECL的环境中,检查无误后即可打印。由于MS-EXECL是一个格式化能力很强的软件,可以解决大部分PowerBuilder处理不了的单据、报表。但是这样的解决方案,必需具备一定的条件:-应用软件用户必需深入地掌握MS-EXECL软件。-要在运行PowerBuilder的同时运行MS-EXECL软件,相应地要增加电脑的内存。-打印的资料页数不能太多,必需在MS-EXECL软件的允许范围之内。特别对于“分户帐”这样按月份打印的表,一个营业部有几万、几十万条数据是很平常的事。这种情况可用以下笔者探讨的方法解决。三、直接打印的方法-直接打印的方法,就是利用PowerBuilder的低

6、层打印函数编写自己的打印程序,如果读者掌握了以下几个为数不多的低层打印函数和技巧后,几乎和使用XBASE、PROC等语言编写打印程序没有什么差别;换句话说,读者如果正在用PowerBuilder将以前用XBASE、PROC等应用软件“升级”的话,将打印程序稍加修改后,就可以用在PowerBuilder中,从而免去重新编写打印程序的麻烦。-PowerBuilder的低层打印函数介绍-PrintOprn(JobName)打开一个打印作业,该函数返回作业号的Long型值,如果发生错误返回-1,命名JobName参数是可选的,它是出现在打印队列的名字。-PrintClose(PrintJobNumbe

7、r)关闭一个打印作业。-Print(PrintJobNumber,Position1,Text,Position2)把文本行送入打印作业。其中Position1是以千分之一英寸为单位指定文本的起始位置与打印区左边界的距离。如果该值不大于当前位置,将从当前位置开始打印文本。Position2指定打印文本之后,打印光标应移到的位置。只有在打印光标没有超出该点时,它才会移动;如果省略Position2,打印光标将移到下一行的起始位置。如果文本内包含回车和换行符,字符串将打印到多行上,而定位值将被忽略。-PrintDefineFont(PrintJonNo,FontNo,FaceName,Height

8、,Weight,&FontPictch,FontFamily,Italic,Underline)定义打印字符串时所用的字体。其中,FontNo是唯一标识字体的从到的数。FaceName是一个包含打印机所支持字样(例如,Prestige20Cpi)的字符串。字体的Height以以千分之一英寸为单位。Weight是字型的笔划宽度(即字符有多厚),粗体为700,正常体为400。FontPictch和FontFamily是进一步定义字体样式的枚举类型。FontPictch可以是Default!,Fixed!,Variable。FontFamily可以是AnyFont!,Decorative!,Mode

9、rn!,Roman!,Swiss!。Italic和Underline是布尔型值,分别指定字体是否为斜体或加下划线。-PrintSetFont(PrintJonNo,FontNo)设置以前定义的字体号成为打开作业的当前字体号。-PowerBuilder直接打印法打印程序的过程:-打开一个打印作业。-定义打印字符串时所用的字体。-有检索、计算、格式化文本功能,由循环、判断等语句组成的打印体,可以由Xbase、C等打印程序移植而成。-关闭一个打印作业。-应该特别注意,定义打印字符串时所用的字体,必须每种字体用一条语句。每一次定义的字体只在本次打印作业中有效,换句话说每打开一个打印作业都必须重新定义字

10、体。另外如果不关闭打印作业,则打印机不能打印任何结果,并且也影响下一次打印作业。-具体的例子-以银行常用的科目日计表为例,为了简化,注意表格只是示意图,不涉及到字体的变化。数据表的数据结构只是其中的主要部分,数据假定已经按科目代码排过序。为了便于比较,程序没有进行优化,尽量使用同名变量,这些变量在两个程序中的作用基本相同。-中国人民银行XX分行科目日计表-由以上两个程序可以看出,除了读取数据库数据的方式不同,以及编程用的具体语言、函数有一定的差别以外,大部分差别不大,转换并不困难。如果是用ORACLE的PROC编写的打印程序,与PowerBuilder编写的差别更小,转换更为容易;所以这里没有将ORACLE的PROC编写的科目日计表打印程序附在这里。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号