2013-09-24 44 views
0

的报告将显示两列Foo和BarMS SSRS 2008 R2:显示计算的值#错误

美孚的某些行是空的部分有一个数值:

Foo: 
+----+ 
| | 
+----+ 
|10.0| 
+----+ 

再有就是酒吧列,此列会从富的价值观,并添加10到他们,报告应产生的结果是这样的:

Foo: Bar: 
+----+----+ 
| | | 
+----+----+ 
|10.0|20.0| 
+----+----+ 

,这是我用它来确定是否美孚数字是酒吧内的表达:

=IsNumeric(ReportItems!FooBox.Value) 

这是结果表达式将产生:

Foo: Bar: 
+----+-----+ 
| |False| 
+----+-----+ 
|10.0|True | 
+----+-----+ 

好吧,那正是我想要的方式,到目前为止,因此,我写我的表情那样:

=IIf(IsNumeric(ReportItems!FooBox.Value), 
      ReportItems!FooBox.Value +10, 
      "") 

这将产生以下结果:

Foo: Bar: 
+----+------+ 
| |#Error| 
+----+------+ 
|10.0|20.0 | 
+----+------+ 

而且最Bizare,当我删除了少量的添加在国际金融协会的Truepart,它将执行:

=IIf(IsNumeric(ReportItems!FooBox.Value), 
       ReportItems!FooBox.Value, 
       "") 

Foo: Bar: 
+----+------+ 
| |  | 
+----+------+ 
|10.0|10.0 | 
+----+------+ 

这几乎就像,如果三元运营商的“错误”部分被不管怎么说执行,从而产生本castError或任何可能的。

我怎样才能正确地转换值,以显示结果如前所解释?

+0

的可能重复[SSRS隐藏#错误显示在单元(http://stackoverflow.com/questions/9144312/ssrs-hide-error-displayed-in-cell)我投票决定关闭:你的问题本质上是一个之前有几个人的复印件。 –

+0

另一个答案:http://stackoverflow.com/questions/1204179/does-the-iif-function-compute-both-paths-in-ssrs-or-is-it-short-circuited –

回答

1

事实上 - 使用I如果将导致两个语句(true和false)进行evaulated并导致你所得到的错误。

在您的情况是,我会创造我自己的函数来处理这个 - 你可以把它放在你的报告的代码字段(单击页面区域外的访问报表对象)

你的函数可能是这样的!

Public Function MyAdd(val As Object) As Nullable(Of Integer) 
     If TypeOf(val) Is Integer Then 
      Return val + 10 
     Else 
      Return Nothing 
     End If 
End Function 

你可能需要使用的(对象和可空整数的也许不是什么会为你工作)

话,当然类型的发挥,在你的表达式中使用MyAdd并通过ReportItems FooBox 。值作为参数