预览报表就可以看到有“'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..
预览报表。 子报表
子报表就是嵌入到另一个报表中的报表。子报表可以使用参数还有使用自己的数据集。值得注意的是其实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中,我们将会看一下图标控件和它的多种多样的功能。