首页 文章

SSRS中动态选择数据集

提问于
浏览
0

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

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

4 回答

  • 1

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

    希望这可以帮助,

    法案

  • 0

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

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

  • 1

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

    =Switch(Parameters!ToDecide.Value = "Summary",
    "Your query for Summary", 
    Parameters!ToDecide.Value = "Detail",
    "Your query for Detail")
    
    • 确保查询中没有多余的空格(在需要的地方不超过一个空格)

    • 两个查询都应返回布局中表所需的值 .

  • 2

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

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

    但是,第一个实现有一个性能问题 . SSRS将在加载时尝试填充报表中的 every DataSet,即使报表中未使用的报表's output or by other DataSets or expressions. In other words, just because you'显示摘要报表,也不会要求数据库也填写您的详细数据 .

    有一种解决方法可以稍微改善性能,但最终还是会去服务器 . 黑客是设置一个标志参数来确定查询是否应该实际返回任何实际结果,或者它是否应该返回所需的列 .

相关问题