0

Ich muss eine Zahl mit Leerzeichen als Tausendertrennzeichen und keine Dezimalstellen formatieren.
Eg. '1234567890123,4321' an '1 234 567 890 123' in einem Bericht, der auf SQL Server ausgeführt wird.Formatierungsnummer in Visual Studio für Berichte, die auf SQL Server ausgeführt werden

Unter Platzhaltereigenschaften -> Nummer -> Benutzerdefiniert in VS ist es möglich, Zahlen im Bericht zu formatieren.

Der einzige Weg, die ich bekommen kann es zu arbeiten, indem sie den Format-String mit ‚### ### ### ### ###.‘

Problem ist, dass, wenn die Zahl wird größer I wird nicht das Leerzeichen Trennzeichen bekommen und die Nummer wird wie folgt aussehen: '543211 234 567 890 123'

Versucht (unter anderem), ein Muster wie '# ###.' zu machen, aber ohne Erfolg.

Haben Sie eine Idee, was Sie als Muster verwenden sollten, wenn es mit einer beliebigen Zahl umgehen kann?

Prost
/J

Antwort

0

Zum Report Menü/Report Properties... und Code Registerkarte. Fügen Sie im Textbereich den folgenden Code ein.

Public Function MySplit(input as String) As String 
    Const charNumber = 3 
    Dim sb As New System.Text.StringBuilder() 
    For i As Integer = 0 To input.Length - 1 
    If i Mod charNumber = 0 Then 
    sb.Append(" "c) 
    End If 
    sb.Append(input(i)) 
    Next 
    Dim newString = sb.ToString() 
    Return newString 
End Function 

Sie nun die Funktion im tablix:

=StrReverse(Code.MySplit(StrReverse(Cstr(FLOOR(Fields!Value.Value))))) 

ersetzen Fields!Value.Value durch das Feld, das Sie formatieren möchten.

In einem Tablix wie diese

enter image description here

es so etwas wie diese produziert:

enter image description here

Alternativ können Sie Switch Funktion im Format Eigenschaft verwenden Sie das Format Ihr Gebiet zu bestimmen, benötigt basierend auf seiner Länge:

=Switch(
LEN(Cstr(Floor(Fields!Value.Value)))<4,"###", 
LEN(Cstr(Floor(Fields!Value.Value)))<5,"# ###", 
LEN(Cstr(Floor(Fields!Value.Value)))<6,"## ###", 
...,... 
...,... 
) 

Es funktioniert, aber es könnte mühsam sein, jeden Fall hinzuzufügen.

Lassen Sie mich wissen, ob dies hilft.

Verwandte Themen