Previous topicNext topic
Help > 互动功能 >
参数

ActiveReports允许您使用参数来筛选或添加要在运行时显示在报表中的数据。您可以提示用户输入参数,以便他们控制输出,也可以在后台提供参数。

为不同的数据源添加参数

查询参数可以从报表参数集合(由用户输入或从您提供的值)、其他数据集中的字段或表达式中获取其值。在查询中添加参数的语法可能因所使用的数据源而异。使用特定于数据源类型的语法创建参数。

不同数据源的参数化查询如下所示:我们还可以参考一下SQL参数

数据源类型 参数语法 示例
OleDB (?) SELECT * FROM Customer WHERE (CustomerID = ? AND AccountNumber = ?)
ODBC @ParameterName SELECT * FROM Customer WHERE (CustomerID = @CustomerID AND AccountNumber = @AccountNumber)
SQL Client @ParameterName SELECT * FROM Customer WHERE (CustomerID = @CustomerID AND AccountNumber = @AccountNumber)
OracleDB :ParameterName SELECT * FROM Customer WHERE CustomerID = :CustomerID AND AccountNumber = :AccountNumber

页面报表/RDL报表

在页报表或 RDL 报表中,使用参数生成查询的最简单方法是使用可视查询设计器,因为它会自动设置每个参数。

数据集对话框中,单击以按钮访问可视查询设计器以创建 SQL 查询。有关如何使用交互式查询设计器创建参数化查询的详细信息,请参阅使用可视化查询设计器生成查询。

但是,如果要手动执行此操作,则必须在三个位置输入每个参数:报表参数对话框(用于在运行时筛选数据)、数据集对话框的参数页和数据集对话框的查询页。

报表 - 参数对话框

报告 - 参数对话框允许您控制如何以及是否向用户显示每个参数的用户界面。您必须在对话框中设置以下属性才能创建参数:

输入报表参数名称。集合中的每个报表参数都必须具有唯一的名称,并且该名称必须与您在数据集对话框的参数页中调用的名称匹配。在上面的示例中,名称为 MPAA

设置数据类型、用于提示用户的文本、是否允许空文本、空白文本、多值文本或多行文本,以及是否隐藏用户界面。

选择默认值或填充可用值列表,供用户从中进行选择。

参数值按照它们在报表参数集合中的显示顺序进行收集。您可以使用报告 - 参数对话框中的箭头更改顺序。

常规选项卡

 

  • 名称:设置此字段中参数的名称。您在此处提供的值将显示在参数列表中,并且必须与相应的查询参数匹配。
  • 数据类型:设置参数的数据类型,该数据类型必须与它筛选的字段的数据类型匹配。显示的界面也可能因数据类型而异。
  • Boolean:布尔值,向用户显示两个选项
  • Date:日期,在未提供默认值或可用值的下拉选择时向用户显示日历选取器以选择日期
  • DateTime:为用户提供一个日历选取器,用于选择日期,并在未提供默认值或可用值的下拉选择的情况下为用户提供一个时间选取器
  • Integer:整数,向用户显示可用值的文本框或下拉选择
  • Float:浮点型,向用户显示文本框或可用值的下拉选择
  • String:字符串,向用户显示可用值的文本框或下拉选择
  • 提示用户输入值显示的文本:在此字段中输入要在用户界面上查看的文本,以向用户请求信息。默认情况下,这与 Name 属性相同。
  • 允许空值:如果要允许为参数传递空值,请选中此复选框。默认情况下不选择它。
  • 允许空白值:如果要允许为参数传递空白值,请选中此复选框。默认情况下不选择它。
  • 多值:选中此复选框可允许用户在可用值列表中选择多个项目。对于多值参数,还可以允许用户在全选属性中的全选选项指定特殊值。
  • 多行:选中此复选框可允许参数中的多行值。控件将自动调整以适应多行。
  • 隐藏:选中此复选框可对用户隐藏参数接口,而是提供默认值或从子报表或钻取链接传入值。请注意,如果隐藏用户界面且未提供默认值,则报告将不会运行。

可选值

这些值用于填充最终用户可以从中进行选择的下拉列表。

  • 非查询:可以通过键入静态值或使用表达式来提供标签和值。
  • 从查询:您可以选择要从中选择值字段和标签字段的数据集。

默认值

这是在用户未提供参数或隐藏参数用户界面时为参数提供的值。

  • 非查询:可以通过输入静态值或使用表达式来提供默认值。
  • 从查询:您可以选择要从中选择值字段的数据集。
  • 无:您可以让用户为参数提供值。

注意:在可用值选项卡中,是传递给查询参数的内容,标签是向用户显示的内容。例如,如果雇员编号,则可能需要提供显示雇员姓名的更用户友好的标签。

访问报表 - 参数对话框

您可以通过以下任一方式访问报告 - 参数对话框:

在报表资源管理器中,单击添加 (+) 图标并选择参数选项。

在报表资源管理器中,右键单击参数节点,然后选择添加参数

在报表资源管理器中,右键单击报表节点,然后选择报表参数

报告菜单中,选择报告参数

报表参数对话框包含一个参数页,其中包含参数列表和三个用于设置参数属性的选项卡。要将参数添加到列表,请单击添加(+) 图标,然后在下面描述的三个选项卡中设置参数属性。

数据集对话框的参数

数据集对话框的参数页上,将报表参数传递到查询中的参数中。您可以点按参数列表顶部的添加(+)图标,输入参数名称,然后提供如下值:

=Parameters!MPAA.Value

数据集对话框的查询

数据集对话框的查询页上,输入 SQL 查询中的参数。使用特定于数据源类型的语法创建参数。例如,对于 OleDB 数据源,为多值电影分级参数添加如下所示的查询:

SELECT * FROM Movie WHERE (MPAA = ? AND YearReleased = ?)

如果要运行报表而不在运行时提示用户输入值,则需要为每个参数设置默认值,并且应在报表 - 参数对话框的常规选项卡中选中隐藏复选框。

子报表参数也被视为隐藏参数,因为用户可以轻松地将子报表的数据与父报表的数据同步。有关更多详细信息,请参阅页/RDL 报表中的子报表。

钻取参数也是隐藏参数,因为钻取链接用于从一个报表导航到另一个报表。为操作选择跳转到报表时,将启用参数列表。

区域报表

在节报表中,可以使用 Parameters 集合在运行时将值直接传递到控件中,也可以使用它在报表的特定实例中显示数据子集。

有几种方法可以在报表中设置参数:

  • 可以在 SQL 查询中输入如下所示的语法,以筛选运行时报表中显示的数据:<%Name | PromptString | DefaultValue | DataType | PromptUser%>
  • 可以通过报表资源管理器添加参数,并将其作为 TextBox 控件放置在报表上,以便在运行时在其中传递值。
  • 还可以通过报表背后的代码在 ReportStart 事件内添加参数。有关详细信息,请参阅添加参数。

提示输入参数值

为了提示用户输入参数值,必须满足以下所有条件:

  • 报表的参数集合中应至少存在一个参数。
  • 至少一个参数的提示用户属性必须设置为 True
  • 在报表对象上,必须将显示参数 UI”属性设置为 True

当集合中存在参数并且 ShowParameterUI 属性设置为 True 时,运行报表时会自动显示用户提示。当用户输入请求的值并单击确定按钮时,将使用指定的值显示报表。

通过在 SQL 查询中指定参数的前缀,可以将通过报表资源管理器添加的参数值应用于 SQL 查询中的参数。此前缀将当前参数与报表资源管理器中的参数相关联。param:

例如,.在这种情况下,SQL 查询中带有前缀的参数将使用报表资源管理器中相应参数的值进行更新。select * from CUSTOMERS where CustomerName = '<%param:Parameter1%>'param:

注意: 在同一报表中,通过将某些参数的 PromptUser 属性设置为 True,在其他报表中设置为 False,可以提示用户输入某些参数,而不提示用户输入其他参数。但是,如果报表对象的 ShowParameterUI 属性设置为 False,则无论其 PromptUser 设置如何,都不会显示任何参数的用户提示。

通过 SQL 查询将参数添加到参数集合

通过 SQL 查询将单个参数添加到报表的参数集合时,查询如下所示:

 SELECT * FROM Products
INNER JOIN Categories ON Products.CategoryID = Categories.CategoryID
WHERE Products.SupplierID = <%SupplierID|Enter a Supplier ID|1|S|True%>

还可以从可视查询设计器创建参数化查询。有关如何使用交互式查询设计器创建参数化查询的详细信息,请参阅使用可视化查询设计器生成查询。

参数语法中有五个值,由竖线字符分隔:|

只需要第一个值(名称),但如果未指定第三个值(默认值),则在设计时不会填充字段列表。可以只提供 Name 值而不提供管道,或者如果希望提供一些(但不是全部)值,只需为缺失值提供管道,它们之间没有空格。例如:<%ProductID||||False%>

名称:这是参数的唯一名称,对应于通过代码输入的参数中的 Key 属性。

提示字符串:此字符串显示在用户提示中,让用户知道要输入哪种值。

默认值:提供用于参数的默认值允许 ActiveReports 在您设计报表时填充绑定字段列表,从而使您能够将字段拖到报表上。它还填充用户提示,以便用户只需单击“确定”按钮即可接受默认值。

数据类型:此值默认为 S 表示字符串,告知 ActiveReports 参数表示的数据类型。它还指示用户提示中使用的控件类型。键入可以是三个值之一。

例如'<%MyStringParameter%>'<%MyStringParameter||"DefaultValue"|S|False%>

例如#<%MyDateParameter%>#

注意: 对于 Microsoft Access 数据库,布尔参数的默认值指定为 -1(true) 或 0(false)。

提示用户:此布尔值允许您告诉 ActiveReports 是否提示用户输入值。对于某些参数,这可以设置为 True,对于其他参数,这可以设置为 False。如果将报表的 ShowParameterUI 属性设置为 False,则无论为报表中的任何参数设置的 PromptUser 值如何,都不会提示用户输入任何参数。

要了解参数的详细操作方法,我们还可以参考:添加参数