数据集的SSRS条件执行

SSRS conditional execution of dataset

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

1) 一个table会根据条件一次显示输出

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

要求: 我需要根据 condition.Other 数据集 SP 不应执行的时间执行一个数据集 SP。

示例: Dataset1 执行 Sp1 Dataset2 执行 Sp2

Table1 使用 Sp1 表 2 使用 Sp2

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

但是 SP1 和 SP2 正在执行相同的 time.so 报告需要更多时间来显示输出。

基于condition.so其他数据集SP不会执行,我需要一次执行1个SP。

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

Where @Condition = 1 AND ( Your WHERE )

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

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

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

希望这是有道理的?

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

第一步: 首先为数据集创建虚拟 SP。该 SP 应具有与原始 相同的输入参数 相同的输出字段 SP1 但给出零输出 rows.Do 与数据集 2 的 SP2 相同

第二步: 在数据集属性 select StoredProcedure Icon 和 Fx 列中添加以下代码

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

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

我看过,不错,但是要创建两个SP,有时候很麻烦。有时报告使用 SP 的许多。这意味着必须复制所有 SP。如果你将报告翻倍很多...这意味着他们需要终生维护和改进。

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

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

步骤 2: 在 DS\Report 参数的映射中,不是将发送到报表的参数原样发送到 DS,您可以这样写一个表达式,表示如果我想显示这个 SP 的数据,我发送发送到报告的参数,如果我不想显示这个数据,我将发送不同的参数,这将导致 SP 不 return数据。

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

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

和表达式:

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