vba - SSRS 中的惰性求值

标签 vba reporting-services switch-statement iif

我正在使用 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/

相关文章:

go - 如何从 golang 的开关盒内定义的函数内部跳出开关盒?

JSON VBA 解析到 Excel

vba - Excel 值函数需要一个真正的 VBA 等效项

c - 打印链表时结构变量没有被正确保存?

reporting-services - 查询驱动的 SSRS 矩阵行和列

asp.net-mvc - 在MVC Action中将SSRS报告导出为PDF

c - 在 C 中使用 scanf 在 !=EOF 处退出 do while 循环会进行 3 次额外迭代

vba - Excel 范围内行的平均值

vba - 在工作表值中查找数组数据

c# - SSRS 外部组件 : SecurityPermission in Preview Pane?