SSRS - 用于为报告标题创建字符串的表达式

时间:2015-11-25 10:13:54

标签: reporting-services ssrs-2008 ssrs-2008-r2 ssrs-expression

我有一个报告,里面有6个参数。我想做的是将这些参数作为我的报告标题的一部分。我的参数如下:

results.df = data.df %>% group_by(V1) %>% calc_stuff()

将始终传递@ BMDataType1和@ BMDataComp1参数,其他参数可以为null。我需要的标题是,如果只传递了@ BMDataType1和@ BMdataComp1,那么标题应该是例如:

基准1 100%基准成分

到目前为止,我已为此进行了编码:

@BMDataType1  Text
@BMDataComp1  Float
@BMDataType2  Text
@BMDataComp2  Float
@BMDataType3  Text
@BMDataComp3  Float

但是如果填充了@ BMDataType2和@ BMDataComp2,那么我需要标题如下:

基准1 50%基准2 50%基准成分

如果传递3则相同:

基准1 50%基准2 30%基准3 20%基准成分

永远不会说基准1和基准3.它只会是1,或1和2或1,2和3。

有人能指出我如何编写IIF语句的正确方向,以检查Benchmark2和Benchmark3参数是否为NULL?

由于

编辑:

经过一番工作后,我想出了以下代码,但我还是得到了:

=Parameters!BMDataType1.Value + " " + Parameters!BMDataComp1.Value.ToString + "%" + " Benchmark Constituents"

我的代码如下:

"Object reference not set to an instance of an object"

但是,如果所有3个参数都不为null,则不返回任何错误,并按照我希望显示的方式填充标题。怎么会这样?

3 个答案:

答案 0 :(得分:1)

我从5月开始就没有使用SSRS,但SSRS中的字符串连接使用VB语法。因此,不必使用+符号的concat字符串,而是使用&登录。

=Parameters!BMDataType1.Value & " " & Parameters!BMDataComp1.Value.ToString & "%" & " Benchmark Constituents"

答案 1 :(得分:1)

我找到了解决方案,我的代码如下:

=Parameters!BMDataType1.Value + " " + CStr(Parameters!BMDataComp1.Value) + "% " 
+ IIF(IIF(IsNothing(Parameters!BMDataType2.Value),1,0)=0,Parameters!BMDataType2.Value + " " + CStr(Parameters!BMDataComp2.Value)+"%","") + " "
+ IIF(IIF(IsNothing(Parameters!BMDataType3.Value),1,0)=0,Parameters!BMDataType3.Value + " " + CStr(Parameters!BMDataComp3.Value)+"%","") + " Benchmark Constituents"

无论出于何种原因,它都不喜欢返回的.ToString" Oject引用未设置为对象的实例"。通过将其包装在CStr中,我能够删除错误并获得我需要的解决方案。

感谢所有回复,他们都帮了忙。

答案 2 :(得分:0)

这样的事情对你有用:

=Parameters!BMDataType1.Value + " " + Parameters!BMDataComp1.Value.ToString + "%" + IIf(IsNothing(Parameters!BMDataType3.Value) OR IsNothing(Parameters!BMDataComp3.Value), IIf(IsNothing(Parameters!BMDataType2.Value) OR IsNothing(Parameters!BMDataComp2.Value), " Benchmark Constituents", " " + Parameters!BMDataType2.Value + " " + Parameters!BMDataComp2.Value.ToString + "%" + " Benchmark Constituents"), " " + Parameters!BMDataType2.Value + " " + Parameters!BMDataComp2.Value.ToString + "%" + " " + Parameters!BMDataType3.Value + " " + Parameters!BMDataComp3.Value.ToString + "%" + " Benchmark Constituents")