




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
可以在 ReportViewer 报表中包括 Microsoft Visual Basic 表达式。可以使用表达式来计算报表项的值,或者计算样式和格式设置属性的值或其他报表项属性的值。可以使用所有 Visual Basic 函数,以及只有报表定义文件中支持的内置函数。字段表达式最基本类型的表达式是在文本框中显示字段值的表达式。这种类型的表达式称作字段表达式。若要将数据字段链接到报表项,表达式必须包括 Fields 集合、字段名称和 Value 属性。在您将字段拖至报表中时,会自动为您创建值。以下示例显示了在文本框中显示产品名称的表达式:=Fields!Product.Value表达式既可以是引用字段对象的短表达式,也可以是支持基于字段或其他报表项的判定函数或格式设置的长表达式。报表项和属性中的表达式必须以等号 (=) 开头。如果文本不以此字符开头,则将该文本作为字段的实际值进行计算。字段表达式的示例如下:以下表达式连接 FirstName 字段和 LastName 字段。=Fields!FirstName.Value & & Fields!LastName.Value以下表达式对 LineTotal 字段执行求和聚合 =Sum(Fields!LineTotal.Value)条件格式设置可以使用表达式来控制报表项的外观。例如,可以为文本框的 Color 属性编写一个表达式,以便根据不同的数据,以不同颜色显示数据。条件格式设置的示例如下。以下表达式(用于文本框的 Color 属性中)在“Cost”字段的值大于“Revenue”字段的值时,以红色显示值。在“Cost”字段的值小于或等于“Revenue”字段的值时,以黑色显示值。 =IIf(Fields!Cost.Value Fields!Revenue.Value, Red, Black)Reporting Services 函数Reporting Services 提供了许多可在表达式中使用的内置函数。这些函数包括标准聚合函数(例如 Sum、Min、Max 和 Count),以及其他一些函数(例如 RowNumber 和 RunningValue)。类引用和自定义代码报表中的表达式也可以包含对 Microsoft.VisualBasic、System.Convert 和 System.Math 命名空间中的类的引用。如果您使用其他系统命名空间的类或函数,则必须使用完整命名空间(如 System.Collections.ArrayList)。如果您需要使用 Reporting Services 函数或默认类未提供的其他功能,可以使用自定义代码、其他标准程序集或报表代码块。为此,可以先生成一个自定义程序集,然后在表达式内引用该程序集。报表中表达式的全局集合为在 ReportViewer 控件中处理的报表定义编写的表达式可包含对全局对象集合的引用。有五种全局对象集合可供使用:Fields、Globals、Parameters、ReportItems 和 User。要访问这些集合,您可以使用标准的 Visual Basic 集合语法。这种语法的示例如下:Collection!ObjectName=User!Language Collection.Item(ObjectName)=User.Item(Language) Collection(ObjectName)=User(Language) 您还可以使用属性语法来访问 Globals 和 User 集合中的各项。其示例如下:Collection.ObjectName=Globals.PageNumber Globals 和 Users 集合的成员会返回变量。如果您想在表达式中使用要求特定数据类型的全局变量,则必须先转换该变量。例如,CDate(Globals!ExecutionTime)。字段Fields 集合包含当前数据源中的各字段。这些字段通常用于显示报表的文本框中的数据,但也可以用在其他报表项、属性和函数中。Fields 集合中的项有两种属性:Value 和 IsMissing。Value 属性返回数据源中为该字段检索到的值。IsMissing 属性指示数据源中是否存在该字段。对于返回字段的变量集的查询,可以使用“IsMissing”属性。对于缺少的字段,其 Value 属性的值为 Null。访问字段对象的最常用语法是属性语法,例如 Fields!Product.Value。您还可以使用上述的集合语法来访问字段对象。有些数据源为字段提供了附加属性。您可以通过使用集合语法来访问这些属性。如果数据源不支持某属性,或在执行查询时找不到该字段,则属性的类型为 String 和 Object 时,其属性值为 Null;在属性的类型为 Integer 时,其属性值为 0。报表为它所包含的每一数据源包含一个虚拟的 Fields 集合。字段在一个集合内必须唯一,不过同一字段名称可以在多个集合中存在。如果引用数据区域中的字段,则该数据区域的数据表或业务对象会确定所使用的集合。如果引用聚合表达式中的字段,则范围的数据源会确定所使用的集合。GlobalsGlobals 集合包含报表的全局变量。下表对 Globals 集合的成员进行了说明。成员 类型 说明 ExecutionTime日期时间报表开始运行的日期和时间。PageNumber整型当前页码。该变量只能用在页眉和页脚中。ReportFolder字符串包含报表的文件夹的完整路径。它不包括报表服务器 URL。此成员仅适用于服务器报表。ReportName字符串存储在报表服务器数据库中的报表的名称。此成员仅适用于服务器报表。ReportServerUrl字符串正在运行该报表的报表服务器的 URL。此成员仅适用于服务器报表。TotalPages整型报表中的总页数。该变量只能用在页眉和页脚中。全局变量的示例如下:该表达式位于报表页脚的文本框中,提供了报表的页码和总页数。 =Globals.PageNumber & of & Globals.TotalPages以下表达式提供了报表的名称以及它运行的时间。时间格式使用短日期的 .NET Framework 格式字符串进行设置。 =Globals.ReportName & , dated & Format(Globals.ExecutionTime, d)参数Parameters 集合包含报表中的报表参数。参数可以用在筛选器中,或用在基于此参数改变报表外观的其他函数中。Parameters 集合中的项有两种属性:Value 和 Label。Value 属性返回参数(如 EmployeeID)的值。Label 属性返回参数(如 EmployeeName)的便于用户识别的标签。如果未指定标签,则 Label 属性值和 Value 属性的值相同。如果有多个标签与同一个值关联,则使用第一个匹配的标签。参数既可以通过属性语法访问,也可以通过集合语法访问。ReportItemsReportItems 集合包含报表内的文本框。ReportItems 集合内的项仅包含一个属性:Value。ReportItems 项的值可以用来显示或计算报表中其他字段的数据。若要访问当前文本框的值,请使用 Me.Value 或仅使用 Value。Me.Value 和 Value 不能在聚合函数内部使用。在聚合函数中请使用完整语法来访问文本框的值。报表项表达式的示例如下:该表达式位于文本框中,显示了文本框 Textbox1 的值。 =ReportItems!Textbox1.ValueUserUser 集合包含正在运行报表的用户的数据。下表对 User 集合的成员进行了说明。成员 类型 说明 Language字符串运行报表的用户的语言 ID。UserID字符串运行报表的用户的 ID。用于报表的内置函数ReportViewer 提供了可用于报表表达式的内置函数。内置函数可用于客户端报表定义 (.rdlc) 文件和在 SQL Server 2005 Reporting Services 报表服务器上处理的报表定义 (.rdl) 文件所包含的表达式中。ReportViewer 控件和 Reporting Services 提供对这些函数的支持。这些内置函数分为两类:聚合函数和杂项函数。聚合数据的示例包括使用 Sum 函数来计算特定字段中所有值的总和。可以在任何报表项的表达式中使用聚合函数。除了内置函数外,包含在报表中的表达式还可以使用任何 Visual Basic 函数。杂项函数下表介绍了可以使用的通用函数。函数 说明 InScope 函数(Visual Studio 报表设计器) 指明项的当前实例是否在指定范围内。Level 函数(Visual Studio 报表设计器) 返回递归层次结构中的当前深度级别。Previous 函数(Visual Studio 报表设计器) 返回指定范围内的前一个实例。标准聚合函数下表介绍了可以使用的标准聚合函数。函数 说明 Avg 返回指定表达式的所有非空值的平均值。Count 返回指定表达式的值的计数。CountDistinct 返回指定表达式的所有不同值的计数。CountRows 返回指定范围内的行的计数。First 返回指定表达式的第一个值。Last 返回指定表达式的最后一个值。Max 返回指定表达式的所有非空值中的最大值。Min 返回指定表达式的所有非空值中的最小值。StDev 返回指定表达式的所有非空值的标准偏差。StDevP 返回指定表达式的所有非空值的总体标准偏差。Sum 返回指定表达式的值的和。Var 返回指定表达式的所有非空值的方差。VarP 返回指定表达式的所有非空值的总体方差。运行聚合函数下表介绍了可以使用的运行聚合函数。函数 说明 RowNumber 返回指定范围内的所有行的运行计数。RunningValue 使用指定的函数返回指定表达式的运行聚合。自定义聚合函数下表介绍自定义聚合函数。函数 说明 Aggregate 按照数据访问接口的定义返回指定表达式的自定义聚合。Scope每个聚合函数都使用 Scope 参数,该参数定义执行聚合函数的范围。有效的范围值是分组、数据集或数据区域的名称。只有直接或间接包含表达式的分组或数据区域才能作为范围。如果表达式位于数据区域内,则对于所有聚合函数,Scope 都是可选参数。如果省略 Scope 参数,则聚合的范围就是报表项所属的最里面的数据区域或分组。如果将范围指定为 Nothing,则表示将范围设置为报表项所属的最外面的数据区域。如果表达式位于数据区域外,Scope 参数将引用数据表或业务对象。如果报表包含多个数据集,则必须使用 Scope 参数。如果报表只包含一个数据集,并且省略了 Scope 参数,则范围将设置为该数据集。如果报表项位于数据区域外,则不能为其指定 Nothing 关键字。在页眉或页脚中不能使用 Scope 参数。InScope 函数(Visual Studio 报表设计器)指明项的当前实例是否在指定范围内。InScope(Scope)参数Scope (String) 要对其应用函数的报表项所在的数据表、对象、分组或数据区域的名称。返回类型 返回 Boolean。备注 InScope 函数在具有动态范围的数据区域(例如矩阵)中十分有用。例如,可以在矩阵单元的钻取链接中使用 InScope,以根据所单击的单元来提供不同的报表名称和不同的参数组。其示例如下: 以下表达式用作钻取链接中的报表名称,它的作用是:如果单击 Month 分组中的单元,则打开 ProductDetail 报表,如果所单击单元不在该组中,则打开 ProductSummary 报表。=Iif(InScope(Month), ProductDetail, ProductSummary) 以下表达式用在钻取报表参数的 Omit 属性中,它的作用是:只有单击 Product 分组中的单元时才会将参数传递给目标报表。=Not(InScope(Product) 示例 下面的代码示例指示项的当前实例是否在 Product 数据集、数据区域或分组中。InScope(Product)Level 函数(Visual Studio 报表设计器)返回递归层次结构中的当前深度级别。Level(Scope)参数Scope (String) 要对其应用聚合函数的报表项所在的数据表、对象、分组或数据区域的名称。Scope 是可选的。返回类型 返回 Integer。如果 Scope 指定数据源或数据区域,或指定非递归分组(即没有 Parent 元素的分组),则 Level 返回 0。如果省略 Scope,则返回当前作用域的级别。有关 Scope 参数的更多信息, 备注 Level 函数返回的值从 0 开始,也就是说,层次结构中的第一级为 0。Level 函数可用于为递归层次结构(如雇员列表)提供缩进格式。示例 下面的代码示例提供了 Employees 分组中行的级别。Level(Employees)Previous 函数(Visual Studio 报表设计器)返回指定范围内的前一个实例。Previous(Expression)参数Expression (Variant 或 Binary)要对其执行聚合的表达式。该表达式不能包含聚合函数。在图表或矩阵数据区域中不受支持。返回类型 返回 Variant 或 Binary。说明下面的代码示例为表或列表数据区域的前一行中的 LineTotal 字段提供值。对于第一行,该值为 Nothing。代码Previous(Fields!LineTotal.Value)Avg 函数(Visual Studio 报表设计器)返回指定表达式的所有非空值的平均值。Avg(Expression, Scope)参数Expression (Float) 对其执行聚合的表达式。该表达式不能包含聚合函数。Scope (String) 要对其应用聚合函数的报表项所在的数据集、分组或数据区域的名称。如果指定了 Scope,聚合函数将应用于数据集、分组或数据区域中的所有数据。有关 Scope 参数的更多信息,请参见用于报表的内置函数(Visual Studio 报表设计器)。返回类型 返回 Float。示例 下面的示例提供了“Cost”字段(位于最外面的数据区域)中的所有值的平均值。Avg(Fields!Cost.Value, Nothing)Count 函数(Visual Studio 报表设计器)返回对指定表达式的非空值的计数值。Count(Expression, Scope)参数Expression (Variant 或 Binary)要对其执行聚合的表达式。该表达式不能包含聚合函数。使用表达式对指定表达式的所有非空值计数。Scope (String) 要对其应用聚合函数的报表项所在的数据表、对象、分组或数据区域的名称。如果指定了 Scope,聚合函数将应用于数据源、分组或数据区域中的所有数据。有关 Scope 参数的更多信息,请参见用于报表的内置函数(Visual Studio 报表设计器)。返回类型 返回 Integer。示例 下面的代码示例提供了最外面的数据区域中雇员的计数值:Count(Fields!EmployeeID.Value, Nothing) 下面的代码示例提供了 Orders 分组或数据区域中的所有订单的计数值:Count(Fields!OrderID.Value, Orders) CountDistinct 函数(Visual Studio 报表设计器)返回对指定表达式中的所有非重复值的计数。CountDistinct(Expression, Scope)参数Expression (Variant) 对其执行聚合的表达式。该表达式不能包含聚合函数。Scope (String) 要对其应用聚合函数的报表项所在的数据表、对象、分组或数据区域的名称。如果指定了 Scope,聚合函数将应用于数据源、分组或数据区域中的所有数据。有关 Scope 参数的更多信息,请参见用于报表的内置函数(Visual Studio 报表设计器)。返回类型 返回 Integer。示例 以下代码示例提供了“部门”分组或数据区域中的经理计数。CountDistinct(Fields!ManagerID.Value, Department)CountRows 函数(Visual Studio 报表设计器)返回指定范围内的行的计数。CountRows(Scope)参数Scope (String) 要对其应用聚合函数的报表项所在的数据表、对象、分组或数据区域的名称。如果指定了 Scope,聚合函数将应用于数据源、分组或数据区域中的所有数据。有关 Scope 参数的更多信息,请参见用于报表的内置函数(Visual Studio 报表设计器)。返回类型 返回 Integer。示例 以下代码示例提供了“部门”分组或数据区域中的行的计数。CountRows(Department)First 函数(Visual Studio 报表设计器)返回指定表达式的第一个值。First(Expression, Scope)参数Expression (Variant 或 Binary)要对其执行聚合的表达式。该表达式不能包含聚合函数。Scope (String) 要对其应用聚合函数的报表项所在的数据表、对象、分组或数据区域的名称。如果指定了 Scope,聚合函数将应用于数据源、分组或数据区域中的所有数据。有关 Scope 参数的更多信息,请参见用于报表的内置函数(Visual Studio 报表设计器)。返回类型 由表达式的类型决定。备注 First 函数在所有排序都应用于数据后才返回值。示例 下面的代码示例返回 Category 分组或数据区域中的第一个产品编号:First(Fields!ProductNumber.Value, Category)Last 函数(Visual Studio 报表设计器)返回指定表达式的最后一个值。Last(Expression, Scope)参数Expression (Variant 或 Binary)要对其执行聚合的表达式。该表达式不能包含聚合函数。Scope (String) 要对其应用聚合函数的报表项所在的数据表、对象、分组或数据区域的名称。如果指定了 Scope,聚合函数将应用于数据源、分组或数据区域中的所有数据。有关 Scope 参数的更多信息,请参见用于报表的内置函数(Visual Studio 报表设计器)。返回类型 由表达式的类型决定。备注 Last 函数在所有排序都应用于数据后才返回值。示例 以下代码示例提供了“类别”分组或数据区域中的最后一个产品编号。Last(Fields!ProductNumber.Value, Category)RowNumber 函数(Visual Studio 报表设计器)返回指定范围内的所有行的运行计数。RowNumber(Scope)参数Scope (String) 要对其应用聚合函数的报表项所在的数据表、对象、分组或数据区域的名称。如果指定数据表或对象,则不会在整个数据集中重置该运行值。如果指定分组,则会在组表达式更改时重置该运行值。如果指定数据区域,则会为该数据区域的每个新实例重置该运行值。有关 Scope 参数的更多信息,请参见用于报表的内置函数(Visual Studio 报表设计器)。返回类型 返回 Integer。示例 以下代码示例提供了对最外面的数据区域中的行的运行计数。RowNumber(Nothing)RunningValue 函数(Visual Studio 报表设计器)返回指定表达式的运行聚合值。RunningValue(Expression, Function, Scope)参数Expression (数据类型由 Function. 中指定的聚合函数决定。)对其执行聚合的表达式。该表达式不能包含聚合函数。Function (Enum) 要应用于表达式的聚合函数的名称。此函数不能为 RunningValue、RowNumber 或 Aggregate。Scope (String) 要对其应用聚合函数的报表项所在的数据表、对象、分组或数据区域的名称。如果指定数据表或对象,则不会在整个数据集中重置该运行值。如果指定分组,则会在组表达式更改时重置该运行值。如果指定数据区域,则会为该数据区域的每个新实例重置该运行值。有关 Scope 参数的更多信息,请参见用于报表的内置函数(Visual Studio 报表设计器)。返回类型 由 Function 参数中指定的聚合函数决定。备注 对 RunningValue 的限制也由 Function 参数中指定的聚合函数决定。有关详细信息,请参阅您感兴趣的聚合函数的主题。示例 下面的代码示例提供了最外面的数据区域中 cost 字段的运行和。RunningValue(Fields!Cost.Value, Sum, Nothing)Aggregate 函数(Visual Studio 报表设计器)按照数据访问接口的定义返回指定表达式的自定义聚合。Aggregate(Expression, Scope)参数Expression 要对其执行聚合的表达式。该表达式必须是简单字段引用表达式。Scope (String) 要对其应用聚合函数的报表项所在的数据表、对象、分组或数据区域的名称。如果指定了 Scope,聚合函数将应用于数据源、分组或数据区域中的所有数据。指定作用域内的所有组表达式都必须包含简单字段引用。有关 Scope 参数的更多信息,请参见用于报表的内置函数(Visual Studio 报表设计器)。返回类型 返回类型视数据访问接口而定。如果数据访问接口不支持此函数或数据不可用,则返回 Nothing。备注 对于使用此函数的项包含的所有组,都必须与其组表达式一样包含简单字段引用。示例 下面的代码示例提供了订单分组或数据区域中所有行项总计值的自定义聚合。Aggregate(Fields!LineTotal.Value, Order)Scope每个聚合函数都使用 Scope 参数,该参数定义执行聚合函数的范围。有效的范围值是分组、数据集或数据区域的名称。只有直接或间接包含表达式的分组或数据区域才能作为范围。如果表达式位于数据区域内,则对于所有聚合函数,Scope 都是可选参数。如果省略 Scope 参数,则聚合的范围就是报表项所属的最里面的数据区域或分组。如果将范围指定为 Nothing,则表示将范围设置为报表项所属的最外面的数据区域。如果表达式位于数据区域外,Scope 参数将引用数据表或业务对象。如果报表包含多个数据集,则必须使用 Scope 参数。如果报表只包含一个数据集,并且省略了 Scope 参数,则范围将设置为该数据集。如果报表项位于数据区域外,则不能为其指定 Nothing 关键字。在页眉或页脚中不能使用 Scope 参数。向报表中添加样式和格式您可以设置属性来控制各报表项的外观。属性可以是静态的,也可以被设置为计算结果为特定值的表达式。您还可以对文本框设置格式属性来指定数字和日期的格式。注意 报表或文本框的区域设置会影响可用的格式设置选项。若要指定报表级区域设置,请在报表的“属性”窗口中设置“语言”属性。有关指定文本框的区域设置的更多信息,请参见向报表中添加文本框(Visual Studio 报表设计器)。对报表项设置样式属性每个报表项都有相应的样式属性用来控制其外观。这些属性包括边框样式、颜色、字形和填充。有些样式并不适用于所有报表项。例如,字形属性只适用于文本框或小计,因为只有这些项才可以包含文本。您可以对报表项的各个边应用相同的边框样式和填充属性,也可以对该项的各个边应用不同的样式。通过选择一项并在“属性”窗口中编辑该项的属性可以对该项应用样式属性。应用条件格式您可以设计一种报表,以便根据报表中的数据对各个项应用不同的样式。例如,可以将报表中的负数显示为红色。若要设置动态样式,请在项的样式属性中使用表达式而不是静态值。例如,若要使某个文本框以红色为字段 Profit 返回负值,请在该文本框的 Color 属性中使用以下表达式:=iif(Fields!Profit.Value 0, Red, Black) 创建绿色条形报表若要对报表中的表应用绿色条形效果(每隔一行变换一次颜色),请在详细信息行中的每个文本框的 BackgroundColor 属性中使用以下表达式:=iif(RowNumber(Nothing) Mod 2, PaleGreen, White) 可以根据多个函数来生成表达式。有关更多信息,请参见在报表中使用表达式(Visual Studio 报表设计器)。设置数字和日期的格式通过用一种格式设置字符串更新数字和日期值文本框的 Format 属性可以指定数字和日期值的格式。例如,您可以为数字字段设置一个文本框,以便将该数字显示为货币形式。Reporting Services 使用 Microsoft .NET Framework 格式设置字符串,或者您也可以为 Format 属性创建一种自定义格式设置字符串。注意 若要将格式设置应用于文本框,该文本框必须包含表达式,例如,=Fields!LineTotal.Value 或 =1000。如果该文本框不是表达式,即,文本框中的文本不是以等号 (=) 开头,那么该文本将被解释为字符串,并且不应用格式设置。设置数字格式下表列出了常用的 .NET 数字格式设置字符串。格式字符串 名称 C 或 c货币D 或 d小数E 或 e科学记数法F 或 f固定点G 或 g常规N 或 n数量P 或 p百分比R 或 r往返X 或 x十六进制您可以将许多格式字符串修改为包含精度说明符,该说明符用于定义小数点后的位数。例如,格式设置字符串 D0 将数字格式设置为小数点后没有数字。您还可以使用自定义的格式设置字符串,例如 #,#。设置日期格式下表列出了常用的 .NET Framework 日期格式设置字符串。格式字符串 名称 d短日期D长日期t短时间T长时间f完整日期/时间(短时间)F完整日期/时间(长时间)g常规日期/时间(短时间)G常规日期/时间(长时间)M 或 m月日R 或 rRFC1123 模式Y 或 y年月您还可以使用自定义的格式设置字符串,例如 dd/MM/yy。有关 .NET Framework 格式设置字符串的详细信息,请参见为类型设置格式。向报表中添加自定义代码您可以向报表添加自定义函数,也可以添加对外部程序集中函数的引用。编译项目时,将自动引用下列程序集:Microsoft.VisualBasic、AllMembers.T:System.Convert 和 AllMembers.T:System.Math。使用“报表属性”对话框或报表定义中的 CodeModules 元素可以引用其他程序集。还可以使用“报表属性”对话框来定义自定义函数。若要在报表定义中定义自定义函数,请使用 Code 元素。请注意,无法向函数传递数据值集(特别要指出的是,不支持自定义聚合)。可以编写自定义代码,在整个报表的表达式中使用。可通过两种方式来编写自定义代码:在报表中嵌入代码或引用自定义程序集中的方法。对于复杂函数或在一个报表中多次使用的函数,使用嵌入代码。使用自定义程序集可在一个位置维护代码并在多个报表中共享该代码。嵌入代码若要在报表中使用代码,请将代码块添加到报表中。此代码块可以包含多个方法。嵌入代码中的方法必须以 Microsoft Visual Basic 编写,并且必须基于实例。将代码添加到报表1. 在“报表”菜单上单击“报表属性”。注意 如果“报表”菜单不可用,请在报表设计区域内单击。2. 在“代码”选项卡的“自定义代码”中,键入代码。嵌入代码中的方法可通过全局定义的 Code 成员使用。您可以通过引用 Code 成员和方法名称来访问这些方法。下面的示例调用了 ToUSD 方法,该方法将 StandardCost 字段值转换为美元值:=Code.ToUSD(Fields!StandardCost.Value) 自定义程序集若要在报表中使用自定义程序集,必须先创建程序集,使其可供项目使用,然后在报表中添加对该程序集的引用,最后在报表中使用表达式来引用该程序集中的方法。将报表部署到报表服务器后,还必须将自定义程序集部署到报表服务器。将程序集引用添加到报表1. 在“报表”菜单上单击“报表属性”。注意 如果“报表”菜单不可用,请在报表设计区域内单击。2. 在“引用”选项卡上,执行下列操作:o 在“引用”选项卡中,单击添加 (.) 按钮,然后在“添加引用”对话框中选择或浏览到程序集。o 在“类”中,键入类名并提供要在报表中使用的实例名。注意 仅为基于实例的成员指定类名和实例名。不要在“类”列表中指定静态成员。若要在表达式中引用自定义代码,必须调用程序集中的某类成员。调用方式取决于该方法是静态的还是基于实例的。自定义程序集中的静态方法可在整个报表中使用。您可以在表达式中通过命名空间、类和方法名称来访问静态方法。下面的示例调用了 ToGBP 方法,该方法将 StandardCost 字段的值从美元转换为英镑:=CurrencyConversion.DollarCurrencyConversion.ToGBP(Fields!StandardCost.Value) 基于实例的方法可通过全局定义的 Code 成员使用。您可以通过依次引用 Code 成员、实例和方法名称来访问这些方法。下面的示例调用了 ToEUR 实例方法,该方法将 StandardCost 字段值从美元转换为欧元:=Code.m_myDollarCoversion.ToEUR(Fields!StandardCost.Value) 注意 在报表设计器中,自定义程序集一经加载就不会被卸载,除非关闭 Visual Studio。如果预览报表后对该报表所用的自定义程序集进行更改,然后再次预览该报表,则第二次预览结果不会体现所做的更改。若要重新加载程序集,请关闭 Visual Studio,再将其重新打开,然后预览报表。若要了解有关使用自定义程序集的详细信息,可以在 SQL Server 2005 联机丛书中搜索“在报表中使用自定义程序集”。大多数版本的 Visual Studio 2008 都提供联机丛书。也可以从位于 上的 MSDN 中查看它。联机丛书中有关自定义程序集的信息适用于使用 ReportViewer 控件部署的报表。向报表中添加页眉和页脚(Visual Studio 报表设计器)报表可以包含页眉和页脚,它们分别位于每一页的顶部和底部。页眉和页脚可以包含静态文本、图像、线条、矩形、边框、背景颜色和背景图像。您不能直接向页眉或页脚添加数据绑定字段或图像。但是,可以编写表达式,间接引用要用于页眉或页脚的数据绑定字段或图像。报表页眉和页脚与表或组中的页眉和页脚不同。有关表页眉和页脚的信息,请参见添加表数据区域(Visual Studio 报表设计器)。有关如何对报表页眉和页脚进行操作的更多信息,请参见如何:添加、隐藏和移除页眉和页脚(Visual Studio 报表设计器)。注意 每个报表输出格式处理页的方式不同。有关更多信息,请参见定义报表中的页大小和分页符(Visual Studio 报表设计器)。在首页上禁用页眉和页脚默认情况下,报表的首页和最后一页上显示页眉和页脚。通过更改页眉或页脚的 PrintOnFirstPage 或 PrintOnLastPage 属性,可以在首页和最后一页上禁用页眉和页脚。在页眉或页脚中显示变量数据页眉和页脚可以包含静态的内容,不过它们更常用于显示变化的内容(如页码)或有关页面内容的信息。若要在每一页上显示不同的变量数据,必须编写表达式。若要将变量数据置于页眉或页脚,请执行下列操作:1. 向页眉或页脚添加一个文本框。2. 在文本框中,编写一个生成要显示的变量数据的表达式。3. 在表达式中,包含对该页上报表项的引用(例如,可以引用包含特定字段中的数据的文本框)。不要包含对数据集中字段的直接引用。不能直接从页眉或页脚的文本框中引用字段。(例如,不能使用表达式 =Fields!LastName.Value。)若要在页眉或页脚中显示字段信息,请将字段表达式放在表体的文本框中,然后在页眉或页脚中引用该文本框。下面的表达式显示了名为 TXT_LastName 的文本框的第一个实例的内容:=First(ReportItems!TXT_LastName.Value) 不能对页眉或页脚中的字段使用聚合函数。只能对报表项使用聚合函数(如上述 First() 函数)。有关页眉和页脚中的常用表达式,请参阅 报表的通用表达式(Visual Studio 报表设计器)。本主题中的以下几节介绍可供使用的表达式,这些表达式可获取在页眉和页脚中常用的变量数据。还介绍了 Excel 呈现扩展插件如何处理页眉和页脚。有关表达式的更多信息,请参见在报表中使用表达式(Visual Studio 报表设计器)。向页眉或页脚添加页码页脚通常用来显示页码。若要在报表的页眉或页脚中显示页码,请在页脚中创建一个文本框,然后添加以下表达式:=Globals.PageNumber & of & Globals.TotalPages 向页眉或页脚添加报表名称、路径和报表执行时间使用下列表达式显示报表服务器数据库中存储的报表标题或报表名称,以及有关报表生成时间的时间戳信息。=ReportItems!ReportTitle.Value =Globals.ReportName & , dated & Format(Globals.ExecutionTime, d) 向页眉或页脚添加数据绑定图像可以在页眉或页脚中使用数据库中存储的图像数据。然而,不能直接从图像控件引用数据库字段。必须改为在表体中添加文本框,然后将文本框设置为包含图像的数据字段(请注意,该值必须为 base64 编码)。可以在表体中隐藏文本框来避免显示 base64 编码的图像。然后,可以从页眉或页脚中的图像控件引用隐藏文本框的值。例如,假设一个报表由产品信息页组成。您要在每一页的页眉中显示该产品的照片。若要在报表页眉中显示存储的图像,请在从数据库检索图像的报表表体中定义名为 TXT_Photo 的隐藏文本框,然后使用表达式为其赋值:=Convert.ToBase64String(Fields!Photo.Value) 在页眉中,添加一个使用 TXT_Photo 文本框的图像控件,解码该文本框可显示图像:=Convert.FromBase64String(ReportItems!TXT_Photo.Value) 向页眉或页脚添加计算的页总和对于某些报表,在每个报表的页眉或页脚中包含计算得出的值非常有用(例如,如果页中包含数值,则页眉或页脚中将包含每页数值的总和)。由于不能直接引用字段,因此放在页眉或页脚中的表达式必须引用报表项(例如,文本框)而不是数据字段的名称:=Sum(ReportItems!Textbox1.Value) 如果文本框位于包含重复数据行的表或列表中,则运行时显示在页眉或页脚中的值是当前页的表或列表中所有 TextBox1 实例数据的所有值的总和。计算页总和时,如果使用不同的呈现扩展插件查看报表,则可能会看到不同的总和。对于每个呈现扩展插件,分页输出的计算方式不同。如果 PDF 页的数据量不同,则相同页在 HTML 中查看与在 PDF 中查看可能会显示不同的总和。使用页眉和页脚定位文本可以使用页眉和页脚定位页中的文本。例如,假设要创建一个报表,然后邮寄给客户。您可以使用页眉或页脚定位客户地址,这样,折叠后地址将显示在信封窗口中。如果只使用文本框填充页眉或页脚,则可以在表体中隐藏该文本框。文本框在表体中的放置方式会对值是显示在报表首页或最后一页的页眉还是页脚产生影响。例如,如果表、矩阵或列表导致报表跨越多页,则隐藏文本框的值将显示在最后一页。如果要显示在首页,请将隐藏的文本框放置在表体的顶部。在 Excel 中使用页眉和页脚为面向 Excel 呈现扩展插件的报表定义页眉和页脚时,遵守下列准则将获得最佳效果: 使用页脚显示页码。 使用页眉显示图像、标题或其他文本。不要将页码放在页眉中。在 Excel 中,页脚布局有限制。如果定义的报表在页脚中包含复杂报表项,则在 Excel 中查看此报表时页脚将不按预期的方式处理。Excel 呈现扩展插件可以在页眉中容纳简单或复杂报表项的图像和绝对位置。但支持较丰富的页眉布局有一个副作用,就是会降低对在页眉中计算页码的支持。在 Excel 呈现扩展插件中,默认设置使页码基于工作表的数量计算。根据定义报表的方式,这可能会产生错误页码。例如,假设一个报表呈现为一个较大的工作表,此工作表可打印四页。如果在页眉中包含页码信息,每一张打印页将在页眉中显示“第 1 页(共 1 页)”。更准确的页计数基于与打印页的维度关联的逻辑页。在 Excel 中,页脚自动使用逻辑页码。若要在页眉中放置逻辑页计数,则必须将设备信息设置配置为使用简单页眉。请注意,如果使用简单页眉,则需要去除在页眉区域中处理复杂报表布局的功能。将 ReportViewer 配置为进行远程处理可以将 ReportViewer 控件配置为使用 Microsoft SQL Server 2005 Reporting Services 报表服务器的处理功能。报表服务器用于处理数据并以输出格式呈现报表。ReportViewer 控件检索报表服务器中已完成的报表并将其显示在屏幕上。若要使用服务器报表,您必须有权访问 SQL Server 2005 Reporting Services 报表服务器,并且所选的报表必须已发布在该报表服务器上。ReportViewer 控件要求提供仅通过 SQL Server 2005 SOAP 执行终结点公开的信息。这些控件不支持 SQL Server 2000 Reporting Services 报表服务器上运行的报表。可以通过打开浏览器窗口并在 URL 地址中键入报表服务器 URL 和报表路径来验证您是否具有对报表的访问权限。配置与报表服务器间的连接时,应使用有权查看报表的帐户进行连接。默认情况下,该帐户为线程用户。在 Windows 应用程序中,线程用户通常为用户帐户。在 ASP.NET 应用程序中,线程用户通常为 ASP.NET 帐户。不管如何配置连接,都必须确保报表服务器上存在角色分配,向用于建立连接的帐户授予报表访问权限。若要了解有关连接配置的详细信息,请参阅 IReportServerCredentials。如何配置 ReportViewer 以进行远程处理若要配置 ReportViewer 控件以实现远程处理,请指定要与该控件一起使用的服务器报表。执行下列步骤选择服务器报表:1. 将工具箱“数据”部分的 ReportViewer 控件添加到项目中的窗体或网页。2. 在“ReportViewer 任务”智能标记面板的“选择报表”中,选择“服务器报表”。3. 在“报表服务器”文本框中,键入报表服务器 URL。默认 URL 语法为 http:/localhost/reportserver。安装时使用的实际 URL 可能会有所不同,具体取决于报表服务器虚拟目录设置的配置方式。4. 在“报表路径”文本框中,键入已发布报表的完全限定路径。报表路径必须以正斜杠 ( / ) 开头。路径不能包括报表 URL 参数。路径由报表服务器文件夹命名空间中的文件夹和报表名称组成。例如,如果在报表服务器
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年公路工程试验检测师资格考试(交通工程)经典试题及答案四
- 外卖主题活动方案策划(3篇)
- 2025-2030中国船舶行业发展趋势及发展前景研究报告
- 宿迁房屋租赁合同范本
- 雨水篦子施工方案(3篇)
- 高层框架施工方案(3篇)
- 主控楼施工方案(3篇)
- (正式版)DB15∕T 2106-2021 《糜子杂交育种技术规范》
- 采暖通风施工方案(3篇)
- 全国三高考理科数学试卷
- 2025年提取公积金租房合同范本
- 2025高职单招考试题(附答案)
- 储能系统运维安全手册
- GB/T 45997-2025科技成果五元价值评估指南
- 转让网约车合同协议书范本
- 医院 捐赠协议书
- 小学食堂供餐管理方案(3篇)
- 湖北省武汉市武昌区重点名校2026届中考语文全真模拟试题含解析
- 养老院重要环境因素控制措施
- 藏文教学课件
- 血透室手卫生管理课件
评论
0/150
提交评论