我在生成 .rdlc 报告时遇到问题。其中一列具有以下表达式:
IIF(CInt(Fields!MyColumn.Value) = 0 or Fields!MyColumn.Value is nothing,"Unknown",Fields!MyColumn.Value)
Run Code Online (Sandbox Code Playgroud)
我还尝试将该字段用作字符串:
=IIF(IsNothing(Fields!MyColumn.Value) or Fields!MyColumn.Value is nothing,"Unknown",Fields!MyColumn.Value.ToString())
Run Code Online (Sandbox Code Playgroud)
当 MyColumn 的值不是 时NULL,报表正确显示该值,但当它是NULL(或转换为 int 类型时为0)时,报表返回#Error。奇怪的是,当我删除 if 函数并仅显示该字段的值时,报告显示 0 或空白(它不返回错误)。我怎样才能解决这个问题?
您可以尝试在不进行比较的情况下进行验证:
=IIf(Fields!YourColumn.Value
, Fields!YourColumn.Value
, "Unknown")
Run Code Online (Sandbox Code Playgroud)
或者反转您的检查(检查它是否存在,而不是检查它是否不存在):
=IIf(Fields!YourColumn.Value > 0
, Fields!YourColumn.Value
, "Unknown")
Run Code Online (Sandbox Code Playgroud)
另外,我不确定,但这可能与在同一列中使用不同的值类型有关。尝试对整列使用相同的值类型。比如只输出字符串,或者只输出整数。
如果没有任何效果,您还可以检查代码中的 NULL 值,然后将该值设置为 0 或 -1(左右)。然后您可以在 RDLC 报告中检查这一点。