SSRS条件执行数据集

时间:2017-07-27 13:14:07

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

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

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

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

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

实施例: 数据集1执行Sp1 数据集2执行Sp2

Table1使用Sp1 表2使用Sp2

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

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

我需要根据条件一次执行1个SP。否则其他数据集SP将不会执行。

4 个答案:

答案 0 :(得分:2)

<强>步骤1: 首先为数据集创建 Dummy SP 。该SP应该具有相同的输入参数相同的输出字段作为原始SP1但是给出零输出行。对于数据集2的SP2也是如此

<强>步骤2:  在数据集属性中选择StoredProcedure Icon,在Fx列中添加以下代码

= IIF(参数!ManagerID.Value = -1,“SP1”,“DummySP”)

注意:创建的DummySP应该与SP1相同 为数据集2做同样的事情。这是有效的。

答案 1 :(得分:0)

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

Where @Condition = 1 AND ( Your WHERE )

答案 2 :(得分:0)

至于那一堆性能,你根本不想运行其他SP,在这种情况下,根据我的经验,最好的方法是将你的stored procs修改为根据您决定调用哪些数据集来添加new parameter(表示要提取的数据)。

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

然后,最重要的是,您可以{tab}来hideshow

希望有道理吗?

如果column countdata types相同,您可以随时使用表达式来决定要调用的stored-proc

答案 3 :(得分:0)

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

相反,我有另一个解决方案:

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

第 2 步: 在 DS\Report 的参数映射中,您可以编写一个表达式,表示如果我想要要显示这个SP的数据我把发送到报表的参数发送,如果我不想显示这个数据,我会发送不同的参数,这会导致SP不返回数据。

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

下面是一张图片和一个表达式的例子: enter image description here

和表达式:

=IIf(Parameters!Display_xxx.Value=1,Parameters!yyy.Value,0)
相关问题