PB的大文数据打印

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2017-03-06 14:26:00

  问题:在现实中我遇到这样一个问题,在数据窗口打印的过程中,我发现打印出来的内容仅仅是数据窗口现实的内容,比如说,有一项内容好多,按正常的打印,出来的结果仅仅是窗口里显示的东西.我如何才能让打印的结果是那一项的全部的内容,而不是仅仅是数据窗口中所显示的内容,具体点说就是,我现在再做一个教学大纲东西,我吧她放在数据窗口里,他的字数很多,我想把他全部打印出来.有谁能给我说一下,我这里先谢谢啦

回答:
在PowerBuilder4.0及最新推出的powerBuilder 6.0 版 中,均未解决大文本数据的打印问 题。在企业管理中,经常打印几页甚至几十页长的材料,这个材料可能长,也可能短,(在PB中存放大文本的单机库数据类型是Long Varchar),利用程序设计批量打印,设计此类数据高度时,不知道设计多高,(若设计不合适,短数据量造成打印空行或空页,而长数据量又可能造成只打印了部分数据的情况),虽然程序设计时有AutoHeight 属 性,但在实际运行时效果并不理想,因此,此问题的解决具有重要意义。
下面我介绍一种利用Powersoft Script函数来解决此问题的方法:
----例如,对于表text,其字段如下:
1、姓名name char(8);
2、性别sex char(2);
3、出生日期birthday date;
4、个人简历resume long;Name(姓名)Sex(性别)BirthDay(生日)resume(个人简历)
张三男1950.09.12
55.9.1北京市光明 小学
60.9.1北京市南安中学
70. 8.1.清华大学毕业,在原子能研究所工作。
71年获国家项目设计一等奖,同年,被评为先进个人。
72年………(等等)

李四男1985.02.12
90. 9.1在南京市上福利小学
95.9.1毕业,正选择中学就读
----里面有张三,李四两条记录。张三经历丰富,可能在resume栏中内容很多,从小学到 大学,及至工作20年来的所有经历,能写成一篇文章了;而李四刚小学毕业,那么resume 栏中内容就很少。
----由于大文本字段其数据量大,数据长度不一定,在设计打印数据窗口时,这种字段的高度不好定位,如果按最大可能高度定位(这个高度也不好掌握),对于小数据就会出现打印空行,甚至空页的情况。
----为了解决这个问题,我们用程序来控制这种字段高度。(以text表为例):
----1、以自由格式定义一个数据窗口,保存这种缺省状态(resume字段高度为缺省高度);生成一个窗口,窗口中包含上述数据窗口(被定义成dw_1);窗口中还有上翻(cb_1),下翻(cb_2)两个按钮。
----(下面的程序行,根据实际情况写到cb_1或cb_2按钮中。)
----2、获得要打印的记录的resume字段中数据,放到变量field中
dw_1.scrollnextrow():
string field
field = dw_1.getitemstring(1,”resume”)
//假设,这是第一行张三的数据
----3、我们用B5纸打印,字体为PowerBuilder缺省字体(TArial),可计算出每行59个字符,字体高度为80个点。那么用如下程序可计算出field变量的内容占用的打印高度:
int i
long tt

tt = len(field)//获得这个变量的长度

i=(int(tt)/59)*80+1//计算出高度点,

----4、改变resume字段高度。
----dw_1.Describe(“resume.Height”)
----dw_1.Modify(“resume.Height=string(i)”)
----程序每打印一条记录,就调用上诉2,3,4步骤的程序行,将resume字段高度,随resume内容的长度改变而改变,就可动态改变字段高度,从而保证纸张资源的充分利用,不打印空行或空页。


Tags:

作者:佚名
分享到: 微信 更多

相关文章

  • PB的大文数据打印