|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622 。
您需要 登录 才可以下载或查看,没有帐号?注册
x
皮兄,我来给你增增人气.
REPORT模组使用
report模组为宝盛ERP的报表打印模组,其根据格式不同,共分五个模组类别:
reporta1.i 单档多笔连续报表模组
reporta2.i 头尾档多笔连续报表模组
reporta3.i 头尾档多笔一页一张报表模组
reporta4.i 头尾档多笔两页一张报表模组
reporta5.i 单档单笔连续报表模组
宝盛的report模组分两个部分,一个是报表的查询界面模组,其模组名为report.i;其二是打印模组,就是上面提到的五个模组,其逻辑为:
由report.i生成查询条件的窗口,并在其中输入欲打印的条件 ==> 由其它打印模组根据条件进行打印
本文主要根据reporta1.i以程序syxx710来进行说明.
第一:报表打印的业务逻辑 报表打印大致遵循以下业务逻辑
1 确定需要打印的主表
2 确定需要打印的字段
3 确定需要打印资料的查询条件
4 将资料从表中取中并显示
用select 语句表示既为 :
select 字段名 from 表名 where 条件
第二:查询界面report.i在用报表模组打印资料前,最终的筛选条件所使用的变量将在查询界面里面定义
如下查询界面
该查询界面只有一个查询条件,就是部门代号.
首先,定义一个这样子的form
FORM
"列印条件" COLON 38
SKIP(2)
/* 此处为自定义的部门代号的查询变量,该变量在程序syxx710里面进行声明 */
SYS77_WHSE COLON 40
SKIP(4)
/* 此处为输入设备的定义,该变量定义于各打印模组中 */
DEVICE AT ROW 15.3 COLUMN 6 DVNAM NO-LABEL '输出设备' COLON 77
WITH FRAME A1 THREE-D SIDE-LABELS NO-BOX ROW 2.4 COLUMN 1 WIDTH 91 FONT 0.
定义完form后再写主程序syxx710
其源代码如下:
{share.i} /* 该处为常用变量的引用,一般加上为宜 */
/* 该处定义我们需要的查询变量”部门代号”,该变量在form文件中使用,在打印模组中也需要使用,所以定义为shared var 类型 */
DEF NEW SHARED VAR SYS77_WHSE like dept_id.
/* 此处引用 report.i模组 */
{report.i
&qfld = "SYS77_WHSE" /* 该处定义查询条件所使用的变量,此处为自定义的部门代号 */
&qflds = " "
/*此处定义进入查询时所执行的程序,既按下F2时所执行的程序 */
&process = "RUN SYXX711.P."
&batchyn = "YES" /* 定义是否为批次作业 */
&begin-term = " "
&form-fle = "SYXX710" /* 该处为所引用的form文件,既我们刚才定义的form表单 */
&b1-button = " "
&defbtn-pos = " "
&sub-menu = " "
&menu-item = " "
&def-trigger = " "}
该程序的意思为: 我查询的报表使用的是syxx710.F这个表单文件,查询时的筛选条件为sys77_whse,查询后使用reporta1.i模组将结果打印出来时.
第三:查询结果的打印 syxx710这个表单提交后,将会调用syxx711.p这个程序来进行打印操作,而这个程序又将调用reporta1.i这个打印模组.
syxx711.p的源代码如下:
{share.i}
{reporta1.i
/* 此处用来定义模组所使用的变量,这里重申刚才在report.i中定义的变量 sys77_whse ,如有如需使用其它变量,亦可在这里定义*/
&def-var = "DEF SHARED VAR SYS77_WHSE like dept_id."
&prog-id = "syxx711" /* 此处为在报表中显示的程序名称,见下表处 */
&cop-nam = "'上海规矩仪器科技有限公司'" /* 此处为公司名称 */
&rpt-nam = "'员工资料档'" /* 此处定义报表名称 */
&rpt-typ = " "
&width-type = "3" /* 该处定义纸张宽度类型 */
&need-default-head = "yes" /* 定义是否打印报表的头部信息*/
&page-size = "66" /* 此处为一页所显示的行数 */
&file = "emp" /* 此处定义打印报表所使用的主档资料 */
/* 该处定义对主档资料的查询条件,既select 语句后的where子句 */
&sel-term = "WHERE EMP_DEPT BEGINS SYS77_WHSE"
&break-term = " "
/* 这里定义的是在要报表中显示出来的字段或变量*/
&dis-fld = "EMP_NO EMP_NAM EMP_DEPT DEPT_NAM EMP_STA"
&pg-top = " "
&form-fld = "EMP_NO EMP_NAM EMP_DEPT DEPT_NAM EMP_STA"
/* 页尾要显示的资料,如果有多笔记录的话,将在页面的最底端显示这里定义的东西 */
&pg-bot = "仍有次页...'"
&begin-term = " "
&bfr-view-pg-top-bot = " "
/* 这里定义在报表显示之前所进行的操作,因为这里我们需要显示部门的名称,所以在这里对员工所属的部门名称进行查询,另外我们需要查询的结果是在职的员工,所以在这里把已离职的给过滤掉. */
&bfr-disp = " FIND DEPT WHERE DEPT_ID = EMP_DEPT NO-LOCK NO-ERROR.
IF EMP_STA <> '1' THEN NEXT. /*过滤已离职的员工 */
"
&aft-disp-bfr-down = " "
&aft-disp = " "
&end-term = " "
&last-page-hide-pg-bot = "yes" /* 在最后一页是否还显示刚才定义的&pg-bot,如此定义后,将在最后一页中不显示 “仍有次页...”这行字 */
&aft-output-close = " "
/* 此次定义供 &sel-term 使用的变量名,在&sel-term中使用的变量,一定要在该处进行定义 */
&sel-var = "SYS77_WHSE"
&sel-var-form= "SYS77_WHSE"
}
查询结果如下
印表日期: 2008/02/20 上海規矩儀器科技有限公司 報表程式: syxx711
印表時間: 11:05:16 ========================
印表人員: admin 員工資料檔 頁 次: 1
員工職號 員工姓名 部門 部門名稱 狀態
-------- -------- -------- ---------- ----
SP02001 A130 資訊中心 1
SP02004 吳林鋒 A130 資訊中心 1
SP02007 陳璇 A130 資訊中心 1
篩選條件
========
部門代號: a130
第四:其它 1:输入出设备的类型在sysa090里面的”打印组别”定义 ,p代表printer, w代表 word, e代表 excell
2:将自定义程序挂入作业流程,使用程序sysa460
3:程序所属目录可在sysa560中查询,然后将其在sysa090里面的所属目录维护既可.
4:程序编译使用程序sysa530进行,编译时包括子程序一并编译,并且该子程序需在sysa090里面定义.
5:程序权限设定通过sysa080进行.
[ 本帖最后由 readfor 于 2008-2-25 15:52 编辑 ] |
-
-
report.pdf
177.54 KB, 下载次数: 23, 下载积分: 努力值 -5 点
该文pdf档
|