版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、. 第四十章 REPORT函数本章介绍用于REPORT函数的语句,要求你已熟悉INFORMIX-SQL ACE报表语法。报表的格式有许多不同的风格,它可以象打印的邮件标签一样简单,也可以象金融报告一样复杂。REPORT函数和FUNCTION、GLOBAL、MAIN函数不同,REPORT函数有一些特殊的,只在报表格式化中有效的语句。REPORT函数的语法列在上图。保留字REPORT后跟报表名,这与FUNCTION保留字后跟函数名一样。REPORT和FUNCTION的区别是它只用于报表,报表各部分的保留字列
2、在上图。注意,除了FORMAT,其它部分都是可选项。每个报表都必须有FORMAT部分,这些都分在下面详细描述,它们必须按顺序出现:l l DEFINE:用于定义报表中用到的变量,它与其它类型函数中的DEFINE语句用法一样。l l OUTPUT:OUTPUT部分用于调整报表中的边界,若在START REPORT语句中没有写明报表目标文件,可从这里直接输出到报表目标文件。l l ORDER BY:若在报表驱动中定义的游标没有ORDER BY,可以在REPORT函数中加上。l l FORMAT用于控制报表中信息怎样打印,FORMAT部分由控制块和动作语句组成,这些控制块与INFORMIX-SQL产
3、品中的ACE相同。DEFINE部分的接收变量REPORT函数从报表驱动中的OUTPUT TO REPORT语句接收程序变量。REPORT函数必须有与传过来的变量相同类型的接收变量,如上例中是r_customer.*接收变量(如r_customer)必须是简单变量,下面是有效的接收变量名:l l report cust_list(custall)l l report cust_list(pr_cust)l l report cust_list(wholerow)下面是无效的接收变量名:l l report cust_list(gr_customer.*)l l report cust-list(
4、gr_customer.frame thru gr_customer.phone)DEFINE部分也可用于说明其它用到的变量,这包括计数器、求和、求百分比等所需的变量。在PEPORT中的OUTPUT部分可以改变页的输出格式和输出目标。在OUTPUT部分还可以重新分配页边界和页长,若没有使用OUTPUT中的可选项,它们都保留缺省值。这些选项的语法列在上面。REPORT的输出可以在OUTPUT中指明(若在START REPORT TO语句中没指明的话)。输出可以指向:l l 打印机l l FILE“文件名”l l PIPE“程序名”若START REPORT TO语句说明了一个报表目标,则忽略OU
5、TPUT中的REPORT TO语句。当OUTPUT中有TOP OF PAGE,INFORMIX-4GL在报表中将进行换页,而不再换行。大部分打印机用“L”作换行符(若不清楚打印机的字符集,可查看打印机手册)。OUTPUT必须放在DEFINE部分之后。若REPORT函数接收的数据没有排序,但想在报表输出时排序,则可以用ORDER BY来实现。若有ORDER BY部分,必须放在OUTPUT部分之后。 ORDER BY语句作两件事:l l 对从INFORMIX-4GL报表驱从动接收过来的数据行进行排序。l l 在INFORMIX-4GL组控制块中进行排序(如BEFORE GROUP OF和
6、GROUP OF)。EXTERNAL选项用于说明REPORT函数接收的数据已经排序。当报表驱动中声明的游标已有ORDER BY子句时要用这个保留字。若不用这个EXTERNAL选项,REPORT函数中的数据会重排序,这样报表会执行得很慢。若使用分组控制块时一般需要用EXTERNAL子句。FORMAT部分是报表处理的核心,它用于控制什么时候在报告的什么地方、怎样及打印些什么信息。FORMAT部分有七个控制块,控制块回答了什么时候打印的问题。现归纳总结如下:l l FIRST PAGE HEADER是执行的第一个控制块,一般用于打印标题和报表头。l l PAGE HEADER在每页顶部做的动作,若没
7、有FIRST PAGE HEADER,在第一页上也打印PAGE HEADER的信息。l l PAGE TRAILER描述在每页页尾所应作的动作。包括第一页的页尾。l l ON EVERY ROW控制传给报表的数据的格式。l l ON LAST ROW最后执行的控制块,通常用于控制打印合计等汇总数据及其格式。l l BEFORE GROUP OF在报表中有分组信息时用。接收过来的数据必须是在SELECT语句中用ORDER BY 子句或在REPORT 函数中用ORDER BY排序过的,它一般用于对每个组打印标题。l l AFTER GROUP OF用于描述一组数据处理后要做的动作。在FORMAT部
8、分只有五个有效的语句:l l PRINT用于在报表显示信息。这些信息可以通过变量显示,也可以通过计算或引号中的字符进行显示。一个PRINT语句输出一行。FORMAT部分可以放置任意多个PRINT语句。l l SKIP这个语句用于在报表中跳一行或跳到下页顶部,其语法为:Skip 整数 linesSkip整数 spacesSkip to top of pagel l PRINT FILE用于在报表中显示正文文件中的内容,其语法为:Print file “文件名”其中文件名是一个ASCII文件的全路径名。l l PAUSE引起暂停,直到用户按RETURN键。这个语句只有在报表输出到屏幕时有用,且一般
9、放在PAGE TRAILER或AFTER GROUP OF控制块中。l l NEED若数据超过了当前页能显示的行数,余下的行将在下一页显示,其语法是:need 整数lines但在PAGE HEADER或PAGE TRAILER控制块中不能用。报表中有保留字和内嵌函数,其中许多保留字不但在REPORT函数中有效,在普通的INFORMIX-4GL函数中也有效。上图中列出的表达式和嵌入函数常用于前页的PRINT语句中,这些保留字在下面详细解释:CLIPPED:去掉字符尾部的空格。USING:用于格式化的数字值。COLUMN:后跟要打印的字段号,在指定位置打印该字段的值。DATE:以“SUN Jul
10、1 1990”格式返回当前日期的字符串。LINENO:报表当前打印的行号值。PAGENO:报表当前打印的页号值。SPACES:返回空串,它与引号引起来的空格一样。TIME:以“hh:mm:ss”格式返回当前时间的字符串。TODAY:以DATE类型返回当前日期,可以用USING操作符格式化该日期。CURRENT:返回当前的日期和时间的DATETIME值。ASCII:求整数的ASCII 字符值。它可以在打印处理时发送控制序列。WORDWRAP:当字符串在一行放不下时,字符串自动分段,折到报表的下一行打印。有效的内嵌函数如下:LENGTH (expr)当expr是字符常量、CHAR变量或数据库字段时
11、,返回expr不含尾随空格的字节数。COUNT(*):返回满足SECECT语句的总行数。AVG(expr):返回满足WHERE子句条件的行中的expr的均值,它一般放在BEFORE或AFTER控制块。MAX(expr):返回expr的最大值。MIN(expt):返回expr的最小值。PERCENT(*):计算COUNT值占报表总行数的比率,一般放在BEFORE或AFTER控制块。SUM(expr):返回expr的总数,其中expr是数字类型值。上面的所有函数除了LENGTH,都可以用GROUP选项,在BEFORE和AFTER控制块中检索小计。例如:GROUP COUNT(*)、 GROUP M
12、AX(expr)或GROUP SUM(expr)。DATE函数可以把日期值分成不同的部分,具体描述如下:DAY(日期值):返回给定日期值的月中的某一天,如131。MONTH(日期值):返回给定日期值的月份,如112。YEAK(日期值):返回给定日期值的年份,如112。WEEKDAY(日期值):返回表示日期值的整数星期值,其值范围是06。0表示星期天,1表示星期一,等等。MDY(expr1, expr2, expr3):用三个表达式计算表示月、日、年的整数并返回其DATE类型值。如MDY(“7”,“1”,“1990”)下页是报表的例子,它用了报表驱动和REPORT函数。report2.4gl
13、160;MAIN作为报表驱动器。START、OUTPUT和FINISH REPORT是所须的函数。由FOREACH循环把满足SELECT语句的数据取出来,并由OUTPUT语句传给报表。maindefine p_customer record like customer.* declare q_curs cursor for select fname, lname, company from customer start report cust_listforeach q_curs into p_customer.fname, p_customer.lname, p_pany
14、 output to report cust_list(p_customer.fname, p_customer.lname,p_pany)end foreach finish report cust_listend main REPORT函数接受OUTPUT语句传来的值,用FORMAT部分进行格式化。report cust_list (fname, lname, company)define fname, lname char(15), company char(20)formatpage headerprint column 25, "CUSTOME
15、R LIST"skip 1 lineprint column 24, "August 26, 1986"skip 2 linesprint "Last Name",column 26, "First Name", column 50, "Company"skip 1 lineon every rowprint lname, column 26, fname,column 50, companypage trailerprint "Confidential Information",co
16、lumn 55, pageno using "Page #" end reportreport3.4gl database stores MAIN函数是一个报表驱动器。检索的数据是按city排序的。 maindefine p_customer record like customer.* declare q_curs cursor for select lname, company, city, statefrom customerorder by city start report cust_list foreach q_
17、curs intop_customer.lname,p_pany,p_customer.city,p_customer.state output to report cust_list(p_customer.lname, p_pany, p_customer.city, p_customer.state)end foreach finish report cust_list end main report cust_list (lname, company, city, state) definelnamechar(15), company
18、 char(20),citychar(15), statechar(2) order external by cityformaton every rowprint lname,column 18, company,column 40, city,column 60, stateafter group of cityskip 2 lines end reportreport4.4gldatabase storesMAIN函数是一个报表驱动器。但这里的SELECT没有排序。maindefine p_customer record like customer.*declare q_curs cur
19、sor for select lname, company, city, state from customerstart report cust_listforeach q_curs into p_customer.lname,p_pany,p_customer.city,p_customer.stateoutput to report cust_list(p_customer.lname,p_pany,p_customer.city,p_customer.state)end foreachfinish report cust_listend main report cust_li
20、st (lname, company, city, state)definelnamechar(15), company char(20), citychar(15), statechar(2)order by city由于数据检索时没有排序,所以在报表里进行排序。formatpage headerprint column 25, "CUSTOMER LIST"skip 1 lineprint column 24, "August 26, 1986"skip 2 linesprint "Last Name",column 18, &q
21、uot;Company",column 40, "City",column 60, "State"skip 2 lineson every rowprint lname,column 18, company,column 40, city,column 60, stateafter group of cityskip 2 linespage trailerprint "Confidential Information",column 55, pageno using "Page #"end reportr
22、eport6.4gl database stores MAIN函数是一个报表驱动器。q_curs游标从多个表检索数据。maindefinep_items record like items.*, p_stock record like stock.* declare q_curs cursor forselectitems.stock_num, items.manu_code, quantity, description, unitfrom items, stockwhere items.stock_num = stock.stock_num and
23、items.manu_code = stock.manu_code and items.stock_num = 5 start report qty_rep2 foreach q_curs intop_items.stock_num, p_items.manu_code, p_items.quantity, p_stock.description, p_stock.unit output to report qty_rep2(p_items.stock_num,p_items.manu_code,p_items.quantity,p_stock.description,p_stock.unit) end foreach finish report qty_rep2end main report qty_rep2 (stock_num, manu_code, quantity, descripti
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 残联开展全国助残日走访慰问活动总结(5篇)
- 期中考试家长会发言稿15篇
- 临沂电商整治方案
- 空调营销方案
- 新疆行政职业能力测验模拟34
- 新课标理念下小学足球大单元整体设计的思考与实践
- 本土文化资源融入幼儿园游戏活动的路径
- 广东公务员面试模拟9
- 河南面试模拟48
- 贵州公务员面试模拟13
- 人教课标解析新时代教育理念
- 2024年新北师大版七年级上册数学课件 第四章 4.1 第1课时 线段、射线、直线的相关概念
- 2025届陕西省西工大附中高三冲刺模拟物理试卷含解析
- 品牌授权收费合同模板
- DB41-T 2689-2024 水利工程施工图设计文件编制规范
- 2024年刑法知识考试题库及答案(全优)
- 四年级上册信息技术人教版第10课设动作与超链接(教案)
- 空气动力学数值方法:有限体积法(FVM):离散化技术与数值通量
- 合作安全责任协议书范本
- 2024-2030年中国船舶电子导航系统行业市场发展趋势与前景展望战略分析报告
- 生产管理培训课件
评论
0/150
提交评论