2014-05-31 Created By BaoXinjian
1. Repot 对象
(1).数据模型对象
查询、组、列、链接、用户参数
(2).布局对象
重复帧、帧、领域、样板、锚、
(3).参数表单对象
参数、字段、样板
(4).PLSQL对象程序单元
(5).触发器
(6).外部的Library库
2. Report Styles
Tabular Report: 基本的类型报告,没列对应于从数据库中选择的一个列
Group Above Reports:
Group Left Reports:
Form-Like Reports:
Form Letter Reports:
Mailing Label Reports:
Matrix Reports:矩阵报表
3. 数据模型 DataModel
查询Query
组Groups
列(Formula、Summary、Placeholder Column)
连接(Data Link)
参数(System Paramters & User Paramters)
3.1. 查询(Query)
内部查询(SQL Query): 内部SQL,无法被其他Report所应用;
外部查询(Ref Cursor Query):应用Package中的Ref Cursor,可以作为共享,具体的SQL可以定义在Report或者定义在Package中;
单查询:Report只有一个Query;
多查询:Report存在多个Query,可以使互相关联的,也可以是不关联的;
相关的多查询:多个Query中相互关联,一般用于主从式报表,两者之间通过Datalink进行关联
不相关的多查询:Query之间不存任何关系,查询先后顺序由Query的顺序位置决定,先上后下,先左后右
3.2. 组(Group)
1.组的功能
(1).将一个查询的数据分成几个集合,每个结合称为组
(2).过滤查询数据,通过组过滤对应的查询结果
2.组的种类
(1).缺省组:建立Query时,自动产生Group
(2).用户定义组:用于三种情况产生分组报表&产生矩阵报表&产生子汇总
3.组过滤
允许有条件的选择由查询检索出来的数据,设定条件,过滤查询结果
(1).Oracle Report封装的过滤器
First Filter:显示组内前N条数据
Last Filter:显示组内后N条数
(2).用户定义过滤器
该过滤器通过编写PLSQL建立
4.组的层次结构
组的层次结构决定了在缺省布局对象中组的顺序
如果没有DataLink,组由Query的位置决定,自左向右,自上而下
如果存在DataLink,组由Query的主从关系决定
3.3. 列(Database、Formula、Summary、Placeholder Column)
1.缺省列
为查询Select欲绝的每一项都建立一个列
2.用户定义列 - 公式列(Formual Column)
为该列定义一个计算公式,Ex: return :sal+nvl(:com,0)
按建立的位置,分为Group Level & Report Level
3.用为定义列 - 汇总列(Summary Column)
提供的计算函数有:总和、平均值、最大值、最小值,标准差,方差、计数,%总计
按建立的位置,分为Group Level & Report Level
重要属性:功能 、 源 、重设于
重设于:选择汇总的频率,是整个报表做一次汇总、每页做一次汇总、还是每个组做一次汇总
3.4. 连接(Data Link)
数据连接通过主键和外部键定义了两个Query之间的主/从关系
1.等值连接 & 非等值连接
2.SQL子句:Having & Start With & Where
3.条件:=、<、 >、 <=、 >、 >=、 <>、 Like、 Not Like
3.5. 参数(System Paramters & User Paramters)
1.系统参数(System Parameter)
系统默认参数,Oracle Report允许为每个报表修改标准运行设置
系统参数总共后11个
Ex: 打印的分数、货币表示方式、小数点表示方式、打印机设置、名字
2.用户参数(User Parameter)
自定义参数,该对象用于保存在运行时用户可以改变的值
在Select中代替列名字,条件,或者整个SQL
(1).引用方式 - 连接引用
i.用途:主要用于替换SQL语句或者PLSQL块中的一个值或表带式
ii.调用符号: :
iii.限制: 不能在Select中使用替换列名,不能在Form从句中使用连接引用
iv.例子
SELECT EMPNO, ENAME, SAL, COMM
FROM EMP
ORDER BY DECODE(:P_SORT, 1, EMPNO, 2, SAL);
(2).引用方式 - 置换引用
i.用途:用于替换Query Select中任何一部分
ii.调用符号: &
iii.限制: 不能在PLSQL块中使用
iv.例子
SELECT
&P_ENAME NAME, &P_EMPNO ENO
FROM &P_EMP;
3.值列表
用于用户输入参数时,自动弹出列表让用户选择
建立方式:静态值 & Select语句
4. Layout
5. 参数表单(Parameter Form)
当运行一个Report时,Oracle Report会弹出一个窗口
6 Oracle Report中的PLSQL
用于具体的数据库事物处理
可以是使用数据库操作语言(DML):Insert、Update和Delete操作
不支持数据库定义语言(DDL): Oracle Report提供了SRW.DO_SQL封装过程增加至Report中
(1).PLSQL异常处理
i. 用户定义的异常处理:自定义Exception,再Raise
ii.标准封装的异常处理:No_Data_Found / Too_Many_Rows / Invalid_Number / Zero_Divide / Others 等
iii.Oracle特有的异常类处理:Raise SRW.DO_SQL_FAILURE / SRW.INTEGER_ERROR / MAXROW_INERR /SRW.NULL_ARGUMENTS / SRW.PROGRAM_ABORT
(2). 可以使用的9中方式PLSQL结构块
PLSQL程序库(external libraries)
附件程序库(attached libraries)
程式单元(report program units)
报表触发器(report triggers)
组过滤器(group filters)
公式(formula)
验证触发器(validation triggers)
格式触发器(format triggers)
动作触发器(action triggers)
7. Oracle Report触发器
触发器可以分为三类:报表触发器、数据模型触发器、布局格式触发器
1.报表触发器
共有5个,分别在报表运行的不同阶段运行
可以执行的操作:调整报表的格式, 执行初始化任务, 访问数据库
(1).Before Parameter Form
时间点:显示运行参数表之前
用途: 存取并修改参数值、PLSQL全局变量
(2). After Parameter Form
时间点:显示运行参数表之后
用途:检验和修改参数值,如果运行出现问题,则返回至参数表
(3). Before Report
时间点:运行报表之前
用途:用于初始化参数,特别是触发Query中的SQL条件
(4). Between Pages
时间点:除去第一页外,每一页之前都会被触发
用途:用于页的格式化
(5). After Report
时间点:结束报表
用途:将报表输出至对应目录下或者Email,删除临时表,清除初始化处理
2. 数据模型触发器
(1). 公式列触发器
公式列中的代码必须返回给公式,此公式列可以为序列,在Report不显示
(2). 组过滤器
触发时间点在检索数据之后,显示数据之前,限制记录的出现与否,此功能也可以在Where子句中实行
例子:只显示1000条数据
(3). 验证触发器
在系统参数和用户自定义参数中编写验证触发器,如果参数不正确,则停止报表运行
验证触发器必须返回一个布尔值,如返回False,则光标停留在参数中
例子:按部门打印员工列表时,对输入参数部门号进行验证
3. 布局触发器
允许用户在报表运行时根据一定条件动态地修改布局对象的显示或隐藏
布局触发中不饿能够使用DML语句
例子:在工资单报表,只有主管可以看到工资明细
4. 动作触发器
在预览器中选中一个按钮时执行的PLSQL过程,可以动态调用另一报表或者实执行PLSQL程序
8. SRW包
Oracle Report提供的特殊的封装包,包括可在库中应用的参数、过程和异常处理
PLSQL块中可以应用SRW包的任何部分,但SRW只能在Oracle Report中调用,不能再其他工具(Forms Build)中使用
1. 用途
控制报表的运行
在运行时输出信息
初始化域对象
执行DDL语句 (建立/删除临时表)
调用用户接口
动态设置布局对象属性,(字体或者填充)
2. 常用的SRW包例子
9. 矩阵报表
建立举证报表必须满足四个条件
1. 单查询矩阵报表
2. 多查询矩阵报表
3. 觉有合计的矩阵报表
4. 矩阵间断式报表
10. 程序单元(Program Units)
11. 附加的程序库(Attached Libraries)
12. PLSQL程序库(External Libraries)
Thanks and Regards