⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 安装介绍.txt

📁 pb-关于报表的一个说明性的资料简介
💻 TXT
字号:
-调用运行方法-

  (1)解开压缩文件
  (2)用PB打开sample.pbl中的应用report
  (3)在应用report属性的搜索路径中加入
     c:\report\sample.pbl;
     c:\report\report.pbl;
     c:\report\saledemo.pbl;
  (4)用PB设置一个report数据库(用report.db,UID=dba,PWD=sql在SQLAnywhere下设置)
  (5)run运行即可

    
-技术支持-

    对于购买《动态报表设计器》注册码版或源代码版的用户,
    我们将提供详细的技术资料和优质的售后服务,
    另外除了免费提供通用查询、通用排序、数据备份、数据恢复之外,
    还可以免费提供制作产品系列号、通用统计、通用数据字典、通用权限管理、完全兼容DOS键盘方式等源代码,
    有兴趣的朋友请跟软件供应商(pbreport@hotmail.com,zhangxxr@zhcatv.com)联系。

-功能简介-

  (1)任意增加、修改、删除报表,而无须改动源程序。
  (2)自动生成功能,选择项目后快速生成表格式或自由式等常用报表。
  (3)手动设计功能,可以设计出复杂的中国式报表及套打单据。
  (4)直线、文本、表达式等对象的位置、大小、字体、颜色可以任意改变。
  (5)具有中英翻译功能,表达式可以采用中文,适合中国人使用。
  (6)表达式非常灵活,可以是字段、函数、变量组成的复杂表达式。如:取小数位(数量*单价*折扣/100,2)。
  (7)表达式具有校验功能,如表达式有错误系统会立即提示。
  (8)所有界面完全汉化,直观明了,可交付最终用户使用。
  (9)采用动态数据窗口处理,无须调用PB之外的资源。
  (10)表头和表体之间的格线,不会出现“裂缝”,改进了PB本身的缺陷。
  (11)打印纸张、比例、横向、纵向打印等可以设置。
  (12)数据源可以是后台数据库表或共享前台数据窗口数据,满足不同的需要。
  (13)自动识别并适应显示分辨率。
  (14)调用简便,与其它PB开发系统之接口简单。
  (15)可以直接在Orcal,Sybase,Ms-sql等大型数据库下使用而无需任何改动。
    (16)调用本系统之前已经设计好的报表,可以选择“原数据窗口格式”生成到本系统,把“死报表”变成“活报表”。
    (17)对于下拉数据窗口的数据,可以采用本系统的“后台取数()”函数来实现取数。

-设计思路-

  中国的报表格式太多,同一行业的每个单位的报表也各不相同,如果要使自己的软件通用化,报表可以让用
户自己修改,这样程序员的后续维护量就可大大减少,而且可以把许多工作交给用户去做,这就是我创作的原动
力。
    开始时,我们尝试了两个方法:一个是直接调用数据窗口的设计器来改进,但未成功;另一个是调用
Formula One或Excel,发现虽然其表格功能比较强大,但控制不灵活,资源开销也较大,调用十分麻烦,更重
要的是对于单据套打更毫无优点可言。
  因此,我们决定自己设计一个报表设计器。

  仿照大家比较熟悉的数据窗口设计器,制作了一个汉化的动态数据窗口的设计器。而这个设计器本身就是用
一个动态数据窗口来实现的。其中最大的难点在于制作动态的对象(直线、文本、表达式),表达式的汉化、数
据源的选取等。动态对象可以create和modify解决。表达式的汉化则需要提取字段的汉字和分解表达式,汉字的
提取可以从后台的汉字标识中获得,或者从输入和查询的数据窗口中去查找,分解表达式就需要有很强的语法分
析能力。至于数据源就有可能是前台已下载的或正输入的数据,对这种数据我们采用了共享方式,减少对后台的
操作。另外一种数据还在后台,需要打印之前自己下载。下载的条件我们也做了通用子程序。前一种方式不会把
所有的报表放在一起,便于管理和直接打印。

  本报表设计器没有调用PB外的任何资源, 包括API函数和OCX控件都未涉及, 所以可以在PB内放心调用。理
论上讲,本报表设计器还有不少可以改进的地方,只要有普遍的要求,本人都将努力去实现,各位朋友有什么建
议和要求,烦请拨冗赐教。

  调用接口方法:

  需要把以下8个表
  (1)report_chinese_to_english(自定义函数中英文名称)
  (2)report_cond(后台报表当前打印条件)
  (3)report_field(后台报表所选字段)
  (4)report_fromwhere(后台报表所选关联)
  (5)report_func(标准函数中英文名称)
  (6)report_table(后台报表中需访问的表或视图的中英文名)
  (7)report1(报表登记)
  (8)report2(报表对象)

  用数据管道导入你的数据库中(如使用多个数据库时,只要导入其中一个数据库即可,调用报表之前一定要
连接上此数据库),对于只使用前台数据源的情况第2、3、4、6个表也可不需要。

(一)后台数据源调用接口:

  需要在report_table中输入你所需要用来打印的表或视图名,本系统没有自动从系统中取表名是考虑到并不
是所有的表都可以让用户去打印,比如说有的用户密码表并无加密措施;另一个原因是不同的后台系统表提取信
息也不能完全通用,所以这里要求你自己手工输入,字段的名称则会自动提取,但你必须在建表时加上中文标识。

(1)后台数据源报表设计接口代码举例:
  str_rpt lstr_rpt//定义传递参数的结构
  lstr_rpt.window_mdi=w_main//w_main是应用的多文本主窗口
  lstr_rpt.transation=sqlca//连接事务对象名称,有多个连接的情况只传递report表所在的连接
// lstr_rpt.uservar="系统名称='"+ls_sysname+"',操作员='"+ls_operator+"'"//可选,多个变量之间用逗号隔开
  opensheetwithparm(w_report_manage,lstr_rpt,w_main,0,layered!)//打开报表登记窗口

(2)后台数据源报表预览及打印接口代码举例:
  str_rpt lstr_rpt//定义传递参数的结构
  lstr_rpt.window_mdi=w_main//w_main是应用的多文本主窗口
  lstr_rpt.transation=sqlca//连接事务对象名称,有多个连接的情况只传递report表所在的连接
// lstr_rpt.uservar="系统名称='"+ls_sysname+"',操作员='"+ls_operator+"'"//可选,多个变量之间用逗号隔开
  opensheetwithparm(w_report_print,lstr_rpt,w_main,0,layered!)//打开报表预览选择窗口

(二)前台数据源调用接口:

  需要在输入和查询的数据窗口字段中存在“字段名_t”标识文本,例如数据窗口中有code字段,则要有
code_t(.text=编码)文本,或者code.tag为编码也可。

(3)前台数据源报表设计接口代码举例:
  str_rpt lstr_rpt//定义传递参数的结构
  lstr_rpt.window_mdi=w_main//w_main是应用的多文本主窗口
  lstr_rpt.transation=sqlca//连接事务对象名称,有多个连接的情况只传递report表所在的连接
  lstr_rpt.userdw=dw_2//主数据窗口,报表的记录来源取决于它
// lstr_rpt.userdw2=dw_1//可选,数据窗口2,如表头数据窗口
// lstr_rpt.userdw3=dw_3//可选,数据窗口3,如表尾数据窗口
// lstr_rpt.uservar="系统名称='"+ls_sysname+"',操作员='"+ls_operator+"'"//可选,多个变量之间用逗号隔开
// lstr_rpt.window_name="window_name"//可选,对于一个dw在多个window中使用,打印的报表不同时起筛选作用
  opensheetwithparm(w_report_manage,lstr_rpt,w_main,0,layered!)//打开报表登记窗口

(4)前台数据源报表预览接口代码举例:
  str_rpt lstr_rpt//定义传递参数的结构
  lstr_rpt.window_mdi=w_main//w_main是应用的多文本主窗口
  lstr_rpt.transation=sqlca//连接事务对象名称,有多个连接的情况只传递report表所在的连接
  lstr_rpt.userdw=dw_2//主数据窗口,报表的记录来源取决于它
// lstr_rpt.userdw2=dw_1//可选,数据窗口2,如表头数据窗口
// lstr_rpt.userdw3=dw_3//可选,数据窗口3,如表尾数据窗口
// lstr_rpt.uservar="系统名称='"+ls_sysname+"',操作员='"+ls_operator+"'"//可选,多个变量之间用逗号隔开
// lstr_rpt.window_name="window_name"//可选,对于一个dw在多个window中使用,打印的报表不同时起筛选作用
  opensheetwithparm(w_report_print,lstr_rpt,w_main,0,layered!)//打开报表预览窗口

(5)前台数据源报表打印接口代码举例:

  str_rpt lstr_rpt//定义传递参数的结构
  lstr_rpt.window_mdi=w_main//w_main是应用的多文本主窗口
  lstr_rpt.transation=sqlca//连接事务对象名称,有多个连接的情况只传递report表所在的连接
  lstr_rpt.userdw=dw_2//主数据窗口,报表的记录来源取决于它
// lstr_rpt.userdw2=dw_1//可选,数据窗口2,如表头数据窗口
// lstr_rpt.userdw3=dw_3//可选,数据窗口3,如表尾数据窗口
// lstr_rpt.uservar="系统名称='"+ls_sysname+"',操作员='"+ls_operator+"'"//可选,多个变量之间用逗号隔开
// lstr_rpt.window_name="window_name"//可选,对于一个dw在多个window中使用,打印的报表不同时起筛选作用
  lstr_rpt.condition='直接打印'//不再显示预览窗口而直接打印
  openwithparm(w_report_print,lstr_rpt)//这里不使用opensheetwithparm才不会出现屏幕闪动

-注意事项-

  (1)sample65.exe为pb6.5下的版本,sample70.exe为pb7.0下的版本。
  (2)对于打开窗口不能使用opensheet的应用,我们将提供另外的版本,接口代码改为open即可。
  (3)对于调用report.pbd采用incremental编译时此报表部分是不会出错的,如果采用full编译时,会出现很
多错误,你可以不理关于report的错误,等其它错误都修改好了之后再进行incremental编译另外一种方法就是我
们提供一个简单的report.pbl给你,在编译时把包含文件report.pbd先换成report.pbl,等其它都通过了之后再
把report.pbl换成report.pbd。

-问题解答-
  (1)为什么不回信?
   一般而言,我们会在24小时以内回信给您,如果未收到有以下几种情况:地址拒收,信箱已满,来信编
码无法辩识。

  (2)Error: unsolvable external  w_zkl_begin  when   linking  reference at  line 11 in 
       open event  of object   report.
    出错原因: 没有在应用report属性的搜索路径中加入c:\report\report.pbd;
       和c:\report\saledemo.pbd

  (3)使用dba, sql连不上report.db
    (I)  请把report.log文件删除或把c:\report目录删除重新解开sample.exe.
    (II) 请在\report目录下运行
    (III)可能你的机器上目前有两个或两个以上版本的PowerBuilder, 这样要将PB6.5下或sqlanywhere
下w*.dll和db*.exe, 拷入\report目录下。

  (4)如何在report属性中加入搜索路径c:\report\report.pbd以及c:\report\saledemo.pbd。
    请在Application 中的 Library search path 输入窗口中直接手工输入,不要用Browse 查找文件

  (5)显示的错误太多了,有差不多30条
    在PB7.0下调用sample65.exe的版本。

  (6)打印纸张不是我所设定的。
    请你看一下在你的PB下通常情况设定打印纸张时,某一类型的打印机是否支持那个打印纸的设定。如有
的用户使用Panasonic KX1211打印机,将打印机设定为Epson 1600K时,设定打印纸为窄行打印纸就无论如何
都不对,将打印机设定为Epson LQ-2500则可以。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -