大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 数据库 -> SYBASE -> PB动态报表格式自由定义的实现

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

时间: 2021-08-13 作者:daque

在常常的server/client办法mis开拓中,老是有没完没了的报表须要创造,调节和测试报表耗费的功夫也是最多并且蹩脚,还往往不许满意存户的诉求。假如不妨让用户本人安排报表的方法和实质,而后将它生存下来,步调下次启用时它机动挪用生存了的报表方法那有多好。自己经过如次本领最后实行了用的诉求。 pb(powerbuilder)有一种以psr结果的特出的生存报表的文献方法(正文简称作psr文献)。按照数据窗口不妨径直读取psr文献天生报表的道理,步调经过天生psr文献,实行动静报表方法的生存。   一、实行道理:    pb中的报表本来就十分所以数据窗口。   第一步,动静报表的实行。经过树立数据窗口东西(dataobject)华文本、列等的resizeable和moveable属性为1来实行东西场所的拖动遏制,经过数据窗口的modify因变量实行东西值的变动(囊括减少和简略)。   第二步,报表方法的生存。在一个运用傍边,数据窗口东西的称呼老是独一的,将每一个数据窗口东西变化成psr文献存于数据库表中。在窗口翻开时,步调先校验报表方法能否生存。即使生存,先将报表方法读掏出来放在一个偶尔文献傍边,而后树立数据窗口(datawindow)的数据东西(dataobject)为这个报表文献,而后索取数据;即使不生存,径直索取数据即可。    二、实行进程:    1、创造一个数据库表用以生存报表方法文献。  表名:dyn_report  dwobjectvarchar2(20)数据窗口东西称呼primary key  rptitlevarchar2(80)报表的题目称呼   memolong raw 报表方法      2、创造一个窗口w_temp。 设置范例变量如次:    string is_dwtype,is_dwobject //生存报表中东西的典型及称呼  控件称呼 控件含意  dw_print数据窗口东西  cb_exit退出按钮 cb_savereport 报表方法生存按钮         3、在窗口的open事变中介入如次代码, 校验报表方法能否生存,即使生存读取设置好的报表方法到数据窗口。   blob emp_pic    long ll_handle    string ls_dwobject,ls_reportfile,ls_path    ls_dwobject = dw_print.dataobject    //确定能否生存该数据窗口的报表方法    select count(*) into:ll_count from dyn_report where dwobject =:ls_dwobject;    if ll_count>0 then      //读取报表方法文献到大文本变量      selectblob memo into:emp_pic from dyn_report where dwobject =:ls_dwobject;      //创造psr偶尔文献到硬盘      ls_reportfile = ’\temp7089.psr’      ll_handle = fileopen(is_reportfile,streammode!,write!,lockwrite!,replace!)      filewrite(ll_handle,emp_pic)      fileclose(ll_handle)      dw_print.dataobject = ls_reportfile      dw_print.settransobject(sqlca)    else      dw_print.settransobject(sqlca)    end if    dw_print.retrieve()    4、报表方法的生存。经过cb_savereport按钮的clicked实行。    string ls_filename    long ll_count    blob emp_id_pic    ls_filename = "temp70201.psr"    //生存报表方法到硬盘偶尔文献    dw_print.saveas(ls_filename,psreport! ,false)    sqlca.autocommit = true    select count(*) into :ll_count from dyn_report where dwobject =:is_dwobject;    if ll_count =0 then       insert into dyn_report(dwobject,rptitle)       values(:is_dwobject,:ls_filename,:ls_path);    end if    //从硬盘偶尔文献读取数据生存到数据库表中    emp_id_pic = of_readbmpfile(ls_filename)//该因变量将二进制文献实质读到大文本东西中    //革新数据库    updateblob dyn_report set memo = :emp_id_pic where dwobject = :is_dwobject;    sqlca.autocommit = false   5、动静报表的实行。经过数据窗口dw_print的clicked事变捕捉数据窗口中东西,并将东西名寄存在实行变量is_dwobject中,为下一步窜改报表作筹备。    string ls_type,ls_dwoname    //获得东西典型和称呼    ls_type = trim(upper(dwo.type))    ls_dwoname = trim(dwo.name)    is_dwtype = ls_type    choose case ls_type      case "text","commandbutton","groupbox"        is_dwobject = ls_dwoname        //树立为不妨拖动和变换巨细,其它类同        this.modify(ls_dwoname+".resizeable=’"+"1’")        this.modify(ls_dwoname+".moveable="+"1")      case "line" //曲线东西不许经过树立resizeable和moveable属性举行安排,必需经过其它路途        is_dwobject = ls_dwoname      case "rectangle","ellipse","graph","bitmap"        is_dwobject = ls_dwoname        this.modify(ls_dwoname+".resizeable=’"+"1’")        this.modify(ls_dwoname+".moveable=’"+"1’")      case "column","compute"        is_dwobject = ls_dwoname        this.modify(ls_dwoname+".resizeable=’"+"1’")        this.modify(ls_dwoname+".moveable=’"+"1’")    end choose    而后再经过modify()因变量不妨实行基础的动静报表操纵,这一类的作品较多,pb中也有洪量的例子可径直运用,在此这不复累述。    6、在cb_exit按钮的clicked()事变中介入:close(parent)。    7、在运用的open事变中介入: open(w_temp)。而后生存并运转,大功成功啦!    8、本步调在pb7.0加oracle8.05下调节和测试经过。

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.