【问题标题】:SSRS Calculated field with IIF expression gives #error when the condition is false条件为假时,带有 IIF 表达式的 SSRS 计算字段给出 #error
【发布时间】:2020-06-22 11:59:33
【问题描述】:

您好,我是 SSRS 的新手,我正在制作我的第一份工作报告。直到今天我需要在 Tablix 中创建一个文本框来处理数字计算和文本时,它一直运行良好。我的 SQL 表中以前是纯数字字段的列现在对于某些行具有 n|a。所以我写了下面的表达式来处理那些 n|as。当收益字段为数字时,公式有效,但当它是 n|a 时,它在报告中显示为#error,我不知道为什么。我已将文本框中的所有格式都删除为相同的结果。

=IIF(Fields!Proceeds.Value<>"n|a",Fields!Proceeds.Value / Fields!DealBalance.Value,"n|a")

【问题讨论】:

  • 你能确认这是vb.net而不是vba吗?
  • 你正在混合字符串和数字作为输出
  • @soohoonigan IIF 允许。输出是 Object... 如果这是 vb.net。代码可以是 .net 或 vba 但是......
  • @djv,这是报告的 RDLC 表达式代码。它基于 VB.Net,但更喜欢使用旧式 VBA 函数。有关概述,请参阅 Expression Examples (Report Builder and SSRS)
  • OP,IIF 是一个函数,因此对传递的参数进行了真假部分的评估。因此,如果Fields!Proceeds.Value 是一个字符串,那么您正在对一个失败的字符串进行除法运算。这将是在报表中嵌入自定义 VB.Net 函数的情况,该函数可以使用更好的类型检查函数。

标签: vb.net reporting-services ssrs-2012 rdlc ssrs-tablix


【解决方案1】:

正如 TnTinMn 解释的那样,IIF 总是计算表达式的真假部分。

简单的解决方法是执行类似的操作 编辑因 OP 更新而修订

=IIF(Fields!Proceeds.Value<>"n|a",VAL(REPLACE(REPLACE(Fields!Proceeds.Value,",",""),"$","")) / Fields!DealBalance.Value,"n|a")

这只是去掉 $ 符号和逗号,然后使用 VAL() 将文本转换为数字,如果文本不是数字,它将返回零,这不会导致错误,因为表达式的错误部分会给 0/DealBalance。

【讨论】:

  • 这解决了结果为 n|a 时的 #error 问题,但现在当收益字段实际上是一个数字时,它返回 0.00%
  • 你能给我一个例子,说明你的数据集中的 Proceeds 和 dealbalance 的数字,包括任何格式(货币符号等)。它应该可以工作。
  • 收益数据看起来像 [$1,230,518,650 , n|a , $1,218,620,302 ],交易余额数据看起来像 [1200506100 , 964898000 , 1177528300]
  • 这三行的结果输出应该是 [102.5% , n|a , 103.5%]
  • 我已经更新了答案,现在表达式将在应用 VAL() 之前去掉逗号和 $ 符号。我已经用这些数据进行了测试,它按预期工作
猜你喜欢
  • 2021-11-26
  • 1970-01-01
  • 2014-12-20
  • 2016-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多