Oracle Reports培训教程.docx

上传人:b****5 文档编号:29856567 上传时间:2023-07-27 格式:DOCX 页数:59 大小:636.08KB
下载 相关 举报
Oracle Reports培训教程.docx_第1页
第1页 / 共59页
Oracle Reports培训教程.docx_第2页
第2页 / 共59页
Oracle Reports培训教程.docx_第3页
第3页 / 共59页
Oracle Reports培训教程.docx_第4页
第4页 / 共59页
Oracle Reports培训教程.docx_第5页
第5页 / 共59页
点击查看更多>>
下载资源
资源描述

Oracle Reports培训教程.docx

《Oracle Reports培训教程.docx》由会员分享,可在线阅读,更多相关《Oracle Reports培训教程.docx(59页珍藏版)》请在冰豆网上搜索。

Oracle Reports培训教程.docx

OracleReports培训教程

OracleReports培训教程

HAND

作者:

孟军

创建日期:

2000年11月28日

最近修改日期:

2000年11月28日

文档编号:

MD060

版本:

1

审批人:

审批人1

审批人2

拷贝数_____

文档控制

更改记录

日期

作者

版本

说明

2000/02/21

孟军

1

没有以前的版本

浏览者

姓名

职位

分发

拷贝数

姓名

职位

1

资料管理员

1

项目经理

(9-Dec-96)

目录

文档控制ii

综述5

OracleReports概述6

OracleReports的版本7

OracleReports的安装8

建立并运行一个简单的报表11

建立报表11

编译运行报表15

习题16

数据模型(DateModel)17

功能及构成17

数据模型编辑器17

查询18

组19

列19

数据连接22

参数23

布局(Layout)26

布局功能26

布局模型编辑器27

报表区域27

基本布局对象28

几种缺省的报表布局风格34

参数表格(ParameterForm)37

建立用户自定义的参数表格37

报表触发器(ReportTriggers)38

触发器的触发时机及用途38

习题39

程序单元(ProgramUnits)40

附加的程序库(AttachedLibraries)41

建立PL/SQL程序库41

连接PL/SQL程序库42

习题43

矩阵式报表44

建立矩阵式报表的需求44

单查询矩阵式报表44

多查询矩阵式报表47

Reports在Applications下的安装52

编制Report52

在Application中注册Reports52

将Reports运行权限赋给相应的职责54

(9-Dec-96)

综述

本文档为OralceReports培训文档,仅限于Hand培训使用。

本文档以实用为目的,并未包括OracleReports的所有方面。

本次培训的目的,是通过两天的OracleReports培训,可以使大家了解OracleReports的基本概念,学会用OracleReports来设计简单的报表去解决实际的需求。

OracleReports概述

OracleReports是Oracle关系数据库系统提供的一个功能强大、易于使用的报表定义工具软件,它用于开发、显示和打印结果报表。

使用OracleReports的应用开发人员应当熟悉SQL和PL/SQL。

OracleReports的应用分为两步:

第一步,由应用开发人员使用OracleReports来编制各种报表程序,应用开发人员在定义报表应用以前应先了解实际的需求,然后将以上需求抽向成OracleReports的相应对象,并填入到OracleReports的设计界面中。

第二步,即由最终用户运行应用开发人员所定义的各种报表程序,填入实际的运行参数,从Oracle数据库中检索数据,生成并打印实际的报表。

OracleReports的版本

OracleReports最常用的版本主要有两个,一个是Developer20001.6中包含的OracleReports2.5,它是开发OracleApplications11版所用的版本;另一个版本是OracleForms&Reports6I中包含的OracleReports6I,它是开发OracleApplications11I所用的版本。

下面两图分别是OracleReports2.5和OracleReports6I的界面

OracleReports的安装

Oracle产品的安装方法大体类似,下面以OracleReports2.5的安装为例,介绍OracleReports的安装:

1、

将OracleReports的安装光盘放入光驱中,Oracle安装程序会自动运行,然后选择要使用的语言,填入公司名称和Oracle当前根目录,按“确定”按钮进入下一步;

2、出现安装管理器窗口后,在左边窗口选择Developer/2000-Reports2.5组件后点击“安装”按钮进行安装,安装程序会自动分析还需安装的其它组件并进行安装,安装完成后退出安装程序。

3、进入Oracle安装目录下的network/admin目录,修改SQLNET.ORA文件和TNSNAMES.ORA文件,配置SQL*NET使得OracleReports可以连上Oracle数据库。

下面是两个文件的样例:

文件:

SQLNET.ORA

TRACE_LEVEL_CLIENT=OFF

names.directory_path=(TNSNAMES)

names.default_domain=world

name.default_zone=world

文件:

TNSNAMES.ORA

SSE.world=

(DESCRIPTION=

(ADDRESS_LIST=

(ADDRESS=

(COMMUNITY=tcp.world)

(PROTOCOL=TCP)(Host=10.7.100.7)(Port=1521)

(CONNECT_DATA=(SID=ora816)

4、修改完后进入ReportsDesigner,选择File/Connect菜单,填入用户名,口令和连接串,连按Oracle数据库,如果可以连通,说明OracleReports安装成功。

建立并运行一个简单的报表

我们先以一个最简单的报表为例,说明OracleReports的开发流程。

建立报表

我们的例子是查询当前用户下的对象,包括表、视图以及同义词。

1、编写查询的SQL语句。

当前用户下所有的对象可以在系统的一个VIEW“CAT”中查出,这个VIEW结构如下:

SQL>desccat;

列名可空值否类型

-------------------------------------------

TABLE_NAMENOTNULLVARCHAR2(30)

TABLE_TYPEVARCHAR2(11)

所以我们要写的查询很简单:

SELECTTABLE_NAME,TABLE_TYPE

FROMCAT;

2、打开ReportsDesigner,连接数据库;

由“开始\程序\Developer2000forNT\ReportsDesigner”打开“ReportsDesigner”;

选择菜单“File\Connect”连接数据库,在对话框内填入用户名、口令及数据库连接串,点击“Connect”连接数据库。

3、创建数据模型(DateModel)

双击“DateModel”进入数据模型设计器;点击左边工具栏上的“SQL”图标,并在中间空白处点一下,建立一个查询“Q_1”;双击“Q_1”进入“Q_1”的编辑对话框,在“SelectStatement”中写入我们刚才所写的查询语句:

SELECTTABLE_NAME,TABLE_TYPE

FROMCAT;

选择“OK”,这样就建立了一个简单的查询。

4、建立布局(Layout)

在“DateModel”窗口中,点击上面工具条上的“DefaultLayout”图标,建立缺省的布局;在Style页面中选择“Tabular”类型;

在“Data/Selection”页面中“Report”选择Down类型,修改列(Column)“TABLE_NAME”标签(Label)为“名称”,修改“TABLE_TYPE”的标签为“类型”;

选择OK,建立缺省的报表布局;

5、保存报表文件

选择菜单“File\Save”,保存刚才建立的报表为test1.rdf。

6、测试运行报表

在“对象浏览器(ObjectNavigator)”窗口中,点击“Run”图标,出现报表参数窗口;

点击“运行报表(RunReport)”,测试刚才创建的报表。

编译运行报表

我们用OracleReports建立的报表源文件是rdf文件,要在客户端运行报表,需要把报表编译为rep文件。

1、编译报表

在“ObjectNavigator”窗口下选中要编译的报表,选择菜单“File\Administration\Generate”,再确定要生成的rdf文件的名称和要存储的位置,就会把报表编译为rep文件。

在这里,我们编译好的文件为test1.rep。

2、运行报表

选择菜单“开始\程序\Developer2000forNT\ReportsRuntime”打开“报表运行器(ReportsRuntime)”;选择菜单“File\Connect”连接数据库;选择“File\Run”并选中要运行报表的rep文件,出现参数窗口,填写需要的参数后选择“RunReport”报表运行出来,可以选择“Print”打印报表。

除了手工通过“ReportsRuntime”来运行报表外,我们也可以建一个Windows的快捷方式来直接运行报表,快捷方式的样例如下:

C:

\ORANT\BIN\R25RUN32.EXEd:

\test1.rdfsystem/manager@meng_prod

另外,我们也可以在Forms上直接调用报表;或者把报表安装在application上,在Application里面来运行报表;或者通过ReportServer,用Web方式来运行报表。

这些方式,在这里就不做详细的介绍。

习题

建立并运行一个简单的报表

数据模型(DataModel)

本章首先介绍数据模型的功能及购成,以及编缉数据模型的数据模型编辑器,然后分别介绍构成数据模型的五个部分:

查询(Queries)、组(Groups)、列(Columns)、连接(Links)和参数(Parameter)

功能及构成

数据模型用于定义一个报表中使用的数据及数据结构,这些数据可以是数据库表中的原始数据,也可以是经过加工后的数据,如工资的总和等。

从数据库中检索出的数据是否在报表输出中显示,也是在数据模型中定义的。

数据模型由五部分对象组成:

查询(Queries)、组(Groups)、列(Columns)、连接(Links)和参数(Parameter)。

下面的章切将详细介绍这五种对象。

数据模型编辑器

打开数据模型编辑器

有三种方式打开数据模型编辑器的方法:

●选择“工具”上的“报表编辑器”,打开“报表编辑器”窗口。

在“报表编辑器”窗口中,再单击“数据模型”小图标,进入:

“报表编辑器-数据模型”窗口。

●双击对象导航器中的“数据模型结点图标,进入:

“报表编辑器-数据模型”窗口。

●在“窗口”菜单上选择一个含有数据模型的窗口。

组成

数据模型编辑器由以下部分组成:

绘图区:

在绘图区中可以以图形方式对对象进行创建、修改、定位和删除操作。

但是在这里只能看到对象间的相对位置关系,如果想看对象的具体设置,必须打开对象的属性框。

工具条:

工具条提供了一些对数据模型及其对象进行操作的工具。

其中包括有从“报表编辑器-数据模型”窗口转移到:

“报表编辑器-布局模型”窗口或“报表编辑器-参数表格”窗口的工具。

注意,数据模型编辑器、布局编辑器和参数表格编辑器都属于报表编辑器,一次只能打开其中一个,可以通过工具条在三者窗口间切换。

查询

查询实际上就是一条SQLSELECT语句,它决定了从数据库中指定的表或视图中取哪些行和列。

通过查询所取得的数据可被用于计算、排序、集合运算等,并可以在报表输出时显示。

内部查询和外部查询

报表中的查询可分为两种:

内部查询和外部查询。

两者的区别在于外部查询可以被其他报表多次引用,而内部查询不能被其他报表参考引用,只能被其所属的报表引用。

单查询报表和多查询报表

根据报表中查询的个数可以将报表分为单查询报表和多查询报表。

单查询报表

只有一个查询的报表称为单查询报表。

单查询报表的常见格式有列表式(Tabular)、标签式(MailingLabel)、信封式(FormLetter)以及分组式。

单查询报表虽然只有一个查询,但可以多次显示查询数据,并且可以用不同的格式显示。

多查询报表

含有多个查询的报表称为多查询报表。

多个查询相互之单可以有关联,称为相关的多查询报表;也可以没有关联,称为不相关的多查询报表。

相关的多查询报表

多个查询之间相互关联,一般用于主从式报表,也就是说,报表的一部分数据决定了报表的另一部分数据。

取出前一部分数据的查询称为主查询,取出后一部分的查询称为从查询,主查询的每一条记录查询都将引起从查询的执行,从查询只检索与主查询匹配的那些记录。

两个查询之间通过定义数据连接产生联系。

不相关的多查询报表

多个查询之间没有关联,OracleReports将独立地为每一个查询获取数据,显示出来的是一系列不相关的数据。

查询之间运行的先后次序由数据模型中的查询次序决定。

在数据模型中,查询次序是先上后下,先左后右,所以放在左上角的查询最先执行。

将一个查询的数据分成几个集合,每个集合称为组。

组有过滤查询数据的功能,通过组可以对查询的结果进行过滤。

在缺省的情况下,OracleReports为数据模型中的每一个查询产生一个组,取名取成查询的名称。

查询名称以“q_”开头,而组名以“g_”开头。

例如,查询名称为“q_emp”,则OracleReports为其产生的缺省组名为“g_emp”。

组的名称可以修改,但若在组建立以后改变查询的名称,其组名不会随着相应改变。

用户定义组可用于以下三种情况:

产生分组报表;产生矩阵报表;产生子汇总。

组过滤器

组过滤器允许有条件的选择由查询检索出来的数据,通过组过滤器过滤查询结果。

OracleReports封装过滤器:

OracleReports封装过滤器允许指定在一个组中希望检索的记录数,在报表开发过程中可以使用封装过滤器来限制数据。

OracleReports软件包中有两个封装过滤器:

FirstFilter,只显示组内前n条记录;LastFilter,只显示组内后n条记录。

应用一个封装过滤器的步骤如下:

双击组对象,打开组对象属性选项板;选择过滤器类型,可选择“无”、“前几个”、“后几个”和“PL/SQL”;选择“前几个”或者“后几个”则会出现“记录的数值”,在该项中填入所要过滤的记录数目。

用户定义过滤器:

用户可以定义自己的过滤器来限制在特定条件下的记录的检索。

用户定义的过滤器是通过编写PL/SQL代码建立的。

建立用户定义过滤器的步骤如下:

双击组对象,打开组对象属性选项板;选择过滤器类型为“PL/SQL”,则会出现“PL/SQL过滤器”;单击“PL/SQL过滤器”按钮,弹出“PL/SQL程序单元编辑器”,输入PL/SQL程序,编译通过后退出。

组的层次结构

数据模型中组的层次决定了在缺省布局对话框中组的次序,同时也决定了在缺省布局中组的次序,但这不是最终的报表格式,因为可以对缺省的显示格式进行修改。

在数据模型编辑器中若没有数据连接,则组的层次是由组在数据模型编辑器中的位置从左至右,从上至下决定的。

在数据模型编辑器中若有数据连接,则组的层次可以由数据连接描述。

报表的列表示报表的数据。

在定义了从数据库检索数据的查询后,可能需要进一步调整报表,增加更多的列,而这些列可以用作报表的数据,执行总计汇总等功能。

列的类型

OracleReports中的列可以分为两类,缺省列和用户定义列。

1、缺省列

OracleReports为查询SELECT语句中的每一项都建立一个列,因为它们直接对应从数据库中检索出来的各个列,所以缺省列也叫数据库列。

列的数据类型、宽度都可以直接从数据库的数据字典中获得。

OracleReports除了支持典型的数据类型的列(如字符型、数值型、日期型)以外,还支持图型列。

图型列的值可能是:

直接存储在数据库中的图型:

这种列的数据类型通常是RAW或LONGRAW。

在这种情况下,需在列的属性选项板中指明图形格式。

文件名或者是图型的URL:

这种列的数据类型通常是REF,列中的值对应于用指针指向一个存在操作系统中的文件,报表输出时会根据指针将文件内容输出,在这种情况下,需在列的属性选项板中将“ReadfromFile”设置为“Yes”并输入文件名。

文件名前可以带有路径,若文件名前没有带有路径,则OracleReports会按照其路径搜索顺序查找文件。

可以通过ReportBuilder的环境变量REPORT30_PATH来设置搜索路径。

注意,若列的属性选项板中“ReadfromFile”被置为“No”并且输入了文件名,则报表最后输出的只会是文件名,而不会是文件内容。

OracleReports支持多种图形格式,包括BMP、CALS、CGM、GIF、JFIF、PCD、PCX、PICT、RAS、TIFF等。

2、用户定义列

用户可在特定的组内或报表一级建立列。

在特定的组内建立的列称为组一级的列,该列与组内的其他列有相同的显示频度。

而报表一级的列只在整个报表中显示一次。

用户定义列分为三种类型:

公式列、占位列和汇总列。

(1)公式列(FormulaColumn):

公式列是对其他列执行一个用户定义的计算。

例如,公式“:

SAL*1.2”中对“SAL”列进行计算。

而“:

SAL+:

COMM”则是对一条记录两个列“SAL”和“COMM”进行计算。

建立公式列的方法是用PL/SQL语句写一个函数,从一个或多个列中计算结果,该列的缺省名为“CF_n”。

建立公式列的具体步骤如下:

在数据模型编辑器中单击:

“公式列”小图标。

如果要在组中建一个公式列,则在画布的空白区域内单击一下鼠标左键,如果要建一个报表一级的公式列,则在画布的空白区域内单击一下鼠标左键,会生成一个公式列对象;双击该公式列对象,弹出其属性选项板;双击属性选项板中的“PL/SQL公式”项,弹出“程序单无编辑器”;在“程序单元编辑器”中为公式项用PL/SQL语句书写一个计算公式并编译通过。

(2)占位列(PlaceholderColumn):

占位列的值和数据类型是通过PL/SQL语句设置的,该列的缺省名为“CP_n”。

当需要有选择地设置一个列的值时(例如,在每次出现第n个记录时,或每次出现包含有特殊值的记录时)占位列非常有用。

可以在以下几个地方设置占位列的值:

在BeforeReports的报表触发器中(如果占位列是一个报表级的列);在报表级的公式列中(如果占位列是一个报表级的列);在占位列组或占位列组下面的公式中(为组中的每一条记录设一次值)。

占位列的用途:

在公式列的PL/SQL代码中计算出的一些值可以分配给不同的占位列;利用占位列保存中间值。

例如,存储当前检索出的最高工资对应的记录。

(3)汇总列(SummaryColumn):

汇总列是对其他列的数据执行计算。

OracleReports为汇总列提供的计算函数有:

总和、平均值、最小值、最大值、计数、第一个、最后一个、%(总计)、标准差、方差。

建立一个公式列的具体步骤如下:

在数据模型编辑器中单击“汇总列”小图标,如果要在组中建立一个汇总列,则在组中你希望该列所在的位置上单击一下鼠标左键,如果要建一个报表一级的汇总列,则在画布的空白区域内单击一下鼠标左键,会生成一个汇总列;双击该汇总列对象,弹出其属性选项板;从属性选项板中的“汇总”项下的“功能”子项的下拉列表中选择所需的计算公式;在“源”子项中选择要汇总的列名;在“重设于”子项中选择汇总的频度,即是就整个报表做一次汇总还是每一页做一次汇总,或者每一组做一次汇总;当“功能”子项被选为“%(总计)”时,“计算于”项有用,其值为计算“%(总计)”的汇总列时的组名。

该项只对“%(总计)”有用。

列的属性选项板

以下分别介绍列的公共属性,以及公式列、占位列和汇总列的各自特殊属性。

1、公共属性

在用户定义列的属性选项板中,有许多属性是相同的。

以下是公共属性:

名称(Name):

列的名称,不超过30个字节。

对于数据库列,即为查询的SELECT语句中列的列名,对于公式列,其名称为“CF_n”,对于占位列,其名称为“CP_n”,对于汇总列,其名称为“CS_n”。

其中n是整数。

备注(Comment):

为列所作的注释,不超过64K。

数据类型(Datatype):

列中数据的类型,有Character、Date、Long、LongRaw、Number、Raw、Ref、Varchar、Varchar2等。

对于数据库列,其数据直接从数据库的数据字共中继承;对于公式列和占位列,其缺省数据类型为Number;对于汇总列,如果其执行的是计数运算,则数据类型为Number,否则与其参与计算的列的类型相同。

宽度(Width):

列值所能占据的最大字符数。

空时的值(ValueifNull):

用此属性的值代替空值的列值。

以上属性中,除了备注和空时的值两个属性是可选的外,其余属性必须要填写。

2、公式列的特殊属性

分隔次序(BreakOrder):

给出列值的排列顺序,有三个选择:

升序、降序或不排序;

PL/SQL公式(PL/SQLFormula):

是一个按钮,用于弹出“PL/SQL编辑器”。

3、占位列的特殊属性

PL/SQL公式(PL/SQLFormula):

是一个按钮,用于弹出“PL/SQL编辑器”。

4、汇总列的特殊属性

功能(Function):

确定对“源”中指定的列的值进行何种形式的计算。

有值列表可供选择。

源(Source):

指定进行运算的列的名称。

在该属性中列出了所有可进行指定计算的列名。

计算于(ComputerAt):

计算“%总计”类型的汇总列时的组名。

缺省值为“报表”,有值列表可供选择。

这项属性只有当功能为“%总计”时才有用。

计算百分比是用总数去除一个值。

这项属性定义用于百分比计算的总数。

重设于(ResetAt):

确定何时汇总列上的值会被重置为零,从而可重新计算下一个子合计。

可以设为页、报表或某一组名,分别表示在该页、报表或组上该汇总列的值会被重置为零。

有值列表可供选择。

单元次序(ProductOrder):

只适用于矩阵报表中的列。

由于在矩阵表中有很多组,这些组可以按不同的顺序求值。

因此,在矩阵表中建立汇总列时,就需用ProductOrder属性告诉OracleReports先求哪个组的值,再求哪个组的值。

数据连接

数据连接用于发建立两个查询数据之间的关系。

两个查询之间的连线即表示了一个数据连接。

数据连接的工作原理

数据连接通过主键和外部键定义了两个查询之间的主/从关系。

主/从关系中父查询的每一条记录的产生都会引起子查询的执行,子查询只检索满足在连接中指定的条件的记录。

通常情况下,两个查询之间的连接是等值连接,但也可以采用SQL语句(如WHERE、HAVING、STARTWITH等)建立非等值连接。

当一个带有数据连接的报表执行时,该数据连接就被转换成一个SQL子句,并添加到子

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1