自调至批量组,工作内容涉及批量报表的展示.而公司展示报表的工具采用的是
oracle sqr,学习SQR成为工作之需.
因近期诸事牵扯精力.虽说从1个月前有所了解SQR.仅止于偶尔走马灯看过几页SQR手册.任何实际工作没有进行过.这几日就把SQR手册及SQR实际代码参考着学习.基本实现了工作的需要.当然在其过程中同事.给了我莫大的帮助.免去众多
无谓的变路与歧途.节省了时间.谢谢你们.
SQR和ORACLE PLSQL差不多.如果你有前期丰富的编程经验.富有严密的逻辑
思维能力.相信学习一途风光.平坦顺心.
少说多作.先放一些SQR代码.
上述代码.主体部分由我完成.细节格式同事协助调试完成.我感觉SQR的格式调试颇费精力.昨天晚上一个小问题我就花费了一个多小时.才搞定.原来是过程之间的变量不一致导致.
SQR也会把某些公有的功能预先编写在一些库文件中,这样以后在编写自己的SQR脚本时,就可以直接调用这些库文件中的方法(或叫过程),非常方便.类似于JAVA的公有类或者ORACLE PLSQL的 PACKAGE 的变量类型.
sqr是原始的源码文件(其实就是txt文件,不过它的扩展名是.sqr),由ORACLE自己的编译工具sqr.exe编译后.会产生同名但扩展名为.sqt的文件.此时直接用运行工具sqrt.exe运行sqt文件.就会产生指定的后缀名为.LIS报表文件
上述SQR运行产生的报表文件如下:
oracle sqr,学习SQR成为工作之需.
因近期诸事牵扯精力.虽说从1个月前有所了解SQR.仅止于偶尔走马灯看过几页SQR手册.任何实际工作没有进行过.这几日就把SQR手册及SQR实际代码参考着学习.基本实现了工作的需要.当然在其过程中同事.给了我莫大的帮助.免去众多
无谓的变路与歧途.节省了时间.谢谢你们.
SQR和ORACLE PLSQL差不多.如果你有前期丰富的编程经验.富有严密的逻辑
思维能力.相信学习一途风光.平坦顺心.
少说多作.先放一些SQR代码.
#define addtlsetup #include 'Rptstub.lib' #include '{libpath}tkit_batchstartup.inc' #include '{libpath}tkit_rptheader.inc' #include '{libpath}tkit_queappl.inc' #include '{libpath}tkit_vars_opts.inc' #include '{libpath}tkit_Sqrfunc.inc' !---------------------------------------------------------------------------------------------------------- !开发日期:2011-12-12 !开发人员:翟勋杨 !功能描述:二期【久悬户转营业外收入清单,调用存储过程和产生报表 !久悬户转营业外收入清单SQT:RDP_DORMTOOUTINCOME.SQT ! !修改日期: !修改人员: !---------------------------------------------------------------------------------------------------------- !报表显示布局的初始化 begin-setup Declare-layout batch-land rientation=landscape left-margin=0 top-margin=0 max-lines=60 max-columns=180 end-declare end-setup Begin-Heading 5 name = myHeading print $filename (2,35) BOLD center Let $Global-HaveIWrittenAPage = 'Y' print '─' (+1,2,84) fill Print '提交日期:' (+1,118) Print &FmtdEffDate (0, 0) print '─' (+1,2,84) fill End-Heading !报表表头的初始化 begin-procedure outsideheading print $filename (0) center print '─' (+1,2,84) fill position (+1) let $bankorg_name = '机构名称:'|| $bankorgname print $bankorg_name (,2) Print '提交日期:' (,118) Print &FmtdEffDate (0, 0) print '─' (+1,2,84) fill !介质号,账号,户名,产品大类,产品小类,状态 转营业外输入日期 ,金额 position (+1) print '介质号' (,2,19) print '账号' (,23,20) print '户名' (,45) print '产品大类' (,90,10) print '产品小类' (,100,10) print '状态' (,120,8) print '转营业外收入日期' (,130,10) print '金额' (,142,30) print '─' (+1,2,84) fill end-procedure begin-procedure osi-main Move 'In OSI-Main' To $Global-ProcName !---------------- 获取定义报表输出路径需要的数据---开始--------------------- do Get-The-PostDate($dt) move $dt to $dt 'YYYYMMDD' do GET-APPL-NAME($filename) Do Get-Bank-Option('RPTT',$Len) !---------------- 获取定义报表输出路径需要的数据---结束--------------------- do selectdiffbankorg Let $QueApplChkpt = 'Report Complete' Let $QueApplRc = 0 Do Final-QueAppl-Update move 'Done OSI-Main' To $Global-ProcName end-procedure begin-procedure selectdiffbankorg begin-select count(*) &rownums !from osibank.acctinactprocess from osibank.rpt_acctinact_process end-select if &rownums = 0 alter-report heading = myHeading !改变页眉 let $out = $Len || $dt || '\' || $QueNbr || '\' || $filename || '.LIS' NEW-REPORT $out print '没有符合条件的数据' (+1,) center else !以银行分支机构分组 begin-select distinct p.branchorgnbr &a () ON-BREAK PRINT=NEVER AFTER=NP($a) save = $a from OSIBANK.acctinactprocess p where p.state='TINC' end-select end-if end-procedure !文件输出路径、文件名设定 BEGIN-procedure NP($a) do GETBANKNAME($a) do selectdifforg($a) !只打印不同银行分支机构的报表信息 let $out=$_Len||$_dt||'\'||$a||'_'||$_filename|| '.LIS' use-procedure before-page = outsideheading NEW-REPORT $out end-procedure BEGIN-PROCEDURE GETBANKNAME($A) begin-select o.orgname &bankorgname move &bankorgname to $_bankorgname FROM ORG o,branch b WHERE o.ORGNBR = b.orgnbr and b.orgidnbr=$A end-select END-PROCEDURE begin-procedure selectdifforg($a) begin-select position (+1) p.mediumid &mediumid move &mediumid to $mediumid print $mediumid (,2,19) to_char(p.acctnbr) &acctnbr move &acctnbr to $acctnbr print $acctnbr (,23,20) p.orgname &orgname move &orgname to $orgname print $orgname (,45) p.mjaccttypcd &mjaccttypcd move &mjaccttypcd to $mjaccttypcd print $mjaccttypcd (,90,10) p.mjmiaccttypcd &mjmiaccttypcd move &mjmiaccttypcd to $mjmiaccttypcd print $mjmiaccttypcd (,100,10) p.state &state move &state to $state print $state (,120,8) p.totindate &totindate move &totindate to $totindate 'YYYY-MM-DD' print $totindate (,130,10) p.accttotalamt &accttotalamt move &accttotalamt to $accttotalamt 88,888,888,888,888.88 print $accttotalamt (,142,30) let #count=#count+1 let #accttotalamt=#accttotalamt + &accttotalamt !from osibank.acctinactprocess p from osibank.rpt_acctinact_process p where p.state='TINC' and p.branchorgnbr=$a end-select print '─' (+1,2,84) fill move #count to $count 999,999,999 let $co ='总记录数:' || $count print $co (+1,2) move 0 to #count move #accttotalamt to $accttotalamt 999,999,999,999.99 let $totalamt ='总金额:' || $accttotalamt print $totalamt (,100) end-procedure begin-footing 3 print '─' (,2,84) fill !page-number () (+1,126) '当前页为第' '页,' page-number (+1,126) '当前页为第' '页,' last-page () '共' '页。' print '打印时间:' (,+1) let $printDate = datenow() move $printDate to $printDate 'YYYY-MM-DD' print $printDate (,) end-footing begin-procedure OSI-Startup End-procedure |
上述代码.主体部分由我完成.细节格式同事协助调试完成.我感觉SQR的格式调试颇费精力.昨天晚上一个小问题我就花费了一个多小时.才搞定.原来是过程之间的变量不一致导致.
SQR也会把某些公有的功能预先编写在一些库文件中,这样以后在编写自己的SQR脚本时,就可以直接调用这些库文件中的方法(或叫过程),非常方便.类似于JAVA的公有类或者ORACLE PLSQL的 PACKAGE 的变量类型.
sqr是原始的源码文件(其实就是txt文件,不过它的扩展名是.sqr),由ORACLE自己的编译工具sqr.exe编译后.会产生同名但扩展名为.sqt的文件.此时直接用运行工具sqrt.exe运行sqt文件.就会产生指定的后缀名为.LIS报表文件
上述SQR运行产生的报表文件如下:
久悬户转营业外收入 ──────────────────────────────────────────────────────────────────────────────────── 机构名称:达州市商业银行文华街支行 提交日期:2014-08-31 ──────────────────────────────────────────────────────────────────────────────────── 介质号 账号 户名 产品大类 产品小类 状态 转营业外收 金额 ──────────────────────────────────────────────────────────────────────────────────── **00586 **00586 不动户 CK 2010 TINC 2013-08-21 1,411.20 *a3*00425 *a3*00425 sb饰c程 CK 2010 TINC 2014-08-28 10.94 201*a3*0041500616 201*a3*0041500616 ab CK 2000 TINC 2014-08-28 3.24 *a3*004aaa1c06c7 *a3*004aaa1c06c7 xd CK 2010 TINC 2014-08-28 667.36 632xa16dcs50c41 632xa16dcs50c41 abc CK 2010 TINC 2014-08-28 148.57 ──────────────────────────────────────────────────────────────────────────────────── 总记录数: 5 总金额: 621,640.91 ──────────────────────────────────────────────────────────────────────────────────── 当前页为第1页,共1页 打印时间:2011-12-16 |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9240380/viewspace-713450/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9240380/viewspace-713450/