Oracle报表工具Reports 10g的应用

时间:2022-06-14 04:09:37

Oracle报表工具Reports 10g的应用

1 引言

随着信息时代信息的极大丰富,各类企业或机构对于大量信息的有选择的筛选浏览需要越来越迫切,找出有用的信息不但能节省时间、提高效率,也是解决问题的最好方式。作为一家承载大量信息数据的全球著名数据库公司oracle对于这样的需求作出了回应:Oracle Reports 10g。

2 Oracle Reports 简介

Oracle Reports 10g由 Oracle Reports Developer(Oracle Developer 套件的一个组件)和 Oracle Application Server Reports Services(Oracle 应用服务器的一个组件)组成。它与Oracle其他开发工具类似,完全支持开放标准,为开发人员集成了各种类型的数据,同时也支持Web开发中所有主流的格式来传递数据。它可以使用的数据源有:SQL、PL/SQL、XML、JDBC(Java数据库连接)、文本文件、OLAP(Oracle在线解析处理)、Java API(Java应用编程接口)。有了这么多数据源支持,Oracle Reports 10g基本上包容了各种格式所描述的数据,从而满足了多方面的需要。

Oracle Reports 10g的报表也非常丰富,它支持两种布局方式:一种是文件布局(包括RTF(富文本格式)、PDF、HTML/HTMLCSS、Excel-compatible spreadsheet);二是Web布局(包括JSP、HTML/HTMLCSS、XML)。有了这些多种格式的报表,我们可以简单地把报表传到Web服务器上,需要的用户就通过Web浏览器访问报表。

Oracle Reports 10g开发环境符合“所见即所得”的原则,提供了预览报表工具和JSP引擎,开发人员可以使用Oracle reports 10g提供的Report Wizard来自动生成报表,也可以完全自己开发报表,也可以两种方法混合使用。

3 开始使用Oracle Reports

Oracle Reports用Reports Builder程序来创建报表,这个程序提供了很多向导来帮助开发人员开发报表,而向导所生成的报表又可以随时修改完善,不用向导开发人员也可以手工创建报表的每一部份,本文主要阐述使用报表向导来创建报表的一些具体应用

程序一开始会提示用户使用Report Wizard还是使用手工建立报表,我们选择使用Report Wizard,此向导将会通过让开发人员完成一系列的与报表特性相关的选项来创建报表,这些选项如下所示:

(1)选择要产生的布局类型:Web布局,页面布局,同时创建两个布局。

(2)报表样式和报表标题。

(3)选择数据源类型:这里我们选择SQL Query。

(4)数据源定义,这里主要是构建一个查询已选择要在报表中使用的数据。需要注意的是:Oracle Reports所在的Oracle Reports Developer有自己的Oracle Net Configuration Assistant,它不等同于数据库常用的Net Configuration,必须新建一个Net Configuration来连接上目标Oracle数据库。

(5)选择要在报表中显示的域。

(6)选择希望计算总计的域。

(7)修改域和总计的标签及宽度。

(8)选择报表模板。

完成以上步骤之后,我们就构建了一个基本的Oracle报表(如图所示)。

可以看到,上图左边是报表的对象导航器,它为每个报表对象提供了一条记录,以及所有对象的层次结构。为了便于获取和修改,Reports Builder 对报表对象进行了逻辑分组。分别是:数据模型、Web源、页面布局、页面参数表单、报表触发器、程序单元和附加的库。若想浏览这些报表元素的更多信息,只要单击想要浏览的项目就能在报表的Property In-spector中看到。在Property Inspector中也可以修改报表元素的属性。

4 改进我们的报表

以上这个报表适用于固定报表,但如果最终用户想自己选择在报表中看到的数据,这就要求报表要有更大的灵活性,这种固定报表显然不能满足要求,好在Oracle Reports为开发人员提供了创建用户参数的功能,以满足用户对于报表数据灵活浏览的需求。

在对象导航器中的数据模型下面有一个用户参数元素,双击它可以创建一个新的用户参数P_1(在Oracle Reports中为参数采用类似于P_1的名称,把查询命名为Q_1,将区域命名为R_1),我们在属性监察程序里把P_1改为P_Area,这样就为这个参数提供了一个有意义的名称,而且这样做不会影响报表的性能,当参数很多时,这种方法对于开发人员而言就非常有用。此参数的默认类型为Number型,由于我们要为最终用户提供选择罐区的能力,所以把它改为字符型,宽度默认为20。接下来我们将为最终用户提供一个可供选择的参数值列表,以方便用户使用,单击值列表按钮,我们将数据库中包含的罐区添加到参数列表中;跟着需要把新建的参数应用到查询中,单击对象导航器中数据模型下的查询按钮,再在属性监察程序中打开SQL查询语句,修改如下:

SELECTALL TANK.TANK_NAME, TANK.TANK_AREA_ID,TANK_AREA.TANK_

AREA_ID, TANK_AREA.TANK_AREA_NAME

FROMTANK, TANK_AREA

WHERE (TANK.TANK_AREA_ID= TANK_AREA.TANK_AREA_ID)

AND TANK_AREA_NAME=:P_AREA

这样就把所创建的用户参数P_AREA像变量一样被引用。创建完参数,我们再用Reports Builder菜单中的工具下面的参数表单创建器创建参数表单,报表中的所有的系统参数和用户参数都在参数表单中,系统参数是为所有报表而定义的,在此不予赘述,这里我们选择要出现的参数P_AREA,并把它的标签改为有特定意义的名称,比方说:“请选择要查看的罐区:”。至此一个包含用户参数的报表就做好了,运行报表,我们可以通过参数来选择需要显示在报表中的数据。

报表参数使得报表功能更加强大和灵活,但也存在风险,一旦数据库中的数据发生变化,参数将会失效,更好的方法是直接查询数据库中的数据来作为参数使用,动态添加至参数列表中。这样上面的报表将有一些小小的变化。在参数值列表对话框中,我们选择“Select语句”,然后在编辑器窗口中输入以下Sql语句:

select tank_area.tank_area_name from tank_area order by tank_area_name

运行报表参数表单下拉框将会读取数据库中的值,这样就动态地建立了一个参数表单。

Oracle Reports 10g还有很多实用的功能,比方说:当用户需要将报表中八罐区的数据突出显示为红色,当然Sql语句是不能完成这个任务的,而在Report Builder中就十分容易实现。我们在这张报表的页面布局中的主体下的主体区段中双击R_G_TANK_NAME向下箭头,在属性监察程序中单击条件格式化按钮,新建一个格式条件:选择Tank_Area_Name,将其值输入为:八罐区,在填充颜色里选红色,OK。在格式触发器中我们就可以看到如下代码:

function R_G_TANK_NAME Format Trigger return boolean is

begin

-- 自动从 Reports Builder 生成。

if (:TANK_AREA_NAME = '八罐区')

then

srw.set_foreground_fill_color('red');

srw.set_fill_pattern('solid');

end if;

return (TRUE);

end;

运行报表可以看到,报表填充颜色变为红色。

图形由于其形象直观的特性而在报表中广泛应用,Oracle Reports 10g提供了一个图形向导,所以可以轻易地在报表中创建并增加图形,以满足需要。

还是上面的例子,比方说:用户想知道每个罐区有多少个罐,并且用图形反映出来。很简单,我们调出图形向导,选择条形图,图形位置选择在报表末尾,X轴类别选择Tank_Area_Name,Y轴选择CountTank_NamePerReport,其他设置可按需配置,最后运行报表所得:显示八罐区有29 个罐。

5 结束语

Oracle Reports 10g 是一个功能强大的报表开发环境,它为开发人员提供了许多有用的开发向导,使得开发人员能很便捷地用较少的代码就能开发出符合需要的报表,满足不同用户的需求,它与Oracle数据库的无缝集成决定了它的稳定性和成熟性,它能从不同的数据源获得数据,生成文件形式的多样性又决定了它的广泛应用和包容性,希望大家从我的应用中获得有益的东西,更好地用好它,发掘出它的更多的开发报表上的好处。

参考文献

[1]Christopher Ostrowski.Oracle Application Server 10G Web 开发.清华大学出版社,2006.1.

[2]赵元杰.Oracle 10G 系统管理员简明教程.人民邮电出版社,2006.3.

[3]格美尼.Oracle Application Server 10g 管理手册.清华大学出版社,2005.5.

上一篇:玩转IE7的五个中级技巧 下一篇:电子商务中会计信息化的应用