1

我有一个 SSRS 报告,它在矩阵报告的同一列中有不同的数据类型。当我在不格式化的情况下显示数据时,会显示所有数据。但是,我想在整数中使用逗号分隔符,较小的值保留 3 个小数位,并按原样显示值,就好像它们是文本一样。

整数和十进制值正确显示,但任何包含文本的单元格都会显示#error。这是值的格式。

=IIF(InSTR(Fields!KPIValue.Value, ".") > 0, FORMAT(CDbl(Fields!KPIValue.Value), "0.000"), 
     IIF(InSTR(Fields!KPIValue.Value, "/") > 0, Fields!KPIValue.Value, FORMAT(CInt(Fields!KPIValue.Value), "###,###,###,##0"))) 

我在报表的明细数据区的值表达式中使用了这段代码。这是带有和不带格式的数据示例。

Unformatted   Formatted

17398549      17,398,549

94/04/28      #Error

00/03/34      #Error

00/00         #Error

1.067         1.067

0.829         0.829

0.000         0.000

24020         24,020

任何帮助解决此问题将不胜感激。

4

1 回答 1

2

由于 SSRS 不会在语句上短路IIf,因此您会遇到错误,因为表达式的所有部分都已格式化,并且有些会出现数据类型错误。

要解决此问题并实现您的目标,您需要在报告自定义代码中执行此操作。创建一个函数,如:

Function FormatValue (KPIValue As String) As String
  If IsNumeric(KPIValue) And InStr(KPIValue, ".") > 1 Then
    FormatValue = Format(CDbl(KPIValue), "0.000")
  Else If IsNumeric(KPIValue) Then
    FormatValue = Format(CInt(KPIValue), "###,###,###,##0")
  Else
    FormatValue = KPIValue
  End If
End Function

然后您可以在报告中调用它,例如:

=Code.KPIValue(Fields!KPIValue.Value)

在您的数据上为我工作得很好:

在此处输入图像描述

您会在自定义代码中注意到我稍微移动了您的逻辑;这对我来说是有道理的,但无论对你有用,还是在你的完整数据集上都可以。

于 2013-10-09T21:34:20.990 回答