SSRS中动态选择数据集

时间:2009-04-13 14:59:10

标签: sql-server dynamic reporting-services dataset

我将使用SSRS 2005设计报告。是否可以动态完成数据集的选择?

假设我将有两个表,其中第一个是摘要,第二个是详细数据。我的一个参数(值为SummaryDetail)将决定要显示哪个版本的报告。我可以拥有两个不同的数据集,并且在参数视图对话框中(或之前)单击视图报告按钮时,设置将使用哪个数据集?

5 个答案:

答案 0 :(得分:2)

您可以使用switch语句使用单个数据集,如下所示: 您可以在数据选项卡中键入此内容,但结果只能在预览选项卡中看到,但不能像常规查询那样在数据选项卡中看到。

=Switch(Parameters!ToDecide.Value = "Summary",
"Your query for Summary", 
Parameters!ToDecide.Value = "Detail",
"Your query for Detail") 
  1. 确保查询中没有多余的空格(不超过一个空格)
  2. 两个查询都应返回布局中表格所需的值。

答案 1 :(得分:1)

你可能需要在一个矩形中包含2对表,并隐藏未使用的表(在容器级别)。或者使用子报告。

如果您找到了切换数据集的方法,那么您必须确保所有列都相同,并确保使用DataSet作为范围参数的任何函数也都会更改...这使我认为它不受支持。

答案 2 :(得分:1)

您可能希望尝试使用单个数据集并在报告中包含摘要和详细信息数据区域(表,列表等),其中一个区域是可见的,而其中一个区域不可见。在这种情况下,数据集仅评估一次,您仍然符合您的要求。

希望这有帮助,

比尔

答案 3 :(得分:0)

如果您有两个单独的表并根据所做的选择隐藏其中一个表,那么创建和维护会更容易。

我没有试过这个,但我认为另一种可能性是使用三个报告:容器,汇总子报告和详细子报告。根据选择在子报表之间切换。

虽然第一个实现有性能问题。 SSRS将在加载时尝试填充报表中的每个数据集,即使报表输出中未使用的数据集或其他数据集或表达式也是如此。换句话说,仅仅因为您正在显示摘要报告,并不意味着您也没有要求数据库填写您的详细数据。

有一种解决方法可以稍微改善性能,但最终仍会导致服务器之旅。黑客是设置一个标志参数来确定查询是否应该实际返回任何实际结果,或者它是否应该只返回你想要的列。

答案 4 :(得分:0)

您可以尝试添加要依赖于cetain参数的条件。然后从那里,您可以使用其他数据集。假设您将在单独的隐藏tablix上使用它。