2017-07-27 97 views
0

的条件执行我在SSRS报告这给已经用这种两个数据套入在报告两个不同的表不同数量的输出fields.I的两个不同的数据集。SSRS数据集

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

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

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

实施例: dataSet1的执行Sp1的 Dataset2执行的Sp2

表1使用Sp1的 表2使用的Sp2

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

但是SP1和SP2正在同时执行。所以报告需要更多时间来显示输出。

我需要在基于condition.so其他数据集SP将不执行一次执行1点SP。

+0

您是否尝试过'Visibility'你的表矩阵?把与特定日期和时间检查条件的基础上能见度我示出了两个不同势表中的表达 – LONG

+0

严。但两个数据集SP在同一time.so执行需要花费大量的时间来显示单台输出 –

+0

我不知道有一种方法让SSRS工作更有效率,有时它甚至让我超时错误 – LONG

回答

1

第一步: 首先创建假人SP为数据集。那SP应具有相同输入参数相同输出字段作为原始SP1,但给零输出rows.Do同样为SP2为数据集2

第二步: 在数据集属性选择StoredProcedure的图标和在FX栏中添加以下代码

= IIF(Parameters!ManagerID。值= -1, “SP1”, “DummySP”)

注: DummySP创建应同样喜欢SP1 执行同样的数据集2..and这个工程。

0

你必须控制表矩阵的可见性取决于接收到的参数,额外的,你可以创建两个查询参数来控制在何处执行,以避免执行,像

Where @Condition = 1 AND (Your WHERE) 
0

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

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

然后,最重要的是,您可以使用hideshow您的Tablix。

希望有道理吗?

而且如果column countdata types是一样的,你可以随时使用表达式来决定什么stored-proc打电话。