【发布时间】:2023-03-14 13:55:01
【问题描述】:
我打算使用 SSRS 2005 设计一个报告。是否可以动态选择数据集?
假设我将有两个表,其中第一个是摘要,第二个是详细数据。我的参数之一(值为Summary 和Detail)将确定要显示哪个版本的报告。我可以有两个不同的数据集,并在单击参数视图对话框(或之前)中的查看报告按钮时设置将使用哪个数据集?
【问题讨论】:
标签: sql-server dynamic reporting-services dataset
我打算使用 SSRS 2005 设计一个报告。是否可以动态选择数据集?
假设我将有两个表,其中第一个是摘要,第二个是详细数据。我的参数之一(值为Summary 和Detail)将确定要显示哪个版本的报告。我可以有两个不同的数据集,并在单击参数视图对话框(或之前)中的查看报告按钮时设置将使用哪个数据集?
【问题讨论】:
标签: sql-server dynamic reporting-services dataset
您可能必须在一个矩形中包含 2 对表格,并隐藏未使用的表格(在容器级别)。或者使用子报表。
如果您找到了切换数据集的方法,那么您必须确保所有列都相同,并确保使用 DataSet 作为范围参数的任何函数也被更改......这让我认为它只是不受支持。
【讨论】:
如果您有两个单独的表并根据所做的选择隐藏一个或另一个,则创建和维护会更容易。
我还没有尝试过,但我认为另一种可能性是使用三个报告:一个容器、一个摘要子报告和一个详细子报告。根据选择在子报表之间切换。
虽然第一个实现存在性能问题。 SSRS 将在加载时尝试填充报表中的每个数据集,即使是报表输出中或其他数据集或表达式未使用的数据集。换句话说,仅仅因为您正在显示摘要报告,并不意味着您没有要求数据库也填写您的详细数据。
有一种解决方法可以稍微提高性能,但最终还是会访问服务器。 hack 是设置一个标志参数来确定查询是否应该实际返回任何实际结果,或者它是否应该只返回您想要的列。
【讨论】:
您可能希望尝试使用单个数据集,并在报告中具有摘要和详细数据区域(表,列表等),其中一个是可见的,其中一个不是。在这种情况下,数据集仅评估一次,您仍然满足您的要求。
希望这会有所帮助,
比尔
【讨论】:
您可以通过使用 switch 语句来使用单个数据集,如下所示: 您可以在数据选项卡中键入此内容,但结果只能在预览选项卡中看到,而不能像常规查询那样在数据选项卡中看到。
=Switch(Parameters!ToDecide.Value = "Summary",
"Your query for Summary",
Parameters!ToDecide.Value = "Detail",
"Your query for Detail")
【讨论】:
您可以尝试添加取决于要执行的 cetain 参数的条件。然后从那里,您可以使用不同的数据集。假设您将在单独的隐藏 tablix 上使用它。
【讨论】: