0

我有一个Tablix分组总数。但是,我的列数据有时可以是stringintdecimal等……这取决于调用的存储过程。注意:这是一个动态过程。

设置 DataTable 值

var queryResult = typeof(MethodsToRdlc).GetMethod(conf.SelectMethod).Invoke(new MethodsToRdlc(), new object[] { });
DataTable result = queryResult.ToDataTable();

所以,当数据是十进制整数其他数字类型时,我想在我的Total. 为此,我有这个可爱的表达方式:

总表达

=Replace(Format(Sum(CDbl(Replace(Fields!DataColumn8.Value, ",", "."))), "F"), ".", ",")

但是,当数据类型不是数字时,我会得到#Error。如何将#Error替换为空字符串(例如)?

我已经尝试过了:

=IIf(IsNumeric(Fields!DataColumn8.Value), Replace(Format(Sum(CDbl(Replace(Fields!DataColumn8.Value, ",", "."))), "F"), ".", ","), "")

和这个

=IIf(IsNumeric(Replace(Fields!DataColumn8.Value, ",", ".")), Replace(Format(Sum(CDbl(Replace(Fields!DataColumn8.Value, ",", "."))), "F"), ".", ","), "")

和这个

=IIf(CDbl(Fields!DataColumn8.Value) = 0, "", Replace(Format(Sum(CDbl(Replace(Fields!DataColumn8.Value, ",", "."))), "F"), ".", ","), "")

和这个

=IIf(CDbl(Replace(Fields!DataColumn8.Value, ",", ".")) = 0, "", Replace(Format(Sum(CDbl(Replace(Fields!DataColumn8.Value, ",", "."))), "F"), ".", ","), "")

和这个

=IIf(IsNothing(IsNumeric(Replace(Fields!DataColumn8.Value, ",", "."))), "", Replace(Format(Sum(CDbl(Replace(Fields!DataColumn8.Value, ",", "."))), "F"), ".", ","))

没有任何效果......总是显示#Error

4

1 回答 1

0

选项 1: SSRS 不会短路iif。即使传递了字符串值,它也会评估真假部分。#Error这就是它在您的表达中引起的原因。

用这样的东西更新真子句

Fields!DataColumn8.ValueIIF(IsNumeric(Fields!DataColumn8.Value),Fields!DataColumn8.Value,0)

=IIf(IsNumeric(Fields!DataColumn8.Value)
      , Replace(Format(Sum(CDbl(Replace(
       IIF(IsNumeric(Fields!DataColumn8.Value),Fields!DataColumn8.Value,0.0)
      , ",", "."))), "F"), ".", ","), "")

如果它仍然抛出错误,请尝试将您的 true 子句CSTR连同IIF部分一起转换为 0。

选项 2:在 SQL 查询中处理它。

于 2016-01-15T21:50:16.703 回答