精华内容
下载资源
问答
  • PB动态制作报表

    2013-06-19 17:10:10
    PB动态制作报表,纯代码,不加任何第三方DLL
  • PB数据报表制作

    千次阅读 2013-10-21 17:59:07
    1选择所需数据来源的数据库和视图 根据情况进行数据库关联 2根据查询要求选择查询字段 并根据查询显示要求使用函数来计算字段 3写出查询的条件 4在生成的数据表中添加...注:数据库代码部分和PB操作部分是完全隔离的

    1选择所需数据来源的数据库和视图 根据情况进行数据库关联

    2根据查询要求选择查询字段 并根据查询显示要求使用函数来计算字段

    3写出查询的条件

    4在生成的数据表中添加需要计算的数据列 并写出运算过程


    注:数据库代码部分和PB操作部分是完全隔离的


    展开全文
  • PB自定义报表系统开发,现提供大家,供PB爱好者学习与参考、研究
  • PB动态报表的实现

    2015-04-10 17:11:40
    在通常的管理信息系统开发过程中,总是有没完没了的报表需要制作,调试报表花费的时间也是最多而且乏味,还常常不能满足客户的要求。如果能够让用户自己调整报表的格式和内容,然后将它保存下来,程序下次启动时若能...
  • 在通常的Server/Client方式MIS开发中,总是有没完没了的报表需要制作,调试报表花费的时间也是最多而且乏味,还常常不能满足客户的要求。要是能够让用户自己调整报表的格式和内容,然后将它保存下来,程序下次启动时...
  • pb报表打印

    2008-06-29 15:01:51
    pb 报 表 打 印 实 例
  • PB动态报表格式自由定义的实现 (加入日期:2004-9-7) 【保存文章至硬盘】【打印文章】【字体:大 中 小】 分享到: 0  在通常的Server/Client方式MIS开发中,总是有没完没了的报表需要制作,调试报表花费...

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

    (加入日期:2004-9-7)

    保存文章至硬盘】【打印文章】【字体:

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

      一、实现原理:

      PB中的报表其实就相当于是数据窗口。

      第一步,动态报表的实现。通过设置数据窗口对象(dataobject)中文本、列等的Resizeable和moveable属性为1来实现对象位置的拖动控制,通过数据窗口的Modify函数实现对象值的更改(包括增加和删除)。

      第二步,报表格式的保存。在一个应用当中,数据窗口对象的名称总是唯一的,将每一个数据窗口对象转化成PSR文件存于数据库表中。在窗口打开时,程序先校验报表格式是否存在。如果存在,先将报表格式读取出来放在一个临时文件当中,然后设置数据窗口(datawindow)的数据对象(dataobject)为这个报表文件,然后提取数据;如果不存在,直接提取数据即可。

      二、实现过程:

       1、建立一个数据库表用以保存报表格式文件。
    表名:dyn_report  
    Dwobject Varchar2(20) 数据窗口对象名称 Primary key  
    Rptitle Varchar2(80) 报表的标题名称    
    Memo Long 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下调试通过。
    展开全文
  • 一个简单的pb动态报表

    千次阅读 2006-07-07 18:16:00
    这个简单的pb动态报表就是报表的列什么的都固定。但是查询条件可以随心所欲的设置。首先做一个报表,最好不要排序,只写必要的条件。然后再程序中根据具体的用户指定的条件构造一个where语句。假设查询条件串在 中...

     这个简单的pb动态报表就是报表的列什么的都固定。但是查询条件可以随心所欲的设置。

    首先做一个报表,最好不要排序,只写必要的条件。

    然后再程序中根据具体的用户指定的条件构造一个where语句。

    假设查询条件串在  中,即

    g_print_sql =" where ?????? order by ?????"

    然后我们重新构造查询语句

    string my_sql=""
    integer where_pos
    my_sql=dw_2.getSqlselect()
    where_pos=pos(my_sql,"WHERE")

    if where_pos > 0 then
       my_sql=mid(my_sql,1,where_pos - 1) 
    end if

    g_print_sql = my_sql + g_print_sql

    把最新的查询语句传输给报表,重新查询

    dw_2.reset()
    dw_2.SetSQLSelect(g_print_sql)
    dw_2.retrieve()

    这样,整个程序就搞定了。

    开始的时候我没有去取原来的查询串进行截取,而是重新写的查询串。总是在查询的时候出错。说什么 powerbuilder only suports 18 decimal digits.我估计是现写的查询语句与原来的创建报表时给定的查询语句有不同之处。为了避免这个问题。我就想出了。取报表的原串截取,再附加新的查询条件的方法。

    展开全文
  • 在通常的管理信息系统开发过程中,总是有没完没了的报表需要制作,调试报表花费的时间也是最多而且乏味,还常常不能满足客户的要求。如果能够让用户自己调整报表的格式和内容,然后将它保存下来,程序下次启动时若能...
    在通常的管理信息系统开发过程中,总是有没完没了的报表需要制作,调试报表花费的时间也是最多而且乏味,还常常不能满足客户的要求。如果能够让用户自己调整报表的格式和内容,然后将它保存下来,程序下次启动

    时若能自动调用保存了的报表格式那就方便多了。

    实现原理
     
      PowerBuilder中有一种以PSR为后缀的特殊的保存报表的文件格式(本文简称PSR文件),数据窗口可以直接读取PSR文件生成报表,而程序通过生成PSR文件,就可以实现动态报表格式的保存。

      首先,通过设置数据窗口对象(dataobject)中的文本、列等的Resizeable和moveable属性为1来实现对象位置的拖动控制,通过数据窗口的Modify函数实现对象值的更改(包括增加和删除)。

      其次要保存报表格式。在一个应用中,数据窗口对象的名称总是惟一的,将每一个数据窗口对象转化成PSR文件存于数据库表中。在窗口打开时,程序先校验报表格式是否存在。如果存在,将报表格式读出来放在一个临时文件当中,然后设置数据窗口(datawindow)的数据对象(dataobject)为这个报表文件,并提取数据; 如果不存在,直接提取数据即可。

    实现过程

      1. 建立一个数据库表用以保存报表格式文件,各个字段定义如下:
      
      2. 建立一个窗口w_temp。 定义实例变量如下:
       string is_dwtype,is_dwobject
       //保存报表中对象的类型及名称
      
      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 =‘ emp7089.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()


    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7178747/viewspace-161506/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/7178747/viewspace-161506/

    展开全文
  • PB报表设计源代码.rar

    2019-08-29 22:41:52
    此源码是Cell组件PB中如何自定义函数的代码示例和Cell组件超级报表模板设计器PB源码示例。 Cell网站: http://www.cellsoft.cc/Cell/index.asp cell组件下载地址: ... 产品概述: Cell 组件适用于Windows环境下各种...
  • · 强大的制表能力,特别适合制作中国式的复杂报表,解决您所有的制表难题 · 丰富的单元格类型,支持数值、货币、日期、文本等类型。 Cell的单元格囊括了几乎所有的Windows标准控制 · 丰富的打印设置,美仑美奂的...
  • 人事管理系统,员工信息的录入,查看修改,报表等 可用于新手的学习参考 ,当做一个不错的案例参考
  • 完整pb用户自定义报表设计器(终结版) 本程序无须安装,解压后直接运行可执行程序即可,在第一次运行时需要注册演示数据库。 一般来说,在第一次运行时,系统会自动打开数据库连接界面,通过它,你可以 连接到任何你...
  • PB】动态报表格式自由定义的实现

    千次阅读 2012-06-14 22:28:12
    在通常的Server/Client方式MIS开发中,总是有没完没了的报表需要制作,调试报表花费的时间也是最多而且乏味,还常常不能满足客户的要求。要是能够让用户自己调整报表的格式和内容,然后将它保存下来,程序下次启动时...
  • pb编写的简单报表

    2008-07-22 09:10:38
    pb开发的源程序,初学者可以看一下
  • PB开发报表系统

    千次阅读 1970-01-12 18:34:37
    PB开发WEB下报表系统作者:流方 主页:http://liulee.myrice.com在建设某公司内部信息网的过程中,涉及到大量的DBF文件直接转换为HTML文件的应用,其他的文件格式(Excel,Access,以及大型数据库的查询)也有这方面的...
  • PowerBuilder利用它的数据窗口(DataWindow)技术可以生成各种统计报表,但其制作复杂报表的功能还是不强, 难以满足中国式报表的要求。本文通过一个实例介绍了一种借助于Excel实现对这类报表的输出与打印的方法,并给...
  • 通过多表数据组合,创建复杂的复合报表,是现代大数据分析研究必不可少的功用。
  • 数据窗口(DataWindow)是PB最强大的功能之一,Datawindow是PB中获取专利技术的控件,它对数据的处理方法相当简洁,能处理各种显示格式和快速的报表制作能力。 深受PB开发者的喜爱。但一件产品不可能十全十美,...
  • PB的数据窗口美化 1、支持GRID格式转中国式报表:特殊列表头(多列共享表头)、标题和表头支持图片文字 2、包括更改线条颜色、字体、特殊表头等。 3、强大的自定义功能,满足WEB开发前台页面设计; 。。。。。。
  • 这问题居然没找到解决办法。。。。。 好吧,那我自己解决。。。。。 其实很简单。。。。。 只要打开ireport,pageheader的属性,在print when expression设置$V{PAGE_NUMBER}.equals(1); 这意思就是当页码为1的...
  • his程序门诊报表

    2019-01-15 13:45:01
    基于PB制作的简易门诊报表,可以查相应的门诊量以及各科费用
  • PB

    千次阅读 2014-07-24 14:27:33
    4、如何将pb9.0 的datawindow转化为pb 8.0版本的datawindow? 答:edit source 将release 9;改为release 8;  并删除以下内容:  print.printername=""  print.canusedefaultprinter=yes ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 987
精华内容 394
关键字:

pb制作报表