从Crystal Reports翻译的ssrs中的上一个/下一个表达式

时间:2018-07-26 13:02:21

标签: reporting-services crystal-reports ssrs-2012

我得到了这个表情:

=Switch(Fields!Kod.Value=1, "text",
Fields!Kod.Value=2, "text",
Fields!Kod.Value=3, "text",
Fields!Kod.Value=4, "text",
Previous(Fields!Kod.Value) = 4 and (Fields!Kod.Value = 5 or 
Fields!Kod.Value = 6 or fields!Kod.Value = 7 or 
fields!Kod.Value=8), "more text",
Fields!Kod.Value=5, "   text",
Fields!Kod.Value=6, "   text",
Fields!Kod.Value=7, "   text",
Fields!Kod.Value=8, "   text",
Fields!Kod.Value=9, "text")

此行

 Previous(Fields!Kod.Value) = 4 and (Fields!Kod.Value = 5 or Fields!Kod.Value = 6 or fields!Kod.Value = 7 or fields!Kod.Value=8)

导致错误:

“必须将scope参数设置为一个字符串常量,该字符串常量等于包含组的名称,包含数据区域的名称或数据集的名称。”

有问题的行是尝试翻译此水晶报表的公式,该公式来自一个威胁:

if {SP;1.Kod} = 4 and 
(next({SP;1.Kod})=5 or
next({SP;1.Kod})=6 or
next({SP;1.Kod})=7 or
next({SP;1.Kod})=8
)
 then false
else true

但是我当时想我可以将这两个公式放在一起,并获得“更多文本”以显示上一个(kod = 4)和下一个(kod)= 5、6、7、8。

如何使该表达式起作用?还是我做错了方法?

2 个答案:

答案 0 :(得分:1)

您需要将范围添加到上一个功能。例如,这可能只是您的数据集名称(也可以是组名称等)。

PREVIOUS(Fields!Kod.Value, "dataset1")

注意:必须使用引号

答案 1 :(得分:0)

好的,谢谢这个网站 https://www.codykonior.com/2011/04/04/duh-moments-previous-and-cross-apply/ 和阿兰斯回答上面 我们终于做到了!

他解释说,当该行位于组中时,它不知道从该组中的哪个实例获取前一个。在表达式中添加First()即可。

Previous(First(Fields!X.Value),"Group")

感谢评论中的帮助,希望对您有所帮助!