我有一个报告,里面有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,则不返回任何错误,并按照我希望显示的方式填充标题。怎么会这样?
答案 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")