【发布时间】:2010-09-14 13:59:59
【问题描述】:
我的报告中有一些公式,为了防止除以零,我在表达式字段中这样做:
=IIF(Fields!F1.Value 0, Fields!F2.Value/Fields!F1.Value, 0)
这通常可以正常工作,但是当 F1 和 F2 都为零时,我在报告中收到“#Error”,并收到以下警告:“文本框 'textbox196' 的值表达式包含错误:尝试除法零。”
这是为什么呢?
【问题讨论】:
标签: reportviewer
我的报告中有一些公式,为了防止除以零,我在表达式字段中这样做:
=IIF(Fields!F1.Value 0, Fields!F2.Value/Fields!F1.Value, 0)
这通常可以正常工作,但是当 F1 和 F2 都为零时,我在报告中收到“#Error”,并收到以下警告:“文本框 'textbox196' 的值表达式包含错误:尝试除法零。”
这是为什么呢?
【问题讨论】:
标签: reportviewer
IIF() 只是一个函数,与任何函数一样,all 参数在函数被调用之前进行评估,包括Fields!F2.Value/Fields!F1.Value。换句话说,不管Fields!F1.Value <> 0 条件如何,它都会尝试除以零。
【讨论】:
必须有比这更漂亮的方法,但这应该可行:
=IIF(Fields!F1.Value <> 0, Fields!F2.Value /
IIF(Fields!F1.Value <> 0, Fields!F1.Value, 42), 0)
【讨论】:
但是,你可以使用
if Fields!F1.Value <> 0
then
Fields!F2.Value/Fields!F1.Value
else 0
这应该可行,因为如果“if”部分为假,它不会评估 then 子句。
【讨论】: