文章共有两部分。在第一部分中,看到了如何为SQL Developer、Oracle Client和Report Builder设置环境。然后,使用SQL Developer在Oracle数据库中创建了表和存储过程。最后,使用Report Builder创建了一个简单的报告,该报告将显示来自Oracle数据库的数据。
现在,在第二部分中,将为报告提供参数,并启用存储过程以根据给定的参数过滤数据。然后将对报告进行格式化,并最终查看更多可用的选项,如Tablix和函数。演示应用程序的最终报告将如下所示(点击图片查看全尺寸图片):
本文适用于Report Builder 3.0的初学者,建议在阅读这部分之前,请先查看第一部分。
为了保持文章的合理大小,本文分为两部分。两部分的内容都按照以下大纲安排:
在第一部分中,创建了一个简单的报告,它不提供任何过滤器。假设如果用户想要生成一个包含特定部门员工的报告。为了实现这一点,首先需要更新存储过程,使其能够接受输入参数,然后需要相应地修改报告。以下是实现此需求的步骤。
替换名为“SP_GETEMPLOYEES”的存储过程,使其能够接受部门名称作为输入。将使用SYS_REFCURSOR作为输出参数。这个存储过程将有一个简单的SELECT查询,根据给定的部门从Employee表中获取数据,如下所示:
CREATE OR REPLACE PROCEDURE SP_GETEMPLOYEES (DEPARTMENTNAME varchar2, e_recordset OUT SYS_REFCURSOR) IS
BEGIN
OPEN e_recordset FOR
SELECT * FROM EMPLOYEE WHERE DEPARTMENT = DEPARTMENTNAME;
END SP_GETEMPLOYEES;
现在将执行“SP_GETEMPLOYEES”存储过程,以验证存储过程是否正常工作。以下是执行存储过程的语法。执行SP的语法:
var c refcursor;
EXECUTE SP_GETEMPLOYEES('DBA', :c);
PRINT c;
以下是存储过程执行的截图,能够看到过滤后的数据:
现在添加数据源和数据集的步骤与在第一部分中所做的相同(在“创建报告”>步骤#1至#4中)。但这次在添加数据集之后,将能够看到EMPLOYEEDATASET数据集已添加到数据集文件夹中,并且一个新的参数DEPARTMENTNAME已添加到“参数”文件夹中,如下所示。这里,DEPARTMENTNAME是一个输入参数,与在存储过程中声明的名称相同。
添加报告和表格的步骤与第一部分中给出的相同(在“创建报告”>步骤#6和#7中)。完成这些步骤后,点击选项卡中的运行按钮或按F5运行报告。报告将为创建。在运行报告时,将看到一个文本框,可以在其中提供“DEPARTMENTNAME”的值,该值将传递给SP,报告将正常工作并按预期过滤数据。
在上面的截图中,“DEPARTMENT NAME”的标签之间没有空格。如果用户想要显示所有部门名称的下拉菜单,让通过右键单击DEPARTMENTNAME参数并单击“参数属性”来实现。在这里,如果用户只需要选择一组值或根据要求选择许多其他格式,可以为用户提供一个漂亮的UI作为下拉菜单。
进一步,将进行格式化,以显示部门名称为下拉菜单,并选择一些选定的值。在提示文本框中,可以提供空格或任何其他文本,也可以显示为下拉菜单的标签。
这里,如果用户希望在下拉菜单中以大写字母显示数据,但数据以其他格式保存在Oracle表中。为了处理这种情况,有提供与参数值不同的显示的设施。按照以下截图操作,然后点击确定。
运行报告,希望能够看到下拉菜单中的部门名称。
Report Builder为提供了格式化报告的选项,这些选项与MS Excel/Word中的基本操作类似。例如,格式化单元格中的文本,添加行/列,添加页眉/页脚等。它还提供了各种内置字段,可以通过简单地拖放来在报告中使用它们。
假设想在报告中添加执行时间和名称。以下是需要做的。在表头上方插入两行。在第一行中,将报告名称设置为“EMPLOYEE DETAILS REPORT”作为报告的名称。在第二行中,写上“Rerun On”,这将是标签,然后从左侧窗格中拖放“Execution Time”到报告中。它将显示报告执行的日期和时间。执行时间是一个函数,作为左侧窗格中可用的内置字段。还有许多这样的内置字段,可以根据需要使用它们。
很多时候,需要根据相同的条件放置颜色和其他类型的高亮显示。在这种情况下,需要使用代码进行格式化。
假设用户希望根据其地址以不同的颜色查看记录。为了实现这一点,请转到报告构建器,导航到属性窗口。(如果看不到属性窗口,请单击上方功能区的视图选项卡,在那里可以找到属性复选框。)选择表格中的一行,在属性窗口中查找“BackgroundColors”,单击其值文本框,然后单击“Expression”超链接。现在在表达式窗口中编写如下代码:
SWITCH(
Fields!ADDRESS.Value = "Bangalore",
"LightBlue",
Fields!ADDRESS.Value = "Hyderabad",
"Moccasin"
)
现在通过单击上述截图中显示的运行按钮来运行报告,将获得所需的结果。