[翻译]初识SQL Server 2005 Reporting Services Part 2

原文:[翻译]初识SQL Server 2005 Reporting Services Part 2

 在Part 1文章中我们对SQL Server Reporting Services 2005(SSRS)有了一个初步的了解。我们分别通过报表向导和报表设计器构建了两个报表。在Part 2我们将以一个SSRS开发者的身份深入查看更多特征信息。

  以下是我们要研究的:

  l 表达式的用法。这些表达式可以让你动态的控制从控件属性到数据绑定的报表的各个方面。

  l 报表中用到的计算和操作的通用函数。

  l 报表中自定义代码。

  我们也会创建一个矩阵控件,创建一个子报表。最后我们会见识一下报表的动态钻取和排序。

开始

  为了运行示例,你需要安装和配置了SQL Server 2005, SQL Server 2005 Reporting Services和Visual Studio 2005,如果你还不太清楚该怎么做,那么可以回到Part 1去学习一下。然后下载源代码文件。这些文件中包含了Visual Studio 项目和创建ReportDemo数据库的SQL脚本。如果这些你都有了,那么可以直接创建数据库了。

  现在先创建一个商业智能项目。选择项目中的添加新项,把共享数据源ReportDb.rds和报表文件FirstReportMan.rdl添加到项目中。然后更改数据源中的相关配置信息以保障能连接到你的数据库。我们先从FirstReport.rdl开始,所以先在设计器中将它打开。

表达式

  表达式是写在代码中用来设定属性值的简短陈述。表达式可以设置报表中任意用到的数据属性:参数,全局变量,数据集中的字还有嵌入函数。

  SSRS2005在创建表达式方面有了很大的进步。现在提供了一个很直观的表达式编辑器。如果你滚动查看属性窗口,就会发现大多数控件的属性都可以通过表达式进行设置(表达式选项到处都是)。你也可以看到弹出的属性对话框中有很多写着fx的按钮。这些按钮就可以打开表达式编辑器。

  这样的表达式特征将SSRS2005变成了一个非常好用的工具。因为这使得从数据展现到如何展现都可以动态设置。而不是直接写死在里面。SSRS用表达式对属性进行设置。

  看一下你的报表,现在我们想要高亮显示从特定State来的客户信息。我们可以这样设计表达式:=iff(Fields!State.Value = “CA”, “Bold”, “Normal”)

  如果我们将这个表达式应用到表格的明细列,运行报表的时候,所有来自California的列都被高亮显示。如果你正需要这些数据,就会很方便。然而如果每个高亮显示的列都需要一个报表那就太滑稽了。所以我们得进行动态设置。当报表运行的时候根据传入的参数不同而高亮显示不同的内容。

  首先,先提添加一个参数。命名为HightlightState,设置如下的数值:


California


CA


Florida


FL


Louisiana


LA


Illinois


IL


Texas


TX

  单击确定。

  笔记:

  可以看到要对一个参数进行预先赋值操作的时候,有一个来自查询选项。你可以通过在报表设计器定义数据集来使用这个选项。

  下一步就是建立表达式。单击报表中的表格控件,可以看到表格的左边和上边多出了一列和一行表格,单击前边的图标,可以对正行进行属性设置。单击属性中的FontWeight中的表达式,输入=iif(Fields!State.Value = Parameters!HighlightState.Value, "Bold", "Normal")

  函数iif是SSRS中经常用到的一个表达式。格式是:

  iif (boolean statement, true result, false result)

  如果布尔表达式返回true那么函数将返回ture result,如果布尔表达式返回false,那么函数就会返回false result。布尔表达式会问:现在传进来的参数是不是等于当前的state code呢?如果返回true那么文本就会加粗显示,否则正常。

  转到预览选项卡,可以看到效果。

常见函数

  现在然我们回到表达式编辑器。在编辑器的下半部分有三列。第一列显示的是为创建表达式所用的分类列表,最后一个就是常见函数,展开这个节点选择时间和日期类别。在第二列中双击任意个元素,这样就会将其添加到编辑文本框中,如果把光标放在第一个括号一边,就会看到智能感知的信息:

  现在让我们用Year函数只显示某人的出生年份。选择DateOfBirth列的属性,在常规选项卡的值信息中单击表达式按钮进入表达式编辑器。把表达式改成:

=Year(Fields!DateOfBirth.Value)

  这样就行了,现在预览一下。

  值得注意的还有聚合函数。这些函数可以帮助你处理数据集中的数据。比如说,你的报表是关于一些商品的单价信息,这样就可以用Sum函数创造一个总价格。再比如,你有一个关于购买日期和每笔交易的购买数量报表,就可以通过AVG函数获得平均价格。

全局变量

  再次回到表达式编辑器。这次让我们单击第一列中的全局,第二列中就会显示提供给报表使用的全局变量。

  这一次让我们利用全局变量做一个对页数进行计数的报表。首先,给报表加上页脚,将四个文本框拖拽进页脚,把字体属性设置为8pt,按照下面方式进行设置:


Page


=Globals!PageNumber


of


=Globals!TotalPages

  预览报表就可以看到有“‘Page 1 of 5‘.”这样的信息。

  还有一些值得注意的全局参数:

  l ExcutionTime – 这个会显示运行报表需要的时间

  l ReportUrl – 这个保证你的报表来自正确的数据源

  l UserID – 这个显示报表运行的User ID

  你可以利用这些全局参数进行报表的基本诊断操作。你可以将这些参数加到页脚并利用参数对它们进行显示或者隐藏。这样在发布后,报表使用者就可以看到一个清爽的报表,而你可以看到跟多的信息。

自定义函数

  SSRS2005里面有100多个函数,这足以应付大多数情况的需要,但是有的时候你需要更灵活的控制。所以在这里你可以用VB.NET 或 C#进行编写自定义的表达式。

  现在让我们添加一个进去。

  打开报表设计器的布局选项卡,选择报表菜单中的报表属性,直接跳到代码选项卡。我们将写一个根据传入的数据不同而返回不同颜色的函数。然后在表格细节中对这个函数进行运用。

  把下面的代码拷贝进去:

  Public Function GetColor(ByVal status as String) as String

     IF status = "100" Then

       Return "White"

     End IF

     IF status = "101" Then

        Return "Yellow"

    End IF

     IF status = "102" Then

        Return "Tomato"

     End IF

  End Function

  单击确定关闭对话框。

  笔记:

  所有的颜色都在属性中的Color下拉列表中。

  我们现在有了一个函数,现在来包装成表达式。右击Customer Status列打开属性窗口。找到Background Color属性,从下拉列表中选择表达式。添加下面的代码创建一个表达式:

  =code.GetColor(Fields!CustomerStatus.Value)

  当报表运行的时候,这个函数会被处理,而且参数信息将会传递进去。函数根据参数决定该显示哪个颜色。SSRS就可以确定要用那个颜色赋值给相应的单元格。

  注意为了使用这个函数我们需要这样写:=code.<myfunction>.

  预览报表。

子报表

  子报表就是嵌入到另一个报表中的报表。子报表可以使用参数还有使用自己的数据集。值得注意的是其实SSRS中子报表是另外一个报表。实际上,在SSRS中,你可以单独运行一个子报表。

  为了创建子报表,只需要从工具箱中拖拽一个子报表控件到报表中然后设置它在哪个报表中呈现。如果子报表需要参数,你就得告诉主报表要把那个参数传递给子报表。其实很简单。

  现在在项目中添加一个报表MainReport.rdl,再创建一个使用共享数据源的数据集。使用下面的查询:

  SELECT CustomerID, FirstName, LastName FROM Customer

  转到布局选项卡,拖拽一个表格控件进去。选择第一列将客户的姓添加进去,第二列是名字。第三列的名字设置成Address。预览报表确定可以运行。

  再创建一个子报表MySubReport.rdl。同样创建一个使用共享数据源的数据集。使用下面的查询语句:

  SELECT Address, City, State, ZipCode

  FROM Customer

  WHERE (CustomerID = @CustomerID)

  转到布局选项卡,利用文本框控件显示地址信息。只需要把数据集字段拖拽进去就可以自动创建文本框控件。还可以注意到当这样做的时候,文本框中的数据  自动使用First()函数。这个函数将使用数据集返回的第一行数据,其它的将被忽略。

  现在用“100”这个书进行运行报表测试。

  现在回到MainReport.rdl主报表。为了进行嵌入操作,将一个子报表控件拖拽进Address列。右击子报表选择属性,将子报表设置成MySubReport。

  接下来转到参数选项卡,这里正是你将子报表连接到主报表的地方。在这里设置要将哪个参数传递个子报表相应的参数。  

  在参数名中选择CustomerID,参数值中选择=Fields!CustomerID.Value,这样就可以让子报表知道该显示那个客户的信息。

  单击确定,预览主报表。

矩阵

  下面我们要用矩阵控件来创建一个矩阵风格的报表。

  首先,在项目中添加一个MatrixReport.rdl报表。用共享数据源添加一个数据集,查询语句是Select * from Customer。

导航到报表设计器布局选项卡,将一个矩阵控件拖拽进来,将State拖进行,将CustomerStatus拖进列,将FirstName和LastName拖进数据区域。经过一点点美化后,应该是下面的效果:

  运行起来是这个样子:

添加钻取

  SSRS中的钻取功能可以使得你的报表像一个树一样可以展开和收缩。

  首先,建立一个AdvancedTable.rdl报表。用共享数据源添加数据集,查询语句是Select * from Customer query。

转到布局选项卡,将一个表格控件拖拽进去。首先我们得给表格控件添加分组。选中表格控件,右击前面的小图标,选择插入组。分组和排序属性对话框就弹出来了,在分组方式的表达式选择=Fields!State.Value,这样报表就会以State进行分组。现在把State字段拖拽到第一列组列。然后把FirstName,LastName和City拖进明细区域。美化一下进行预览。

  我们现在实现了分组,但是还不能进行钻取。选择表格控件,选择明细列前边的小图标,右击选择属性。展开Visibility部分,将Hidden属性设置为True,把ToggleItem属性设置为State。Hidden决定了报表运行时这一列的状态。如果设置为True那么开始是缩起和隐藏的。把ToggleItem属性设置为State,这样当报表运行的时候旁边就会向树状结构一样有个可以展开的小“+”号。

  预览报表发现只有States列显示,但是可以对其进行展开和收缩操作。

添加动态排序

  要对表格控件进行动态排序操作其实很容易。先打开FirstReportMan.rdl报表。转到报表设计器的布局选项卡。右击表头的FirstName文本框选择属性。转到交互式排序选项卡。将将交互式排序操作添加到词文本框复选框选中,然后设置排序表达式为=Fields!FirstName.Value,排序表达式是在这一列中显示的值。对其他列也进行类似设置。

  现在预览报表,就可以进行每一列的交互式排序。

总结

  我希望这些SQL Server Reporting Services 2005高级的主题能帮助你更好的与用户进行沟通。在Part 3中,我们将会看一下图标控件和它的多种多样的功能。

时间: 2024-10-08 09:32:32

[翻译]初识SQL Server 2005 Reporting Services Part 2的相关文章

[翻译]初识SQL Server 2005 Reporting Services Part 1

原文:[翻译]初识SQL Server 2005 Reporting Services Part 1 构建和部署基本报表 如果曾经存在一项工作使得“真正的”开发者给他的上司泡蘑菇,那就是构建报表.毕竟那并不是真正的开发,更像是制作美化的格式.而且你所使用的构建报表的工具试图提供一个抽象层,这个经常妨碍你对报表的真正掌控.我以前经常听到这些争论.如果这听上去像你曾经在一个水制冷器旁边的对话,那么我请你仔细关注一下SQL Server 2005 Reporting Services(SSRS). S

SQL Server 2005 Integration Services (SSIS)数据源之MySQL

一安装MySQL数据库的ODBC驱动 下载MySQL Connector ODBC 3.51.rar 单击setup按默认安装即可! 如下图所示,在ODBC数据源管理器中看到"MySQL ODBC 3.51 Driver"即表示安装成功! 当然看不到,那么你就要重新安装了!当然还有不同的版本! 二建立MySQL的ODBC数据源 如下图所示: 特别提醒: 一定要在Connect Options选项栏中设置字符集,否则导入到SQL Server2005中会出现乱码! 我分别测试了以下三种均

Microsoft SQL Server 2008 Reporting Services

1.安装和配置 1)安装SQLSERVER 2008过程中,在“功能选择“ 选项卡时.需要勾选Reportting Services和Bussiness Intelligence Developement Studio. 2)点击”下一步“ ,如果选择”安装本机模式默认配置“ ,在安装完成后,数据库中会有两个默认数据库:ReportServer,ReportServerTempDB两个默认数据库,用于报表测试用. 2.Reporting Services配置 1)通过”开始“—>”Microso

SQL Server 2005 硬件级软件要求

SQL Server 2005 安装要求 本主题介绍了安装 SQL Server 205 的硬件和软件要求,以及查看安装文档的说明. 硬件和软件要求(32 位和 64 位) 访问 SQL Server 2005 联机丛书以获取安装信息 硬件和软件要求(32 位和 64 位) 以下部分列出了运行 Microsoft SQL Server 2005 的最低硬件和软件要求. 注意: 在 32 位平台和在 64 位平台上运行 SQL Server 2005 的要求是不同的. 硬件和软件要求(32 位和

SQL Server 2005中设置Reporting Services发布web报表的匿名访问

原文:SQL Server 2005中设置Reporting Services发布web报表的匿名访问 一位朋友提出个问题:集成到SQL Server 2005中的Reporting Services已经将报表模板发布到IIS服务器,客户端通过浏览器访问时,默认会弹出Windows集成身份验证的对话框.如果在IIS配置里面把允许匿名(IUSR_**)访问的选项勾选,客户端再次访问的时候,会提示IUSR_** 访问权限不足.   对于这个问题,除了要设置IIS允许匿名访问外,还需要设置Report

SQL Server 2008 VS 2005 Reporting Services 整合SharePoint 2007 支持比较Part1

摘要:SQL Server 2008 VS 2005 Reporting Services 整合SharePoint 2007 支持比较Part1 最近遇到客户问SQL 2005 Reporting Services 整合SharePoint 模式中的数据驱动订阅.后来发现在2005跟本不支持.因此为了这个我又去做了2008 跟2005的比较后来才发现2008支持了.=_=有没有搞错呀...2005未何不支持勒.(看来我客户要失望了) Part 1.为目前支持部分比较表如下. 说明 2008 2

22. SQL -- SQL Server 2005 和SQL Server 2008新特性

SQL SERVER 2005 与SQL SERVER 2008 新特性   SQLSERVER 2005 新特性 Enhanced Data Types:存储最大8K-2G Partitioned Table(分区表):数据拆分管理 背景:一个公司,有目前现存数据以及历史数据,各在一台SER 上,服务器访问方式: SQL 2000 TABLE 1:在一张table 中,对数据进行分区 Enhanced Indexing Features SER 1 SER 2 现存数据 TABLE 1 TAB

win7(windows 7)系统下安装SQL2005(SQL Server 2005)图文教程——转载

操作系统:Microsoft Windows 7 旗舰版(32位) 数据库版本:SQL Server 2005 简体中文开发板 数据库下载链接:http://pan.baidu.com/share/link?shareid=322740&uk=268517599 (地址已更新2013-03-09) ------------------------------------------------------------------------------------------------- 安装

数据仓库应用(三): SQL Server 2005的数据仓库应用--联机分析OLAP

关联文章: 数据仓库应用(一):数据仓库模型设计 数据仓库应用(二):数据抽取.转换.加载(ETL) 前言:有关数据仓库的研究,并不仅仅停留在理论上.目前,几种主要的RDBMS产品,如Oracle.SQL Server.Informix和 Sybase等,都可以为用户提供数据仓库项目的开发工具:而一些通用的应用程序开发平台,如Delphi等,也能对数据仓库项目的开发提供有效的支持.我们将使用Microsoft SQL Server 2005提供的数据仓库工具SSAS对数据仓库中的数据进行OLAP