【问题标题】:SSRS conditional execution of dataset数据集的SSRS条件执行
【发布时间】:2018-01-03 05:56:31
【问题描述】:

我在 SSRS 报告中有两个不同的数据集,它们提供不同数量的输出字段。我已将这两个数据集用于报告中的两个不同表中。

1) 一个表将根据条件在执行中一次显示输出。

实际上,在运行报表时,两个数据集都在执行 SP,显示输出需要更多时间。

要求: 我需要根据条件一次执行一个数据集SP。其他数据集SP不应该执行。

示例: Dataset1 执行 Sp1 Dataset2 执行 Sp2

Table1 使用 Sp1 Table2使用Sp2

通常在执行报表Table1时会显示输出(基于默认参数选择)

但是 SP1 和 SP2 在同一时间执行。因此报告需要更多时间来显示输出。

我需要根据条件一次执行1个SP。这样其他数据集SP就不会执行了。

【问题讨论】:

  • 您是否为您的 tablix 尝试过 Visibility?在表达式中放置具有特定日期和时间的检查条件
  • 是的,基于可见性,我显示了两个不同的表。但是两个数据集SP同时执行。所以显示单表输出需要大量时间
  • 我不确定有没有办法让 SSRS 工作效率更高,有时甚至会出现超时错误
  • 您需要重写数据集,以便可以从一个数据集中提取两个表的所有数据。如果您的第二个 SP 从未被调用,它将不会填充数据集,因此不会显示任何数据。
  • @bullshell--两个数据集 SP 都给出了不同的输出字段。所以我们不能在同一个 SP 中使用它

标签: sql sql-server reporting-services ssrs-2008 ssrs-2008-r2


【解决方案1】:

我见过this answer,很好,但是创建两个SP,有时很麻烦。有时报告会使用一个 SP 的许多。这意味着必须复制所有 SP。如果您将报告翻倍...这意味着它们需要在其一生中得到维护和改进。

我有另一个解决方案:

第 1 步:我创建 一个 SP,并使用已经存在的参数之一。

第2步:在DS\Report的参数的映射中,不是将发送给报表的参数原样发送给DS,而是写一个表达式,表示如果我想要显示这个SP的数据我发送发送到报表的参数,如果我不想显示这个数据,我会发送不同的参数,这会导致SP不返回数据。

当然,只有当它是一个带有允许上述参数的过程时。也可以为此创建一个特殊的参数。

以下是图片和表达式示例:

和表达式:

=IIf(Parameters!Display_xxx.Value=1,Parameters!yyy.Value,0)

【讨论】:

    【解决方案2】:

    第一步: 首先为数据集创建 Dummy SP。该 SP 应该与原始 SP1 具有 相同的输入参数相同的输出字段,但输出行为零。执行数据集 2 的 SP2 相同

    第二步: 在 Dataset 属性中选择 StoredProcedure Icon 并在 Fx 列中添加以下代码

    =IIF(Parameters!ManagerID.Value= -1,"SP1","DummySP")

    注意:创建的 DummySP 应该和 SP1 一样 对数据集 2 执行相同的操作。这样就可以了。

    【讨论】:

    • 很好,但是创建两个SP,有时很麻烦。有时报告会使用多个 SP。这意味着必须复制所有 SP。如果你把数量翻倍到几份报告……这意味着他们需要在他们的一生中得到维护和改进。 Instead I have another solution 在此页面下方。
    【解决方案3】:

    至于那一袋性能,你根本不想运行其他SP,在这种情况下,根据我的经验,最好的方法是修改你的stored procs,添加一个基于new parameter关于您决定调用哪些数据集(意味着要提取哪些数据)的内容。

    因此,如果参数表明不需要特定的 SP,请不要在 SP 中使用IF-ELSE 组合运行代码并返回空白单行。

    然后,除此之外,您还可以 hideshow 您的 tablix。

    希望这有意义吗?

    如果column countdata types 相同,您始终可以使用表达式来决定调用什么stored-proc

    【讨论】:

      【解决方案4】:

      您必须控制 tablix 的可见性取决于接收到的参数,此外您可以在两个查询上创建参数以控制执行位置以避免执行,例如

      Where @Condition = 1 AND ( Your WHERE )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多