Oracle[转]TEC1401.Report开发技术总括 – 第③章 使用Oracle Reports开发报表-创设一个分组报表(50%)

本文转自:http://blog.csdn.net/deepsea_allen/article/details/53900284

3.     设计报表布局的注意事项

1)     设计布局前的参数设置

点击菜单“工具”->“选项”->“标尺”

 

2)     在数据模型和布局模型的编辑撰写页面中的,能够点击菜单“视图”来摘取是不是出示标尺,网格等支持设计的面板,越发是“工具面板”一定要选取展现。

 

3)     最外层固定框的习性“打字与印刷对象在”必须设置为“第3页”。

4)     表头的“打字与印刷对象在”必须安装为“全体页”。

5)     要落到实处自动分页,必须将最外层的固定框或循环框“打字与印刷对象在”设置为“第2页”。

6)     能够在循环框外面加一个固定框,并将固定框的品质更改为“可变”,固定框的输出会随着循环框的岗位。

2.     设计布局

布局的效用是概念报表的格式,包罗数据文本及图片的职位和突显格式。

在布局模型编辑器上将报表布局分为几个区域:表头区域、表尾区域和重点区域,各地又分为主题和页边距。

Ø 表头区域 在报表每一页的上马展现3回,表头区域能够包蕴文本、图形、数据及其运算。

Ø 表尾区域 在报表每一页的结尾处显示三遍,表尾区域能够涵盖文本、图形、数据及运算。

Ø 主体区域 出现在表头和表尾之间,是报表的显要部分。当第二次进入1个新报表的布局模型编辑窗口时,所处的职位就对应着报表的关键性区域。主体区域包罗报表的要害文件、图形、数据及其运算。

宗旨布局对象:

在布局模型编辑器中,是通过定义和改动布局对象来促成的,Oracle
Reports中的基本布局对象有框架(Frames)、重复框架(Repeating
Frames)、域(Fields)、图像和文字(Boilerplate)、定位(Anchors)、按钮(Buttons)、OLE2对象、Oracle
Graphics对象。

1)     框架

框架用来围绕其余布局对象。多少个框架能够包涵别的布局对象,包罗别的的框架。框架的打字与印刷次数与它所环绕的靶子的打字与印刷次数一样,框架与记录毫不相关。

框架的首要用途:

l  把对象协会在一块儿,以管教在打字与印刷时它们之间的相对地点;

l  幸免覆盖任何对象和被别的对象覆盖;

l  将报表划分为多少个部分。例如,在每一页的顶部选用列表式的报表格式,而在底部选拔钜阵式的表格格式;

l  确认保障一些对象总是在一如既往的页中。

框架分为二种档次:缺省框架和用户定义框架。

缺省框架,当接受缺省的布局模型时,Oracle
Reports会自动生成包涵对象的框架。缺省框架的命名情势为“M_n”。缺省框架又可分为二种:垂直可变的组框架和定位尺寸的框架。例如,当创设初期缺省的布局模型时,Oracle
Reports发生一个环绕总体布局模型的组框架,那个组框架在笔直方向上是可伸缩的。而定点尺寸的框架经常是环绕图像和文字对象(Boilerplate)建立的,例如列的标题。

用户定义框架,用户定义的框架是在布局模型编辑器中经过“框架”工具建立的。

框架的主要性质:

l  在那此前分页(Page Break Before):提示在打字与印刷该目的前开始展览换页。

l  在那事后分页(Page Break
After):提示在打字与印刷完该目的后进行换页,在其前面包车型地铁指标都将移到下一页打字与印刷。

l  页保养(Page
Protect):提示对象内的有所目的尽恐怕地打字与印刷在一个页内,借使三个页容纳不下的话,在起来打字与印刷该对象时会先换页。

l  垂直缩放值(Vertical
Elasticity):提醒对象的垂直大小是不是足以转移,有:减弱、扩张、固定、可变。

l  水平缩放值(Horizontal
Elasticity):提示对象的程度高低是不是能够转移,有:裁减、扩大、固定、可变。

l  打字与印刷对象在(Print Object
On):提示对象在报表的打印频率,有:全部页、除首页外的凡事、除尾页外的凡事、缺省、第②页、最终一页。

l  基于以下条件打字与印刷(Base Print
On):提示对象是以一定目标依然以带有对象为标准进行打字与印刷。

l  跟随定位指标(Keep With Anthoring
Object):提示对象是或不是跟随定位目的打字与印刷在同叁个逻辑页中。

2)     重复框架

重新框架主要用以体现由二个组检索出来的多行数据的对象。一个双重框架能够分包别的布局对象,也足以回顾其余的再一次框架。重复框架是与记录相关的,它为二个组的每一条记下及其所波及的数据模型对象都打字与印刷1回。使用重复框架能够操纵记录层的体现和格式,比如:记录的打字与印刷方向、记录的空隙、边框线、颜色、字体等。重复框架的箭头方向指明了再也框架重复的可行性。

嵌套的再一次框架平时用于建立主/从表和分组表。

再次框架分为两种类型,缺省的双重框架和用户定义的双重框架。

缺省的重复框架,当接受缺省的布局模型时,Oracle
Reports会自动地为数据模型中的每3个组生成1个再一次框架,并且为组中的每一列都对应安顿贰个域,放在重复框架内。

用户定义的再一次框架,用户定义的再度框架是在布局模型编辑器中经过“重复框架”工具建立的。

双重框架的多少个重点性质:

l  源(Source):每多少个重复框架必须有3个源(组)作为其数量来源于,在再次框架中每一条源数据呈现1回;

l  打字与印刷方向(Print
Drection):重复框架中记录的打印方向,有:横向、纵向、横向/纵向、纵向/横向;

l  每页的最大记录数(马克西姆um Record per
Page):在逻辑页上呈现的再度框架记录的最大数目,能够透过该属性改革报表的可看性。例如,希望在每一种逻辑页上只展现三条记下,则将该属性设置为3。该属性的取值能够为正整数和空,若为空,则尽量在多个逻辑页上显示最大数额的记录。

l  最小孤立记录数(Minimum Widow
Records):必须在一张逻辑页上突显的最少记录数。若从逻辑页的钦命地方上马放不下此属性中提交的记录数,则将从下一张逻辑页开首显得。。例如下图,有五个独立的重复框架按纵向打字与印刷,第三个重复框架位于第1页的平底,但首先页上仅有打印两条记下的空中了,为了使报表看起来更唯妙,我们希望第②个再一次框架换记录能从第①页起首打印,那时就供给将“最小孤立记录数”设置为3。

 

l  列形式(Column
Mode):用于控制什么为重复框架中的记录提取数额和格式化数据。那个天性有三个选拔:“是”和“否”。若选“是”,则允许在上一个再度框架的记录没有打完在此以前就打字与印刷下一个重新框架的笔录。例如,若设置“列方式”为是,则尽管记录2直到第②页才打完,但记录3却能够伊始在首先页上打字与印刷了。若设置:“列形式”为“否”,则记录3不得不等到记录2打字与印刷完后,才开头在其次页上打印。

 

l  水平框架间隔:重复框架记录间的档次距离。当打字与印刷方向为“纵向”或“纵向/横向”时,该属性的装置无效。

l  垂直框架间隔:重复框架记录间的垂直距离。当打印方向为“横向”或“横向/纵向”时,该属性的安装无效。

3)     

域是用来放置参数、列、页号、当今天期等值的地点。例如叁个参数或列没有相应的域,那么它的值不会在表格输出时显得。当生成贰个缺省布局模型时,Oracle
Reports会自行地为每七个列建立贰个域,并将这一个域排泄在重复框架中。

域有二种档次:缺省域和用户定义域。

缺省域,当接爱缺省的布局模型时,Oracle
Reports会自行地为每一列产生1个域,并将那些域排泄在重复框架中。每二个域的质量皆以缺省转变的,但是足以修改。

用户定义域,用户能够依据须要定义一些域来突显诸如页号、日期等新闻。

用户定义的域是在布局模型编辑器中通过“域”工具建立的。

域的数据来源于有二种:数据模型的中的1个列或参数、系统变量和类别参数。

系统变量包蕴:当后天子(&current date)、页码(&logical page
number)、面板数值(&panel number)、物理页码(&physucal page
number)、总记页(&total logical pages)、总记面版(&total
panel)、总计物理页(&total physical pages)

域的习性:

l  源(Source):域值的来自。

l  源数据来源(Source Data Type):源的数据类型,此属性为只读。

l  可视的(Visible):若设置为“否”,则表示该域不被格式化。这一属性公用于那多少个在图像和文字对象中援引的域,常常用于格式信件式报表。若想引用一个“可视的”属性设置为“否”的域,能够在图像和文字对象中输入“&田野name”。

l  格式掩码(Format
Mask):定义以何种格式显示在域中的日期和数值。有值列表可供选拔,不过字符型的域没有该属性。

l  编页码(Page
Numbering):当域的源列是页码、物理页码、总记页、总记物理页之近日,能够运用该属性来定义怎么着总计页号。点击:编页码按钮,出现“编页码”对话框。

4)     图文

图像和文字是三个查询获得不到但又要在表格中输出的对象,如文本、线条、图形等。能够选用图文对象来改变报表的外观,例如建立报表的页头、扩张图形等。

图像和文字有两系列型:缺省的图像和文字和用户定义的图像和文字。

缺省的图像和文字,当接受缺省的布局模型时,Oracle
Reports会活动地为各类域生成1个列标题。对于一些报表类型,Oracle
Reports会在列题目下加一条下划线。

用户定义的图文,一种是因此图文工具新建的二个图像和文字,一种是从外部文件输入的图像和文字。

从外表文件输入图像和文字,能够用“导入”工具大概接纳“链接文件”工具来链接一个文书。

链接二个文书,只是建立了三个指针,指向要连接的文件,并不将文件的内容输入到图文对象中,所以在每次运转报表时,都动态地将文件内容输入到图文对象中,因而,图像和文字对象中的内容是动态的,会趁机文件内容的转移而变更,采取那种办法,能担保报表的输出总是反映最新的内容,那种艺术是在布局模型编辑中通过“链接文件”工具建立的。

5)     定位

定位是用于明确报表输出时子对象相对于其父对象的水平和垂直地点。由于在运作报表时,有些布局尺寸会产生变化,所以供给用定位来定义多少个目的相对于另2个目的的地点。

比如,对于3个品位方向大小可变的再次框架,希望它个中的1个域连续位于重复框架水平方向的中游地方,同时又希望该域与重复框架的顶部保持平昔距离,由于重复框架是程度方向大小可变的,因而其今后事实上出口时的水平尺寸是不行预感的,所以必要定义叁个稳住来兑现以上指标,如下图所示。

 

用定位连接的八个对象时期的相持地方关系是遵照数据取出数据以后的指标的莫过于尺寸,而不是指标在布局模型编辑器中的尺寸。布局模型编辑器中指标间相对地点实际上反映了表格输出对象的职分。

永恒分为两种类型:隐式定位和展现定位。

隐式定位,Oracle
Reports会活动地为种种没有出示定位的布局对象生成多少个隐式定位,以制止该对象被别的对象覆盖。隐式定位节约了用来定义每一种对象的岗位的流年。

在对象导航器中,若接纳“对象类型视图”,则看不到隐式定位,但能够见见突显定位。若接纳“全数权视图”,则缺省气象下看不到定位的,要想见到定位,须打开“工具”菜单中的“选项”->“导航器”,弹出“对象导航器选取”对话框,在“布局”栏中当选“定位音讯”,则会在导航器中呈现全体的一直新闻,蕴涵隐式定位和体现定位。

但隐式定位在布局模型编辑器中年老年是不可知的。

来得定位,显示定位是在布局模型编辑器中通过“定位”工具建立的,通过呈现定位能够强制性地将或多或少对象放在一起。当三个对象在档次或垂直的尺寸只怕会随着许多记录的增减而改变时,恐怕在支配叁个目的相对于重新框架的争辨位置时,呈现定位越发有用。

1.     建立数据模型

数据模型用于定义二个报表中选择的数量及数据结构,这个多少能够是数据库表中的原来数据,也足以是经过加工后的数码,如薪俸的总数等。从数据库中寻找出的数额是或不是在报表输出中显得,也是在数据模型中定义的。

数据模型由五部分指标组成:查询(Queries)、组(Groups)、列(Columns)、连接(Links)和参数(Parameter)。

1)     确立查询

查询实际上正是一条SQL
SELECT语句,决定了从数据库中钦定的表或视图中取哪些行和列。查询所收获的数额可被用来总括、排序、集合运算等,并可以在表格输出时显得。

Ø 报表中的查询可分为三种:内部查询和外部查询。两者的区分在于外部查询能够被别的报表多次引用,而里面查询不能够被其它报表参考引用,只可以被其所属的表格引用。

Ø 依据报表中询问的个数能够将报表分为单查询报表和多询问报表。

单查询报表:唯有三个询问的报表称为单查询报表。单查询报表的常见格式有列表式(Tabular)、标签式(Mailing
Label)、信封式(Form
Letter)以及分组式。单查询报表就算唯有1个查询,但能够屡屡显得查询数据,并且能够用分歧的格式展现。

多询问报表:含有多个查询的表格称为多询问报表。七个查询相互之单能够有关联,称为相关的多询问报表;也足以没有提到,称为不相干的多询问报表。

l  相关的多询问报表:四个查询之间交互关联,一般用于主从式报表,也正是说,报表的一局地数据控制了表格的另一片段数据。取出前有的数指标查询称为主查询,取出后一有些的查询称为从询问,主查询的每一条记下查询都将唤起从询问的实施,从询问只检索与主查询匹配的那多少个记录。三个查询之间通过定义数据连接产生联系。

l  不相干的多询问报表:三个查询之间平素不涉及,Oracle
Reports将独自地为每三个查询获取数据,展现出来的是一层层不相干的数目。

询问之间运维的主次顺序由数据模型中的查询次序决定。在数据模型中,查询次序是先上后下,先左后右,所以放在左上角的询问开始执行。

以身作则:为制止数据冗余,咱们那里将订单头和行分别创建三个查询:

a)     在对象管理器中当选报表,右击打开“报表编辑器”,然后点击打开“数据模型”。

 

b)     点击SQL查询创制七个查询。

 

c)     修改Q1->Q_header,G_order_number->G_header;

    Q2->Q_line,G_line_num->G_line

2)     确立数量连接

多少连接用于建立四个查询数据里面包车型大巴涉嫌。在数据模型编辑器中,七个查询之间的连线即表示了四个数据连接。

干活原理:数据连接通过主键和表面键定义了三个查询之间的主/从涉嫌。主/从涉嫌中父查询的每一条记下的爆发都会引起子查询的举办,子查询只检索知足在三番五次中内定的规格的记录。

平时状态下,八个查询之间的总是是等值连接,但也能够采取SQL语句(如WHERE、HAVING、STARubiconT
WITH等)建立非等值连接。

当1个涵盖数据连接的表格执行时,该数据连接就被转换到二个SQL子句,并加上到子查询的末尾。子查询依据父查询的主链值执行查询。

建立章程:一种是手动建立的数量连接,一种是电动建立的数目连接。

手动连接的步调:在数据模型编辑器中甄选:“数据连接”小图标;

单击父查询的主链列或外部键列,并拖动鼠标到子查询的主链或外部键列,使它们之间创立一条连线。注意,连线总是从父查询到子查询的;

活动连接的手续:在数据模型编辑器中甄选:“数据连接”小图标;

单击父查询,并拖动鼠标到子查询上,系统会活动显示父查询和子查询之间是依照哪个列建立连接的;

       示例:点击数据连接,创设从Q_header
(header_id)到Q_line(header_id1)的数额连接。

 

3)     建立组

组对象首要有五个功效:

Ø 将五个询问的数码分为多少个聚众,每一种集合称为组。例如,将“EMP”表按“DEPTNO”分组,结果显示如下:

 

Ø 过滤查询数据,通过组能够对查询的结果实行过滤。

在Oracle Reports上校组分为缺省组和用户定义组两类:

Ø 在缺省的状态下,Oracle
Reports为数据模型中的每3个询问发生一个组,取名取成查询的称号。查询名称以“Q_”开首,而组名以“G_”初叶。例如,查询名称为“Q_header”,则Oracle
Reports为其发出的缺省组名为“Q_header”。

Ø 用户定义组可用以以下三种情形:分组报表;矩阵报表;子汇总。

组过滤器允许有标准化的挑选由询问检索出来的数目,通过组过滤器过滤查询结果。

有三种档次的组过滤器:Oracle Reports封装过滤器和用户定义过滤器。

Ø Oracle
Reports封装过滤器允许钦定在一个组中希望物色的记录数,在报表开发进度中得以运用封装过滤器来限制数量。Oracle
Reports软件包中有七个包装过滤器:First Filter,只体现组内前n条记下;Last
Filter,只显示组内后n条记下。

Ø 用户定义过滤器:用户能够定义本人的过滤器来界定在特定条件下的记录的寻找。用户定义的过滤器是经过编写制定PL/SQL代码建立的。

 

数据模型中组的层系决定了在缺省布局对话框中组的次序,同时也决定了在缺省布局中组的次第,但这不是最终的报表格式,因为能够对缺省的呈现格式举办修改。

在数据模型编辑器中若没有数据连接,则组的层次是由组在数据模型编辑器中的地点从左至右,从上至下决定的。在数据模型编辑器中若有多少连接,则组的层系能够由数据连接描述。通过对象导航器可以清晰地看出组的层次:

 

4)     定义列

报表的列表示报表的数量。在概念了从数据库检索数据的查询后,或然须求更进一步调整报表,增添越来越多的列,而那么些列能够用作报表的数额,执行一起汇总等职能。

Oracle Reports中的列能够分成两类,缺省列和用户定义列。

Ø 缺省列

Oracle
Reports为查询SELECT语句中的每一项都建立一个列,因为它们一向对应从数据库中摸索出来的逐条列,所以缺省列也叫数据库列。

Oracle
Reports除了补助典型的数据类型的列(如字符型、数值型、日期型)以外,还辅助图型列。图型列的值大概是:

直白存款和储蓄在数据库中的图型:那种列的数据类型常常是RAW或LONG
RAW。在那种意况下,需在列的品质选项板中指明图形格式。

文件名大概是图型的U奇骏L:那种列的数据类型平常是REF,列中的值对应于用指针指向三个存在操作系统中的文件,报表输出时会依据指针将文件内容输出,在那种情景下,需在列的品质选项板中校“Read
from
File”设置为“Yes”并输入文件名。文件名前能够分包路径,若文件名前尚未包涵路径,则Oracle
Reports会奉公守法其路径搜索顺序查找文件。能够通过Report
Builder的环境变量REPO哈弗T30_PATH来设置搜索路径。注意,若列的品质选项板中“Read
from
File”被置为“No”并且输入了文本名,则报表最终输出的只会是文件名,而不会是文件内容。

Oracle
Reports协理二种图形格式,包涵BMP、CALS、C博来霉素、GIF、JFIF、PCD、PCX、PICT、RAS、TIFF等。

Ø 用户定义列

用户可在一定的组内或报表拔尖建立列。在特定的组内建立的列称为组超级的列,该列与组内的别样列有相同的显得频度。而报表顶尖的列只在方方面面表格中显得3次。用户定义列分为三种档次:公式列、占位列和汇总列。

a)     公式列,公式列是对其他列执行2个用户定义的乘除。建立公式列的章程是用PL/SQL语句写3个函数,从贰个或多少个列中总括结果,该列的缺省名为“CF_n”。

示例:在G_line组中定义1个的公式列newAmount,来显示Amount *1.06的值。

在数据模型编辑器中单击:“公式列”小图标。假如要在组中建一个公式列,则在画布的组区域内单击一下鼠标左键,要是要建几个表格一流的公式列,则在画布的空域区域内单击一下鼠标左键,会变动三个公式列对象;

 

 

双击该公式列对象,弹出其属性选项板;

点击属性选项板中的“PL/SQL公式”项,弹出“程序单元编辑器”;

 

 

在“程序单元编辑器”中为公式项用PL/SQL语句书写多个总结公式并编写翻译通过。

 

 

b)     占位列,占位列的值和数据类型是经过PL/SQL语句设置的,该列的缺省名为“CP_n”。当要求有选取地设置1个列的值时(例如,在每趟出现第n个记录时,或每回出现包蕴有特殊值的记录时)占位列拾壹分管用。

能够在偏下多少个地方设置占位列的值:

在Before Reports的表格触发器中(假如占位列是三个报表级的列);

在报表级的公式列中(如若占位列是一个报表级的列);

在占位列组或占位列组上边包车型大巴公式中(为组中的每一条记下设一遍值)。

占位列的用处:

在公式列的PL/SQL代码中计算出的局地值能够分配给区别的占位列;

动用占位列保存中间值。例如,存款和储蓄当前寻找出的万丈薪金对应的记录。

c)     汇总列,汇总列是对别的列的数额举行计算。Oracle
Reports为汇总列提供的乘除函数有:总和、平均值、最小值、最大值、计数、第3个、最终一个、%(总括)、标准差、方差。

示例:在G_header组中添加CS_countAmount,来计算订单行的总金额;

         在Report级别添加CS_total,来测算订单的总数量;

在数据模型编辑器中单击“汇总列”小图标,借使要在组中创造1个汇总列,则在组中你指望该列所在的岗位上单击一下鼠标左键,假若要建3个报表一级的汇总列,则在画布的空白区域内单击一下鼠标左键,会生成贰个汇总列;

 

双击该汇总列对象,弹出其属性选项板;

从属性选项板中的“汇总”项下的“功用”子项的下拉列表中选用所需的总结公式;在“源”子项中采取要集中的列名;

在“重设于”子项中选拔集中的频度,正是就满门表格做贰回集中依然每一页做一遍集中,或许每一组做1次集中;

当“功效”子项被选为“%(总计)”时,“总结于”项有用,其值为总计“%(总结)”的汇总列时的组名。该项只对“%(总括)”有用。

 

5)     参数

参数是报表变量,在表格运营进度中,用户能够为其内定区别的值。参数主要用于在运营进程中期维修改SELECT语句和装置PL/SQL变量。Oracle
Reports中的参数分为两类:系统参数和用户参数。

Ø 系统参数

系统参数又称缺省参数。Oracle
Reports允许为每二个报表修改标准的运作设置,系统参数共有九个。

 

系统参数

功能

取值

省缺值

COPIES

报表输出到打印机的份数

任何整数

1

DESFORMAT

输出设备的格式,如:打印机

Dflt、Pslan80

Dflt

DESNAME

输出设备的名字,如:文件名、打印机名

 

 

DESTYPE

输出结果送到什么地方,如屏幕、文件、邮件、打印机等

File、Mail、Screen、Printer

Screen

MODE

报表运行的模式,如:字符界面、图形界面等

Bitmap、Character

Default

ORIENTATION

打印报表输出时的打印方向,如:Landscape、Portrait

Landscape、Portrait

Landscape、Portrait

PRINTJOB

当运行一个报表时是否显示“PRINT JOB”对话框

YES、NO

YES

Ø 用户参数

用户参数是用户建立的三个对象,该对象用于保存在运维时用户能够改变的值。在一个查询的其余地方都足以引用用户的参数,用户参数首要用于以下多少个方面:

l  在SELECT语名的WHERE子句中用参数替代常数作限制值。

l  用参数替代SELECT语句的其它部分,包涵精选列、表,甚至整个SELECT语句。

l  在SELECT列表中用参数替换二个单列或三个表明式。

引用参数的主意首要有二种:连接引用和置换引用。

a)     连接引用

连日引用主要用来替换SQL语句和PL/SQL块中的一个值或表明式。

行使连接引用的办法是在要引用的参数前增进“:”号。

一而再引用的应用受以下限制:不可能在SELECT语句中替换列名;不能够在FROM从句中选用连接引用;不能够取代保留的单词和子句。

         示例:将查询Q_header的where条件中写死的条件:

         oh.order_numberbetween 29480and29485

修改为:oh.order_numberbetween:p_order_fromand:p_order_to

         保存修改后,Oracle Report会自动进入那七个用户参数。

 

b)     置换引用

换到引用能够用参数替代SELECT语句的其他部分,如替换列名、FROM子句、WHERE子句、GROUP
BY子句、O君越DE昂科拉 BY子句、HAVING子句、CONNECT BY子句、STAKugaT WITH子句等。

运用置换引用的点子是在要引用的参数前增进“&”符号。

只顾:无法在PL/SQL中使用置换引用,但能够在PL/SQL中应用连接引用。

和一连引用分歧的是,对于置换引用的参数,用户必须事先在对象导航器中确立,并且在属性选项板中为其输入开始化值,Oracle
Reports不会缺省级地区级建立该参数。

举例来说:使用置换引用替代列名和FROM子句。

SELECT &P_ENAME NAME, &P_EMPNO ENO

FROM &P_EMP;

那样能够动态地依据运转时输入的参数值,决定从哪些表检索这几个列。

应用置换引用替换WHERE子句

SELECT * FROM EMP &P_WHERE;

在运营时可任意钦命WHERE子句,依照差异的限量条件检索所需数据。

值列表,为参数值建立值列表,那样,在运作时用户就能够从该值列表中甄选四个有效值。能够界定用户只好采用值列表中的值,也得以允许用户输入任何的值。

对于接二连三引用的参数,值列表可以是3个无法改改的静态的值列表,也得以是在运作时从数据库中动态地挑选值的动态值列表。

对此置换引用的参数,值列表只好是静态的。

4.     参数表格

当运营一个表格时,Oracle
Reports会弹出三个窗口,称为参数表。能够在此窗口中输入参数值,从而屏蔽原有的缺省值。

比方没有创设报表参数表格,在运作时,Oracle
Reports将会自行建立三个参数表格以供用户输入参数,但当报表运营完后,这么些参数表格的剧情就会活动地被删除。

Oracle
Reports提供缺省的参数表格样式,能够使用缺省的参数表格,也得以在缺省参数表格的根基上海展览中心开改动,也许建立用户自已定义的参数表格。

创造缺省的参数表格:

点击菜单“工具”->“参数表单成立器”

 

修改“标题”、“提醒行”和“状态行”的始末,它们将呈今后运行参数表的上边;

基于供给选中要在运维参数表中冒出的参数,被入选参数的背景观为白灰,如上海体育场面中,参数“P_ORDER_FROM”被入选,则该参数将会出现在运营参数表中,用户能够为它输入新值,而不行使其缺省值。注意,那里未被选中的参数不会并发在缺省的参数表格中。

 

树立用户自定义的参数表格:

双击对象导航器中的“页面参数表单”

 

在此间,只好建立两种对象:域对象和图像和文字对象。

Ø 域对象:域对象是用来放置参数值的地点。借使某一参数没有概念与其对应的域对象,则在运营参数表上不会显示该参数。缺省状态下,Oracle
Reports会为每二个参数建立3个域指标。也足以透过利用“报表编辑器-参数表格”中的“域”工具建立多个域,然后将一个已某些系统参数或用户定义参数分配到该域。

Ø 图像和文字对象:图像和文字对象的作用和在布局模型中的效用一样。缺省景观下,Oracle
Reports会转移运营参数表的“标题”、“提醒行”和“状态行”图像和文字对象,并为各类域建立2个标签图像和文字对象。也得以由此选择“报表编辑器-参数表格”中的“图像和文字”工具建立额外的图像和文字对象以增加运行参数表的可观性。

7.     程序单元和附加的程序库

1)     程序单元(Program Units)

次第单元是指从近年来报表中的任何PL/SQL库中参考引用的包、函数和经过。程序单元不能够被其余程序参考。若想创设八个能被多少个程序参考引用的包、函数或进度,须求创制2个PL/SQL程序库。

 

2)     附加的程序库(Attached Libraries)

对此一些相比通用的函数和经过,也许逻辑相比复杂的函数和进程,大家得以把它们集合在协同写成贰个PL/SQL程序库。3个PL/SQL程序库正是一个PLL库文件。

在报表中,大家能够运用附加的程序库的主意来引用它。对于附加程序库,用户能够在表格中调用它的包、函数和经过。

Ø 建立PL/SQL程序库

PL/SQL程序库,即PLL文件,供给在Reports Builder中去建立。

详见的建立进度如下:

a)     在对象导航器中选用“PL/SQL库”节点,然后单击工具栏上的“创立”工具,则在“PL/SQL库”节点下会出现1个新的库结点,该节点下有三个子节点:“程序单元”子节点和“附加的库”子节点。

b)     选中“程序单元”子结点,然后单击工具栏上的“创立”工具,弹出“新建程序单元对话框。

c)     在对话框中输入进程、函数、包表明或包主体的名号,接受对话框,则弹出“程序单元编辑器”窗口。

d)     输入PL/SQL进度、函数、包的代码,编写翻译后关门“程序单元编辑器”窗口。

 

 e)     点击保存按钮,保存库文件到内定的目录中。

 

Ø 连接PL/SQL程序库

树立好PL/SQL程序库后,库中的所有函数、进度都可以在别的Oracle产品中被引用。但在引用前,须将库连接到引用它的报表上。

老是步骤如下:

a)     在对象导航器中选取“附加的库(Attached
Libraries)”节点,然后单击工具栏上的“创立”工具,则弹出“附加程序库(Attach
library)”对话框。

b)     先在对话框中输入PL/SQL库的称谓,恐怕点击“浏览”来抉择要增大的PL/SQL程序库文件。然后再单击“附加”按钮来三番五次该PL/SQL程序库。

c)     系统会唤醒“附加的程序库的名称包括不可移植的目录设置,要刨除此路径吗?”,一般大家会采取“Yes”,那样附加的库文件和途径非亲非故,只要把库文件放在REPOQashqaiTS60_PATH所钦定的途径下系统就能够找到。若是选“No”,则附加的库文件带有相对路径,库文件的岗位无法改变,不方便人民群众报表安装。

将确立好的PL/SQL程序库附加在表格上后,程序库库中的全部函数、进程、包就足以在表格的另内地点被调用。

 

其三章   创设一个分组报表

 

5.     Oracle Reports触发器

在Oracle Reports中,触发器可分为三类:

Ø 报表触发器:共有四个表格触发器,分别在运营报表的两样阶段被触发。

Ø 数据模型触发器:包蕴公式列触发器、组过滤触发器、参数验证触发器。其中,公式列触发器在历次处理列时被触发,组过滤触发器能够由组中的每一条记下触发,参数验证触发器在体现参数表格和用户距离参数域时被触发。

Ø 布局格式触发器:在处理布局对象时接触。

1)     报表触发器,是用户在运作报表和安装报表格式时,在钦命时刻执行的PL/SQL函数。这个报表触发器允许用户执行以下操作:调整报表格式、执行初阶化任务、访问数据库。

系统定义了多个表格触发器,用户能够修改触发器的剧情,但不可能制造新的报表触发器。

 

Before Parameter Form

在浮现运营参数表在此之前被触发,就算参数表被埋伏起来不突显,此触发器如故能够被触发。它用来存取并修改参数值、PL/SQL全局变量和报表组列值。常常使用此触发器来检验命令行参数。

After Parameter Form

在呈现运维参数表之后触发,即便参数表被埋伏起来不显示,此触发器还是能够被触发。该触发器用于存取、校验和修改参数值。假若在运作中冒出谬误,则赶回到运营参数表。该触发器不能够存取数据模型中的列。

Before Reoprt

该触发器在条分缕析查询语法和搜索数据现在、运营报表从前被触发,用于实践开端化处理各个参数。

Between Pages

除开第2页以外,该触发器在每一页报表被格式化在此以前被触发,用于页的格式化设置。在预览器中,此触发器只在首先次进入该页时被触发,要是后续再进来该页,则此触发器不再被触发。

After Report

该触发器在剥离预览器后或将报表输出到目标地(如:文件、打印机或Oracle*Mail用户标识)以往初触发,用于破除对参数的伊始化处理,如删减方今表。无论报表是或不是中标实践,此触发器从来是居于激活状态。

2)     数据模型触发器

公式列触发器,是指在公式列中编辑多个PL/SQL函数,该列又有啥不可组织别的对象,如占位列或公式列本人。

公式列中的代码必须回到给公式列,此列能够是1个“虚”列,既在表格的布局模型中不被出示出来。

例:

指标:希望当员工薪酬大于3000时,奖金展现的是薪资乘以0.1,不然奖金显示出的是工薪乘以0.5,并交由提醒。

实现方式:使用公式列构成八个占位列“BONUS”和“BONUS_CHAHaval”,依据分裂尺度给那多个列赋值。

 

[sql] view
plain

copy
print?

  1. FUNCTION SET_BONUS RETURN CHAR IS  
  2. BEGIN  
  3. IF :SAL > 3000 THEN  
  4. :BONUS := :SAL * 0.1;  
  5. :BONUS_CHAR := ‘ten percent’;  
  6. ELSE  
  7. :BONUS := :SAL * 0.1;  
  8. :BONUS_CHAR := ‘ten percent’;  
  9. END IF;  
  10. RETURN ”;  
  11. END;  

    FUNCTION SET_BONUS RETURN CHAR IS
    BEGIN
    IF :SAL > 3000 THEN
    :BONUS := :SAL 0.1;
    :BONUS_CHAR := ‘ten percent’;
    ELSE
    :BONUS := :SAL
    0.1;
    :BONUS_CHAR := ‘ten percent’;
    END IF;
    RETURN ”;
    END;

是因为该公式列是贰个虚列,由此函数再次来到叁个空字符串。

组过滤器,组过滤器用于限制出现在报表中的记录的行数。组过滤器对数码的范围是在探寻数据之后,在体现数据从前,全数使用组过滤器并不可能压缩由查询语句检索出来的数码总量,若想削减由查询语句检索出来的多少,可以在查询语句中动用WHERE子句进行限定。

Oracle
Reports提供了多少个组过滤器:前多少个(First)和后多少个(Last)。用户还是可以编写自身的组过滤器。

组过滤器只可以由四个重回值:

Ø TRUE:表示提取组中钦命的数目。

Ø FALSE:表示不领取组中钦点的数额。

其它,组过滤器不可能用来交叉分组。

阐明触发器,用户能够在系统参数和用户自定义的参数中编辑验证触发器,用于检查和测试输入到运维参数表中的参数值,就算参数不正确,则结束报表运维。

证实触发器必须再次来到3个布尔值(TRUE或FALSE)。若再次回到为FALSE,则光标会停留在参数中,用户能够输入分歧的值或则退出报表的运作。

以身作则:验证用户输入的订单号限制是不是站得住

 

[sql] view
plain

copy
print?

  1. FUNCTION P_ORDER_TOValidTrigger return boolean IS  
  2. BEGIN  
  3.  IF :P_ORDER_TO < :P_ORDER_FROM THEN  
  4.    RETURN (FALSE);  
  5.  ELSE  
  6.   RETURN (TRUE);  
  7.  END IF;  
  8. END;  

    FUNCTION P_ORDER_TOValidTrigger return boolean IS
    BEGIN
    IF :P_ORDER_TO < :P_ORDER_FROM THEN RETURN (FALSE); ELSE RETURN (TRUE); END IF; END;

3)     布局格式触发器

绝当先百分之二十五的布局对象都富含多个搭架子格式触发器,它是布局对象的二个公共性质。布局格式触发器存在于以下目的中:框架、重复框、域和图像和文字对象。

布局格式触发器允许用户在表格运维时依据早晚原则动态地修改布局对象的展现或隐匿。

4)     动作触发器

动作触发器是在预览器中选中三个按钮时实施的PL/SQL进程。该触发器能够动态地调用另一个表格或实施PL/SQL程序。在动作触发器中输入的PL/SQL进程,可参看Oracle
Reports中的封装函数、进程和非凡处理。

6.     Oracle Reports中的PL/SQL

用户能够将PL/SQL用于Oracle Reports对象中以充实报表作用。

1)     在PL/SQL中援引报表对象

在PL/SQL中援引报表对象有二种办法:

变量值引用,通过在Oracle Reports对象前加三个“:”号来引用Oracle
Reports对象值。

例如,要使ORDER_NUM列的值为一千,则输入:O奇骏DE本田UR-V_NUM:=  1000

变量名引用,通过用单引号括起Oracle Reports对象来引用对象的名称。

譬如,要使变量FIELDNAME等于F_NAME域的称呼,FIELDNAME := ‘F_NAME’

2)     Oracle Reports中的PL/SQL块

Oracle Reports中能使用以下9种方法的PL/SQL结构块:

PL/SQL程序库(external libraries)、附属类小部件的程序库(attached libraries)

先后单元(report program units)、报表触发器(report triggers)

组过滤器(group filters)、公式(formula)、验证触发器(validation
triggers)

格式触发器(format triggers)、动作触发器(action triggers)

 

PL/SQL:PL/SQL程序库、程序单元;

Trigger&Filters:重复框、框架、域、图像和文字、参数、组、报表触发器;

Formula:公式列;

Button Triggers:按钮;

3)     Oracle Reports中的PL/SQL极度处理

平时有二种档次的不胜处理:

Ø 用户定义的丰盛处理,具体方法参考PL/SQL技术文书档案。

Ø 标准包装的不行处理,是Oracle系统预先定义的不比,同参考PL/SQL技术文书档案。

Ø Oracle Reports特有包装的非常处理,Oracle
Reports特有的两样定义在SLX570W包中,具体有:

SRW.CONTEXT_FAILURE     SRW.RUN_REPORT_FAILURE

SRW.DO_SQL_FAILURESRW.RUN_REPORT_BATCHNO

SRW.INTEGER_ERROR SRW.TRUNCATED_VALUE

SRW.MAXROW_INERRSRW.UNKNOW_QUERY

SRW.MAXROW_UNSETSRW.UNKNOW_USER_EXIT

SRW.NULL_ARGUMENTS    SRW.USER_EXIT_FAILURE

SRW.PROGRAM_ABORT

分外处理的行使规则:

Ø 假设用户并未处理1个百般,那么Oracle
Reports会替用户去处理它,既在尤其处理被激活时,Oracle
Reports将时有产生几个荒谬,终止报表的执行。

Ø 用户必须在现阶段PL/SQL域中测试结构块的败诉意况。

譬如说,若是用户给公式列编写了PL/SQL代码,那么该公式列必须测试它和谐的败诉意况,别的对象竟是另贰个公式列是不能够对它的失利进行测试。

4)     SRW包

为了有利于用户采用,Oracle
Reports提供了三个封装的包,称为S哈弗W。它是一组PL/SQL结构块的集结,包罗了广大可在库和表格中引用的函数、进程和丰盛处理。用户能够在库或报表中参考引用它们。

当用户在PL/SQL结构块中参考SWR包时,必须抬高前缀S奥迪Q3W,例如S牧马人W.DO_SQL。

SKoleosW包的用处有:控制报表的运维、在运行时输出新闻、起始化域对象、执行DDL语句(建立/删除一时半刻表)、调用用户接口、动态地设置布局对象属性、如字体和填充形式等。

能够在表格中的任何PL/SQL语句中引用SKoleosW包的任何部分,不过,S奥迪Q3W包中的内容只万幸Oracle
Reports中被引用,不可能在其余工具(如Oracle Forms)中被引述。

S普拉多W包由下列结构块组成:

SRW.BREAK         SRW.CONTEXT_FAILURE

SRW.DO_SQL      SRW.DO_SQL_FAILURE

SRW.GETERR_RUN       SRW.GET_PAGE_NUM

SRW.INTEGER_ERROR SRW.MAXROW_INERR

SRW.MAXROW_UNSETSRW.MESSAGE

SRW. NULL_ARGUMENTS   SRW.PROGRAM_ABORT

SRW.REFERENCE         SRW.RUN_REPORT

SRW.SET_ATTR           SRW.RUN_REPORT_FAILURE

SRW.RUN_REPORT_BATCHNO     SRW.SET_FIELD_CHAR

SRW.SET_FIELD_DATE  SRW.SET_FIELD_NUM

SRW.SET_MAXROW           SRW.TRACE_ADD_OPTION

SRW.TRACE_END        SRW.TRACE_REM_OPTION

SRW.TRACE_START            SRW.TRUNCATED_VALUE

SRW.UNKNOWN_QUERY    SRW.UNKNOWN_USER_EXIT

SRW.USER_EXIT          SRW.USER_EXIT20

SRW.USER_EXIT_FAILURE

相关文章