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

    回答:
    在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内容的长度改变而改变,就可动态改变字段高度,从而保证纸张资源的充分利用,不打印空行或空页。

    [1]

  • 上一篇:如何统计两个时点的时间差
    下一篇:在PB中用Flash制作Splash封面