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。
设置数据类型、用于提示用户的文本、是否允许空文本、空白文本、多值文本或多行文本,以及是否隐藏用户界面。
选择默认值或填充可用值列表,供用户从中进行选择。
参数值按照它们在报表参数集合中的显示顺序进行收集。您可以使用“报告 - 参数”对话框中的箭头更改顺序。
“常规”选项卡
可选值
这些值用于填充最终用户可以从中进行选择的下拉列表。
默认值
这是在用户未提供参数或隐藏参数用户界面时为参数提供的值。
注意:在“可用值”选项卡中,“值”是传递给查询参数的内容,“标签”是向用户显示的内容。例如,如果“值”是“雇员编号”,则可能需要提供显示“雇员姓名”的更用户友好的标签。
访问“报表
- 参数”对话框
您可以通过以下任一方式访问“报告 - 参数”对话框:
在报表资源管理器中,单击添加
(+) 图标并选择参数选项。
在报表资源管理器中,右键单击“参数”节点,然后选择“添加参数”。
在报表资源管理器中,右键单击“报表”节点,然后选择“报表参数”。
从“报告”菜单中,选择“报告参数”。
“报表参数”对话框包含一个参数页,其中包含参数列表和三个用于设置参数属性的选项卡。要将参数添加到列表,请单击添加(+) 图标,然后在下面描述的三个选项卡中设置参数属性。
“数据集”对话框的“参数”页
在“数据集”对话框的“参数”页上,将报表参数传递到查询中的参数中。您可以点按参数列表顶部的添加(+)图标,输入参数名称,然后提供如下值:
=Parameters!MPAA.Value
“数据集”对话框的“查询”页
在“数据集”对话框的“查询”页上,输入 SQL
查询中的参数。使用特定于数据源类型的语法创建参数。例如,对于 OleDB
数据源,为多值电影分级参数添加如下所示的查询:
SELECT * FROM Movie WHERE (MPAA = ? AND YearReleased =
?)
如果要运行报表而不在运行时提示用户输入值,则需要为每个参数设置默认值,并且应在“报表 - 参数”对话框的“常规”选项卡中选中“隐藏”复选框。
子报表参数也被视为隐藏参数,因为用户可以轻松地将子报表的数据与父报表的数据同步。有关更多详细信息,请参阅页/RDL 报表中的子报表。
钻取参数也是隐藏参数,因为钻取链接用于从一个报表导航到另一个报表。为操作选择“跳转到报表”时,将启用参数列表。
区域报表
在节报表中,可以使用 Parameters
集合在运行时将值直接传递到控件中,也可以使用它在报表的特定实例中显示数据子集。
有几种方法可以在报表中设置参数:
提示输入参数值
为了提示用户输入参数值,必须满足以下所有条件:
当集合中存在参数并且 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 值如何,都不会提示用户输入任何参数。
要了解参数的详细操作方法,我们还可以参考:添加参数