如何在 SSRS 报告中创建类似于 Excel 公式的表达式?
How can I create an expression in an SSRS report similar to an Excel formula?
我需要将多个相似存储过程的结果合并到一个 Tablix 中。
我正在使用多个 return 相同数据但用于不同单元的存储过程。所以在一个 "cell" 中(我不知道这是否是 Tablix 中数据字段的正确术语)我有一个像这样的表达式:
=IIF((Fields!Week.Value="WK1"),Fields!Price.Value,"")
...当 "Week" 字段的值为 "WK1" 并且单位值为 "BARNEY" 的存储过程是数据集时,有条件地显示数据。
之后(在同一行,Tablix 右侧的一列中)我需要显示来自不同存储过程的相同数据,其中使用的单位值为 "RUBBLE"。我需要表达式从第一个存储过程引用 Tablix 中的现有值 (ItemCode),以便行中的两个单元格都显示相同 ItemCode(但单位不同)的值。
cell/field 是指向从存储过程 return 编辑的 ItemCode 值的简单指针:
=Fields!ItemCode.Value
如何使用公式显示初始存储过程在该行上显示数据的 ItemCode 的数据。像这样:
=IIF((Fields!Week.Value="WK1" AND Fields.ItemCode=[Existing Item Code value in this row]),Fields!Price.Value,"")
?
IOW,我需要什么来代替 "Existing Item Code value in this row" 才能完成这项工作?会不会是这样的:
=IIF((Fields!Week.Value="WK1" AND Fields.ItemCode=TextboxItemCodeData.Value),Fields!Price.Value,"")
?
如果您正在使用的 tablix 的主要数据集是 BARNEY,那么这是您应该从 RUBBLE 数据集获取数据的基本查找表达式。
=Lookup(Fields!ItemCode.Value, Fields!ItemCode.Value, Fields!Price.Value, "RUBBLE")
在这种情况下,当 BARNEY 和 RUBBLE 数据集的 ItemCode 值匹配时,将返回价格。
这个表达式可以帮助您隐藏或显示辅助数据集中的值。
=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 数据集中的周字段。如果值为 WK1,则显示 RUBBLE 数据集中的价格;否则什么都没有。
如果您不必检查 RUBBLE 数据中的周值,这可能会起作用,而只需检查 BARNEY 数据集即可。
=IIf((Fields!Week.Value="WK1"),Lookup(Fields!ItemCode.Value, Fields!ItemCode.Value, Fields!Price.Value, "RUBBLE"),"")
我需要将多个相似存储过程的结果合并到一个 Tablix 中。
我正在使用多个 return 相同数据但用于不同单元的存储过程。所以在一个 "cell" 中(我不知道这是否是 Tablix 中数据字段的正确术语)我有一个像这样的表达式:
=IIF((Fields!Week.Value="WK1"),Fields!Price.Value,"")
...当 "Week" 字段的值为 "WK1" 并且单位值为 "BARNEY" 的存储过程是数据集时,有条件地显示数据。
之后(在同一行,Tablix 右侧的一列中)我需要显示来自不同存储过程的相同数据,其中使用的单位值为 "RUBBLE"。我需要表达式从第一个存储过程引用 Tablix 中的现有值 (ItemCode),以便行中的两个单元格都显示相同 ItemCode(但单位不同)的值。
cell/field 是指向从存储过程 return 编辑的 ItemCode 值的简单指针:
=Fields!ItemCode.Value
如何使用公式显示初始存储过程在该行上显示数据的 ItemCode 的数据。像这样:
=IIF((Fields!Week.Value="WK1" AND Fields.ItemCode=[Existing Item Code value in this row]),Fields!Price.Value,"")
?
IOW,我需要什么来代替 "Existing Item Code value in this row" 才能完成这项工作?会不会是这样的:
=IIF((Fields!Week.Value="WK1" AND Fields.ItemCode=TextboxItemCodeData.Value),Fields!Price.Value,"")
?
如果您正在使用的 tablix 的主要数据集是 BARNEY,那么这是您应该从 RUBBLE 数据集获取数据的基本查找表达式。
=Lookup(Fields!ItemCode.Value, Fields!ItemCode.Value, Fields!Price.Value, "RUBBLE")
在这种情况下,当 BARNEY 和 RUBBLE 数据集的 ItemCode 值匹配时,将返回价格。
这个表达式可以帮助您隐藏或显示辅助数据集中的值。
=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 数据集中的周字段。如果值为 WK1,则显示 RUBBLE 数据集中的价格;否则什么都没有。
如果您不必检查 RUBBLE 数据中的周值,这可能会起作用,而只需检查 BARNEY 数据集即可。
=IIf((Fields!Week.Value="WK1"),Lookup(Fields!ItemCode.Value, Fields!ItemCode.Value, Fields!Price.Value, "RUBBLE"),"")