PB动态报表格式自由定义实现

PB动态报表格式自由定义实现

ID:37856138

大小:42.50 KB

页数:4页

时间:2019-06-01

PB动态报表格式自由定义实现_第1页
PB动态报表格式自由定义实现_第2页
PB动态报表格式自由定义实现_第3页
PB动态报表格式自由定义实现_第4页
资源描述:

《PB动态报表格式自由定义实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、PB动态报表格式自由定义的实现  在通常的Server/Client方式MIS开发中,总是有没完没了的报表需要制作,调试报表花费的时间也是最多而且乏味,还常常不能满足客户的要求。要是能够让用户自己调整报表的格式与内容,然后将它保存下来,程序下次启动时它自动调用保存了的报表格式那有多好。本人通过如下方法最终实现了用的要求。  PB(PowerBuilder)有一种以PSR结尾的特殊的保存报表的文件格式(本文简称作PSR文件)。根据数据窗口可以直接读取PSR文件生成报表的原理,程序通过生成PSR文件,实现动态报表格式的保存

2、。  一、实现原理:  PB中的报表其实就相当于是数据窗口。  第一步,动态报表的实现。通过设置数据窗口对象(dataobject)中文本、列等的Resizeable与moveable属性为1来实现对象位置的拖动控制,通过数据窗口的Modify函数实现对象值的更改(包括增加与删除)。  第二步,报表格式的保存。在一个应用当中,数据窗口对象的名称总是唯一的,将每一个数据窗口对象转化成PSR文件存于数据库表中。在窗口打开时,程序先校验报表格式是否存在。如果存在,先将报表格式读取出来放在一个临时文件当中,然后设置数据窗口(d

3、atawindow)的数据对象(dataobject)为这个报表文件,然后提取数据;如果不存在,直接提取数据即可。  二、实现过程:  1、建立一个数据库表用以保存报表格式文件。表名:dyn_reportDwobjectVarchar2(20)数据窗口对象名称PrimarykeyRptitleVarchar2(80)报表的标题名称MemoLongraw报表格式  2、建立一个窗口w_temp。定义实例变量如下:  stringis_dwtype,is_dwobject//保存报表中对象的类型及名称控件名称控件含义Dw_

4、print数据窗口对象Cb_exit退出按钮Cb_savereport报表格式保存按钮  3、在窗口的OPEN事件中加入如下代码,校验报表格式是否存在,如果存在读取定义好的报表格式到数据窗口。  blobemp_pic  longll_handle  stringls_dwobject,ls_reportfile,ls_path  ls_dwobject=dw_print.dataobject  //判断是否存在该数据窗口的报表格式  selectcount(*)into:ll_countfromdyn_reportw

5、heredwobject=:ls_dwobject;  ifll_count>0then    //读取报表格式文件到大文本变量    selectblobmemointo:emp_picfromdyn_reportwheredwobject=:ls_dwobject;    //创建psr临时文件到硬盘    ls_reportfile='temp7089.psr'    ll_handle=FileOpen(is_reportfile,StreamMode!,write!,LockWrite!,Replace!)

6、    FileWrite(ll_handle,emp_pic)    FileClose(ll_handle)    dw_print.dataobject=ls_reportfile    dw_print.settransobject(sqlca)  else    Dw_print.settransobject(sqlca)  Endif  Dw_print.retrieve()  4、报表格式的保存。通过Cb_savereport按钮的clicked实现。  stringls_filename  longll

7、_count  blobEmp_id_pic  ls_filename="temp70201.psr"  //保存报表格式到硬盘临时文件  dw_print.saveas(ls_filename,PSReport!,false)  sqlca.autocommit=true  selectcount(*)into:ll_countfromdyn_reportwheredwobject=:is_dwobject;  ifll_count=0then    insertintodyn_report(dwobject,rpt

8、itle)    values(:is_dwobject,:ls_filename,:ls_path);  endif  //从硬盘临时文件读取数据保存到数据库表中  emp_id_pic=of_readbmpfile(ls_filename)//该函数将二进制文件内容读到大文本对象中  //更新数据库  UPDATEBLOBdy

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。