使用 Report Builder 和 Oracle DB 创建报表 - 第 2 部分





5.00/5 (7投票s)
在本系列文章中,我将分享如何使用 Report Builder 从 Oracle 数据库获取数据来创建报表。
引言
这是本系列文章的第 2 部分(第 1 部分在此)。在本系列文章中,我将分享如何使用 Report Builder 从 Oracle 数据库获取数据来创建报表。根据给定的要求,在获取数据之前,我们需要运行一个存储过程,该存储过程将根据给定的参数从表中获取数据,然后我们需要使用适当的格式在 Report Builder 中填充数据。
这是本系列文章的第二部分,共两部分。在第一部分中,我们了解了如何设置 SQL Developer、Oracle 客户端和 Report Builder。然后,我们使用 SQL Developer 在 Oracle 数据库中创建了表和存储过程。最后,我们使用 Report Builder 创建了一个简单的报表,用于显示 Oracle 数据库中的数据。
现在,在第 2 部分中,我们将为报表提供参数,并启用存储过程以根据给定参数筛选数据。然后我们将对报表进行格式化,最后查看更多可用选项,如 Tablix 和函数。演示应用程序的最终报表如下图所示(单击图像可获取全尺寸图像)
本文适用于 Report Builder 3.0 的初学者,我建议在阅读此部分之前,请先查看第 1 部分。
目录
为了保持文章的合理篇幅,本文分为两部分。两篇文章的内容按照以下大纲进行组织:
第一部分
- 演示概述
- 使用 SQL Developer 测试连接
- 设置 Oracle 客户端
- 创建新表和存储过程
- 创建报表
第二部分
- 创建带参数的报表
- 格式化报表
- 使用代码格式化
- 更多选项
- 参考文献
创建带参数的报表
在第 1 部分中,我们只是创建了一个不提供任何筛选功能的简单报表。假设用户需要一项功能来生成包含特定部门员工的报表。为了实现这一点,我们首先需要更新存储过程,使其能够接受输入参数,然后我们需要相应地修改报表。以下是实现此需求的步骤。
- 替换存储过程“
SP_GETEMPLOYEES
”,使其可以接受部门名称作为输入。我们将使用SYS_REFCURSOR
作为输出参数。此存储过程将仅包含一个简单的select
查询,用于根据给定的department
从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;
以下是存储过程执行的截图,我们能够看到筛选后的数据 - 现在,添加
DataSource
和Dataset
的步骤与我们在第 1 部分(“创建报表”部分 > 步骤 #1 到 4)中所做的相同。但这次添加Dataset
后,您将能够看到EMPLOYEEDATASET
数据集已添加到 Datasets 文件夹中,并且在“Parameters”文件夹中添加了一个名为DEPARTMENTNAME
的新参数,如下图所示。在这里,DEPARTMENTNAME
是一个输入参数,其名称与我们在存储过程中声明的相同。 - 现在,添加报表和表格的步骤与第 1 部分(“创建报表”部分 > 步骤 #6 和 7)中给出的相同。完成这些步骤后,单击选项卡中的“运行”按钮或按 F5 运行报表。将为您创建报表。运行报表时,您会在上方看到一个文本框,您可以在其中提供“
DEPARTMENTNAME
”的值,该值将传递给 SP,报表将正常工作并按预期筛选数据。 - 在上面的截图中,“
DEPARTMENT NAME
”标签之间没有空格。如果用户想要一个下拉列表来显示所有部门名称呢?让我们通过右键单击DEPARTMENTNAME
参数并单击“参数属性”来实现。在这里,您可以根据需要,如果用户只需要选择一组值,或者其他许多格式,来向用户显示一个漂亮的下拉列表 UI。 - 接下来,我们将进行格式化,将部门显示为包含少量选定值的下拉列表。在提示文本框中,您可以添加空格或任何其他您想要作为下拉列表标签显示的文本。
- 在这里,如果用户希望在下拉列表中以大写字母显示数据,但数据在 Oracle 表中以其他格式保存。为了处理这种情况,我们提供了与参数值不同的显示方式。按照下面的截图并单击“确定”。
- 运行报表,希望您能在下拉列表中看到
department
名称。
格式化报表
Report Builder 提供了一些选项来格式化报表,这些选项类似于 MS Excel/Word 中可用的基本操作。例如,单元格中文本的格式化、添加行/列、添加页眉/页脚等。它还提供了各种内置字段,您可以通过简单地拖放来在报表中使用它们。
假设您想向报告添加执行时间和名称。您需要做以下事情:
在表格标题上方插入两行。在第一行中,将报表名称命名为“EMPLOYEE DETAILS REPORT
”。在第二行中,写入“Rerun On”作为标签,然后从左侧窗格的内置字段中拖放“Execution Time”。它将显示报表执行日期和时间。“Execution Time”是一个函数,在左侧窗格中作为内置字段提供。还有许多其他类似的内置字段,您可以根据需要使用它们。
使用代码进行格式化
很多时候,我们需要根据相同条件设置颜色和其他类型的突出显示。在这种情况下,我们需要使用代码进行格式化。
- 假设用户希望根据其
地址
以不同颜色查看记录。要实现此目的,请转到报表生成器,导航到属性窗口。(如果无法看到属性窗口,请单击顶部功能区中的“视图”选项卡,您将看到属性复选框。)在表中选择一行,然后在属性窗口中查找“BackgroundColors
”,单击其值文本框,然后单击“Expression
”超链接。现在在表达式窗口中写入如下所示的SWITCH
语句,然后单击“确定”。=SWITCH( Fields!ADDRESS.Value = "Bangalore", "LightBlue", Fields!ADDRESS.Value = "Hyderabad", "Moccasin" )
上述步骤在下面的截图中突出显示现在,单击上面截图所示的运行按钮来运行报表,您将得到所需的结果。
- 如以下截图所示,使用“导出”选项,您可以将报表保存为给定格式。
更多选项
- 自定义函数:您可以用 VB.NET 编写自定义代码,并在报表中使用这些函数用于各种目的,例如可见性或格式设置。有关更多信息,请查看此 MSDN 页面和此文章。
- Tablix:它为您提供在一个报表中提供多个表格(数据区域)的功能。有关更多信息,请阅读此 MSDN 页面。
- 交互式排序:它允许用户在表格中的行或矩阵中的行和列之间切换升序和降序。有关更多信息,请查看此 MSDN 页面。
- 探索更多可能性:MSDN 此处提供了完整的指南,描述了 Report Builder 的各种功能。
结论
在本系列文章的第一部分,我们学习了如何使用 Report Builder 通过存储过程从 Oracle 数据库获取数据来创建简单的报表。在这一部分中,我们学习了如何向存储过程添加参数以筛选数据,在报表中进行一些格式设置,并查看可用的高级选项。欢迎您的评论和建议,以使本文更有用。谢谢!