2013-10-30 51 views
0

试图格式编号(十进制),但它表明我#Error生产服务器上:SSRS FormatNumber错误

=FormatNumber(First(Fields!SumWithMailDelivery.Value, "document"), 0) 

但开发商的服务器上正常工作。 也许有人知道,我该如何解决这个问题?

p.s.没有格式化它也可以在生产服务器上正常工作。

+1

'= Format(First(Fields!SumWithMailDelivery.Value,“document”),“N0”)'?或者只是在'Format'属性的文本框中应用'N0',而不是试图用表达式来应用格式?如果可以接受,我会尝试从表达式中移除格式并设置文本框属性。 –

+0

@IprPreston:如果我设置自定义格式'N0'我得到'1434450.000',所以它不起作用。 如果我使用表达式 - 我得到'N0' ...它的奇怪的... –

+0

错误的原因是SSRS不认识字段作为数字类型出于某种原因...所以尝试像这样:' = FormatNumber(CDec(First(Fields!SumWithMailDelivery.Value,“document”)),0)'应该解决问题或者证明SSRS由于某种原因不能进行数字转换。至于为什么它不能转换,很难说没有访问你的数据。 –

回答

1

正如@IanPreston所说,这很可能是一种类型转换错误。我想象你的生产数据有一些无效的字符,或者那些使数字转换失败的列。

您可以使用Val函数进行转换。 Val与其他数字转换函数不同之处在于,当要转换的字符串不是数字时它不会出错 - 它只是做了最好的工作。

因此,尝试这样的表达式为Value属性:

=IIF(Fields!SumWithMailDelivery.Value Is Nothing, 
    Nothing, 
    IIF(IsNumeric(Fields!SumWithMailDelivery.Value), 
    Val(Fields!SumWithMailDelivery.Value), 
    Fields!SumWithMailDelivery.Value) 
) 

然后使用N0Format财产格式化为数字如果可能的话。

这个公式:

  • 离开小区Nothing如果该字段Null
  • 转换为数字和使用什么是该领域的适当的格式,如果可能的
  • 否则只输出