2013-10-30 65 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
  • 轉換爲數字和使用什麼是該領域的適當的格式,如果可能的
  • 否則只輸出