如何在SSRS报告中创建类似于Excel公式的表达式?

时间:2016-06-07 23:19:15

标签: reporting-services formula rdl

我需要将多个类似的存储过程的结果合并到一个Tablix中。

我正在使用多个存储过程来返回相同的数据,但是对于不同的单位。所以在一个“单元格”中(我不知道这是否是Tablix中数据字段的正确术语)我有一个像这样的表达式:

=IIF((Fields!Week.Value="WK1"),Fields!Price.Value,"")

...当“周”字段的值为“WK1”并且单位值为“BARNEY”的存储过程为数据集时,有条件地显示数据。

之后(在同一行,在Tablix右侧的一列中)我需要显示来自不同存储过程的相同数据,其中使用的单位值是“RUBBLE”。我需要Expression从第一个存储过程引用Tablix中的现有值(ItemCode),以便该行上的两个单元格显示相同ItemCode的值(但不同的单位)。

该单元格/字段是指向存储过程返回的ItemCode值的简单指针:

=Fields!ItemCode.Value

如何使用公式显示ItemCode的数据,初始存储过程正在该行上显示数据。像这样:

=IIF((Fields!Week.Value="WK1" AND Fields.ItemCode=[Existing Item Code value in this row]),Fields!Price.Value,"")

IOW,我需要什么代替“此行中的现有物品代码值”来使其工作?可能是这样的:

=IIF((Fields!Week.Value="WK1" AND Fields.ItemCode=TextboxItemCodeData.Value),Fields!Price.Value,"")

1 个答案:

答案 0 :(得分:2)

如果您使用的Tablix的主数据集是BARNEY,那么这是您应该从RUBBLE数据集中获取数据的基本查找表达式。

=Lookup(Fields!ItemCode.Value, Fields!ItemCode.Value, Fields!Price.Value, "RUBBLE")

在这种情况下,当ItemCode值在BARNEY和RUBBLE数据集之间匹配时,将返回Price。

这个表达式可以帮助您隐藏或显示辅助数据集中的值。

=IIf(Lookup(Fields!ItemCode.Value, Fields!ItemCode.Value, Fields!Week.Value, "RUBBLE")="WK1", Lookup(Fields!ItemCode.Value, Fields!ItemCode.Value, Fields!Price.Value, "RUBBLE"), "")

IIf的第一部分是检查RUBBLE数据集中的Week字段。如果值为WK1,则它显示RUBBLE数据集中的Price;否则没什么。

如果您不必检查RUBBLE数据中的Week值,那么这可能会有效,只需检入BARNEY数据集即可。

=IIf((Fields!Week.Value="WK1"),Lookup(Fields!ItemCode.Value, Fields!ItemCode.Value, Fields!Price.Value, "RUBBLE"),"")