我正在使用 SSRS 2005 生成报告,我报告中的一列是简单的均值计算。我不想除以零,所以对于我输入的文本框值:=Switch(Fields!Count.Value=0,0,Fields!Count.Value>0,Fields!Sum.Value/Fields!Count.Value)
这仍然评估第二个表达式。
也是如此:=IIF(Fields!Count.Value=0,0,Fields!Sum.Value/Fields!Count.Value)
我不希望我的报告显示错误。我怎样才能克服这个问题?
最佳答案
不幸的是,因为 IIF 实际上只是一个函数,所以在调用函数之前会评估所有参数(导致您被零除)。
在表达式中嵌入复杂逻辑的一种方法是在报表中嵌入一个函数。您可以编写一个 VB 函数以在报告属性的代码选项卡中返回您喜欢的任何内容。
Public Function GetMeanValue(ByVal Sum as Decimal, ByVal Count As Int) As Decimal
'your logic in plain old vb syntax here
End Function
在文本框文本表达式属性中:
=Code.GetMeanValue(Fields!Sum.Value, Fields!Count.Value)
关于vba - SSRS 中的惰性求值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/388748/