在 ReportViewer 报表中使用表达式
from:http://www.cnblogs.com/jobin/articles/1152213.html
有些表达式在报表中很常用。其中包括更改报表中的数据外观的表达式、计算总数的表达式和更改报表项属性的表达式。本主题介绍了报表中可用于常见任务的一些表达式。
报表中的许多表达式都包含函数。您可以编写使用 Microsoft.VisualBasic、System.Convert 和 System.Math 命名空间中的函数的表达式,或将引用添加到其他程序集或自定义代码中。还可以使用 Microsoft .NET Framework 中的类。有关详细信息,请参阅 .NET Framework SDK 类库文档。
函数
报表中的大部分函数为 Microsoft Visual Basic 函数或者内置报表函数。可以使用这些函数来设置数据格式、应用逻辑和访问报表元数据。
Visual Basic 函数
可以使用 Visual Basic 函数来操作文本框中所显示的数据,或者操作参数、属性或报表其他区域中所用的数据。本节举例说明了其中一些函数。有关 Visual Basic 函数的详细信息,请参阅 Visual Basic 文档。
日期函数
可以使用 Visual Basic 函数在报表中提供日期信息。
以下表达式包含 Today 函数,用于提供当前日期。此表达式可用在文本框中以在报表上显示日期,或用在参数中以根据当前日期筛选数据:
=Today()
如果要根据单个参数来提供日期范围,则可使用 DateAdd 函数。以下表达式提供了 StartDate 参数中的日期之后六个月的日期:
=DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)
以下表达式包含了 Year 函数,用于显示特定日期所属的年份。可以使用此表达式将日期组合在一起,或者将年份作为一组日期的标签显示。此表达式为给定顺序的一组日期提供年份:
=Year(Fields!OrderDate.Value)
Month 函数和其他函数也可用于处理日期。有关详细信息,请参阅 Visual Basic 文档。
字符串函数
可以使用 Visual Basic 函数操作报表中的字符串。
可以使用 Format 函数来设置字符串中的日期和数字的格式。 The following expression displays values of the StartDate and EndDate parameters in long date format:
=Format(Parameters!StartDate.Value, "D") & " through " & Format(Parameters!EndDate.Value, "D")
如果文本框只包含日期或数字,则应当使用文本框的 Format 属性(而不是文本框中的 Format 函数)来应用格式。
Right、Len 和 InStr 函数用于返回子字符串,例如,修整 DOMAIN\username 以只返回用户名。 The following expression returns a portion of a string to the right of a backslash (\) character from a parameter named User:
=Right(Parameters!User.Value, Len(Parameters!User.Value) - InStr(Parameters!User.Value, "\"))
The following expression results in the same value as the previous one, using members of the .NET Framework String class instead of Visual Basic functions:
=Parameters!User.Value.Substring(Parameters!User.Value.IndexOf("\")+1, Parameters!User.Value.Length-Parameters!User.Value.IndexOf("\")-1)
决策函数
可以使用 Visual Basic 函数来计算输入值并根据结果返回另一个值。
Iif 函数根据表达式的计算结果是否为 True 返回两个值中的一个。以下表达式使用了 Iif 函数,如果 LineTotal 的值超过 100,则返回布尔值 True,否则返回 False:
=Iif(Fields!LineTotal.Value > 100, True, False)
以下表达式使用了多个 Iif 函数(也称为“嵌套 Iif 函数”),根据 PctComplete 的值返回三个值中的一个。
=Iif(Fields!PctComplete.Value >= .8, "Green", Iif(Fields!PctComplete.Value >= .5, "Amber", "Red"))
以下表达式也是根据 PctComplete 的值返回三个值中的一个,不过使用的是 Switch 函数,该函数返回的是多个表达式中计算结果为 True 的第一个表达式的值:
=Switch(Fields!PctComplete.Value >= .8, "Green", Fields!PctComplete.Value >= .5, "Amber", Fields!PctComplete.Value < .5, "Red")
报表函数
Reporting Services 提供了可用于操作报表中的数据的其他报表函数。本节举例说明了其中两个函数。有关报表函数和示例的详细信息,请参阅 ReportViewer 报表的内置函数。
Sum 函数可计算某一分组或数据区域中多个值的和。此函数可用于表格组的页眉或页脚中。以下表达式显示了订单分组或数据区域中数据的和:
=Sum(Fields!LineTotal.Value, "Order")
如果将包含 RowNumber 函数的表达式用于数据区域中的文本框中,则该表达式将显示表达式所在文本框的每个实例的行号。此函数可用于给表格中的各行加编号。还可以将其用于更复杂的情况,例如,根据行号提供分页符。有关详细信息,请参阅本主题中后面的“分页符”。
以下表达式显示了从最外面数据区域的第一行到最后一行的行号。Nothing 关键字表示函数将从最外面数据区域的第一行开始计数。若要从子数据区域开始计数,可使用数据区域的名称。
=RowNumber(Nothing)
报表数据的外观
可以使用表达式来控制数据在报表上的显示形式。例如,可以在一个文本框中显示两个字段的值、显示报表的有关信息或影响报表中分页符的插入方式。
页眉和页脚
在设计报表时,可能需要在报表的页脚显示报表名称和页码。为此,可使用以下表达式:
以下表达式提供了报表的名称以及它的运行时间。可以将该表达式放入报表页脚或表体的文本框中。 The time is formatted with the .NET Framework formatting string for short date:
=Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")
以下表达式位于报表页脚的文本框中,提供了报表的页码和全部页。
=Globals.PageNumber & " of " & Globals.TotalPages
也可以在报表页眉或页脚中引用表体中的报表项。以下示例说明了如何在页眉中显示页面中的第一个值和最后一个值,类似于目录列表的形式。该示例假定存在一个包含名为 LastName 的文本框的数据区域。
以下表达式位于页眉左侧的文本框中,提供了页面上 LastName 文本框的第一个值:
=First(ReportItems!LastName.Value)
The following expression, placed in a textbox on the right side of the page header, provides the last value of the LastName text box on the page:
=Last(ReportItems!LastName.Value)
可以对页眉或页脚中所引用的报表项应用聚合函数。(不过,不能对表体中所引用的报表项应用聚合函数。)以下示例说明了如何显示页总页数。该示例假定存在一个包含名为 Cost 的文本框的数据区域。
以下表达式位于页眉或页脚中,提供了页面上的 Cost 文本框中的值的和:
=Sum(ReportItems!Cost.Value)
注意页眉或页脚中的每个表达式只能引用一个报表项。
分页符
在某些报表中,可能需要在指定行数之后、组或报表项上放置分页符。为此,在数据区域中创建组(通常是紧挨着详细信息区域的组),在组中添加分页符,然后根据指定行数在组中添加组表达式。
如果将以下表达式放置在组表达式中,则它将给每 25 行指定一个编号。如果为组定义了分页符,将导致每隔 25 行插入一个分页符。
=Int((RowNumber(Nothing)-1)/25)
属性
表达式不仅用于显示文本框中的数据。还可以用于更改将属性应用于报表项的方式。可以更改报表项的样式信息,或更改其可见性。
格式
可以使用表达式改变报表中报表项的外观。
如果在文本框的 Color 属性中使用以下表达式,则它可根据 Profit 字段的值更改文本的颜色:
=Iif(Fields!Profit.Value < 0, "Red", "Black")
如果在数据区域中的报表项的 BackgroundColor 属性中使用以下表达式,则它可更改淡绿色与白色之间的每一行的背景颜色:
=Iif(RowNumber(Nothing) Mod 2, "PaleGreen", "White")
可见性
可以使用报表项的可见性属性来显示和隐藏报表中的项。在诸如表的数据区域中,最初可以根据表达式中的值隐藏详细信息行。
The following expression, when used for initial visibility of detail rows in a group, shows the detail rows for all sales exceeding 90 percent in the PctQuota field:
=Iif(Fields!PctQuota.Value>.9, False, True)
报表参数
可以在参数中使用表达式来更改参数的默认值。例如,可以使用参数,以根据用于运行报表的用户 ID 筛选特定用户的数据。
如果将以下表达式用作参数的默认值,则它可收集运行报表的用户的用户 ID:
=User!UserID
自定义代码
可以在报表中使用自定义代码。自定义代码既可以嵌入报表中,也可以存储在报表所使用的自定义程序集中。有关自定义代码的详细信息,请参阅向 ReportViewer 报表中添加自定义代码。
以下示例调用了 ToUSD 嵌入代码方法,该方法将 StandardCost 字段值转换为美元值:
=Code.ToUSD(Fields!StandardCost.Value)
在 ReportViewer 报表中使用表达式的更多相关文章
- WPF中使用ReportViewer报表
本篇博客将介绍如何在WPF中使用ReportViewer控件. 1. 环境准备:下载安装最新版ReportViewer(PS:需要安装Microsoft SQL Server System CLR T ...
- Stimulsoft报表工具中属性表达式设置属性表达式
Stimulsoft仪表工具实现所需的数据可视化和自己的信息图表.该产品能够应用必要的过滤器和排序,汇总数据,执行任何复杂度的计算.该产品的优势在于其多功能性-能够为您的业务,财务,销售,行业等任何领 ...
- ASP.NETserver控件使用之Reportviewer 报表
1. Reportviewer 报表 1.1. Reportviewer控件 注:本教程附2个事例: l 演练:在本地处理模式下将数据库数据源与 ReportViewer W ...
- 【Reporting Services 报表开发】— 表达式
一.常用的SSRS原始函数可以打开文本框的表达式中看到,如图1 图1 如下为SSRS中设计报表时常用的运算函数: 运算符/函数 说明 + 前后位数字则为加法,前后为字符串则为链接符号 - 数值减法 * ...
- 报表中的Excel操作之Aspose.Cells(Excel模板)
原文:报表中的Excel操作之Aspose.Cells(Excel模板) 本篇中将简单记录下Aspose.Cells这个强大的Excel操作组件.这个组件的强大之处,就不多说,对于我们的报表总是会有导 ...
- 动态切换 web 报表中的统计图类型
统计图在浏览器端展现时,不同的使用人员对图形的展现形式会有不同的要求,有的需要柱形图.有的想看折线图等,报表支持用户在浏览器端动态的选择统计图类型,关注乾学院,查看具体实现方法动态切换 web 报表中 ...
- [翻译] FastReport "Text" 对象中使用表达式
文本对象的最重要的功能之一是它不仅能够显示静态文本还能显示表达式.表达式混合在正常的文本内容中,让我们看一个简单的例子,他是如何工作的.在文件对象的内容中,输入以下字符: Hello, World! ...
- 整理:C#中Expression表达式的妙用
原文:整理:C#中Expression表达式的妙用 一.目的:通过示例了解C#中Expression表达式的作用,通过表达式和反射可以写出很优雅的代码和架构,也可以完成一些看似不可能完成的任务 二.示 ...
- ThinkPHP Where 条件中使用表达式
本文转自:这里 Where 条件表达式格式为: $map['字段名'] = array('表达式', '操作条件'); 其中 $map 是一个普通的数组变量,可以根据自己需求而命名.上述格式中的表达式 ...
随机推荐
- google web design html5制作工具
Google 推出 Web Designer,帮助你做 HTML 5 设计的免费本地应用,支持 Windows 和 OS X 2013年10月1日 感谢读者 SamRaper 的提醒. ...
- Respond.js – 让不懂爱的 IE6-8 支持 CSS3 Media Query
respond.min.js <script src="js/respond.min.js"></script> respond.min.js代码: /*! ...
- easyui 扩展 之 Tree的simpleData加载
实例化.这里增加了三个属性,可以指定idFiled,textFiled和parentField.所以这里的simpleData可以不严格转换成tree的数据格式. $(function(){ $('# ...
- linux 格式化u盘
在单位用U盘安装的archlinux,安装完后,U盘就没再管它,后来女朋友要用U盘,我就甩了一句,在你那windows的机器下格式化一下那个U盘就可以用了,谁知道,就这一句话,好好的2GU盘变300多 ...
- js yui
1.namespace 用于创建一个全局的命名空间,使用YUI时,首先会自动创建widget,util,example三个命名空间,使用时也可以自定义命名空间.类似于在程序中建了了一个static变量 ...
- 微信小程序 事件
事件详解 事件分类 事件分为冒泡事件和非冒泡事件: 冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递. 非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递. WXML的冒泡事件列 ...
- HTTP请求的过程&HTTP/1.0和HTTP/1.1的区别&HTTP怎么处理长连接
http://www.cnblogs.com/GumpYan/p/5821193.html
- Redis "MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk"问题
今天在程序中,jedis put数据到redis过程中,“MISCONF Redis is configured to save RDB snapshots, but is currently not ...
- MD5文件校验
经常看到在网上下载个什么东西,旁边经常会跟一个md5值,以前不太清楚是做什么的.今天偶然发现了一个liunux命令 md5sum.经查寻知道这个命令是用来生成或校验md5值的命令.还是刚才的问题,为什 ...
- mysql数据库导入到oracle数据库
首先,写一个cmd脚本 xx.cmd sqlldr username/password control=xx.ctl errors=10000000 direct=y 再写一个bat脚本xx.bat ...
复制代码