在 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)
时间: 2024-10-12 02:07:55

在 ReportViewer 报表中使用表达式的相关文章

ASP.NETserver控件使用之Reportviewer 报表

1.       Reportviewer 报表 1.1.       Reportviewer控件 注:本教程附2个事例: l  演练:在本地处理模式下将数据库数据源与 ReportViewer Web server控件一起使用 l  演练:在本地处理模式下将业务对象数据源与 ReportViewer Web server控件一起使用 假设您已经对ReportViewer控件基础知识比較了解,能够直接參阅事例. 1.1.1.                 简单介绍 Microsoft Vis

ReportViewer 报表使用整理

前段时间整理了 ReportViewer 报表控件安装步骤,今天整理了报表具体项目中详细步骤. 1.首先从工具箱中引用 ReportViewer 控件  , 同时,新建report 文件夹,添加 *.rdlc 报表. 2.rdlc 报表中添插入 文本框 ,设置如图 , 这里引用参数 ReportParameter1 , 需要额外在参数列表添加. 添加文本框: 添加参数: 3.rdlc 中添加图片,图片可以是Logo , 二维码,一维码图片等,同样步骤,先加图片控件,再添加参数. expr 表达式

集算器实现报表中零散的不规则计算

报表中存在的不规则计算往往给报表开发带来很大的困难,使用报表工具往往很难甚至无法直接实现.这里的不规则计算是指报表中存在特殊条件的统计项(计算),如:销售订单金额统计中计算前5名销售金额的合计和占比:学生成绩统计中总成绩排名前10的学生中语数外都超过90分的人数:用户充值统计中充值金额超过充值总额一半的用户数量等. 通过集算器可以很方便完成这类报表的开发,我们通过两个例子来了解一下具体的做法. 1.实例一 1.1 .报表描述 根据员工与订单表统计各销售人员的销售情况,并在报表中计算列出订单总额.

如何设置报表中字体颜色20140901

如何设置报表中字体颜色: 问题:1.一般我们做报表有时需要根据某个字段的值来高亮或者显示不同颜色字体,让报表更加直观,那么该如何设置呢? 方案: 1.选中该字段,右击--[文本属性] 2.选择[字体]--[颜色(表达式Fx)] 3.打开表达式界面,如下 4.输入判断的表达式,需要注意这里判断的函数是: IFF(a>b,aa,bb),这里是VB的语法 5.运行报表,可以看到报表的展示

【Reporting Services 报表开发】— 表达式

一.常用的SSRS原始函数可以打开文本框的表达式中看到,如图1 图1 如下为SSRS中设计报表时常用的运算函数: 运算符/函数 说明 + 前后位数字则为加法,前后为字符串则为链接符号 - 数值减法 * 乘法 / 除法,例如:100/33 = 33.333... \ 整数除法,例如:100\3 = 33 MOD 求余,例如:10 MOD 3 = 1 ^ 次方,例如:4^2 = 16 & 字符串与数字的链接符号 LEFT 向左取出特定个数的字符,例如:LEFT(Fields!ProductName,

基于MVC4+EF5+EasyUI技术实现通用权限管理系统(EpPlus、HignCharts、Reportviewer报表)视频教程

基于MVC4+EF5+EasyUI技术实现通用权限管理系统(EpPlus.HignCharts.Reportviewer报表)视频教程 联系QQ:1026270010 1.项目研发环境 项目源代码会提供以MVC4+EF5和MVC5+EF6为基准的两套版本,数据库会提供以Sqlserver2005为基准的数据库脚本,以下环境都适用于项目. 开发工具:VS2012,VS2013; 数据库工具:SqlServer2005,2008,2012,2014    其他工具:Easyui,Jquery,EpP

web报表中电子印章/水印的轻松实现

报表数据系统中,有一个重要功能叫做电子签章,通俗的讲,就是不需要实际去盖章,而直接把印章打印到纸质文件上,省去手工盖章的费时费力环节,例如,银行系统中的银行流水打印,都需要盖章才能生效,如果按传统的做法,那就是先打印出来流水,再找工作人员每页盖上章,工作人员需要先核对数据,再每页盖章,工作量极大且常常无意义.所以,银行系统中基本都会用到这个电子签章的功能. 我们先来看看电子签章的效果: 1. 2. --. 以上都是使用电子签章实现的.现在,我们就用润乾报表来做一个小例子,看看怎样轻松实现这个功能

动态切换 web 报表中的统计图类型

需求: 报表以图形方式,也就是我们常说的“图表”形式展示时,不同的用户对图形类型有不同的要求,希望能够动态切换统计图类型,例如实现柱形图.条形图.折线图等图形间的动态切换. 思路: 常见的做法是在报表中多个单元格中生成不同的统计图,然后通过参数动态隐藏行来实现图形类型切换,但此种方法需要制作大量的图形图表,工作量较大,而且大量隐藏单元格会耗用内存,在性能上也有一定影响. 当然,肯定还会有别的方式……我们在制作统计图时会发现,绝大多数统计图设置方式基本类似,只需要设置分类轴.系列即可生成统计图.而

报表中如何控制附件的上传和下载权限

目前,多用户的软件平台已经是再常见不过的了,有成千上万个用户账号的平台也很正常.为了保证每个用户准确访问各自的信息,免不了要做这样或那样的权限控制,而且这种权限控制往往是需要基于数据层面进行管理的. 对于报表平台的数据权限管理,我们可以直观地理解为:不同的机构.角色甚至具体到人,在访问同一张报表时所看到的数据都有可能不同的.最常见的例子比如工资条(也可以看做是一张简单的报表),因为绝大多数公司薪资都是保密的,所以很显然,系统内不同人看到的结果肯定是不相同的. 再比如,区域销售情况统计对于不同区域