Ich habe ein Problem und alles, was ich versucht habe, funktioniert nicht. Ich habe ein Telefonnummer Datenfeld, das Zahlen ohne Formatierung '3055558798' zurückgibt, aber ich will es so aussehen '(305) 555-8798'. Ich kann das mit diesem Ausdruck machen:
%Vor%Das einzige Problem ist, dass wenn die Rückkehr Null ist, ich # ERROR im Raum bekomme. Ich fand einen Ausdruck, der den #FEHLER beseitigte, aber immer noch kein Glück, sie beide zusammen zu setzen. Ich müsste meine Berichte durchforsten, um den Ausdruck zu finden, aber hoffentlich kann mir jemand helfen. Ich mache seit ein paar Monaten Berichte, aber ich bin immer noch nicht gut mit all den Ausdrücken, die es gibt. Ich muss nur die Telefonnummer formatieren und wenn die Rückkehr Null ist, dann zeige nichts. Es gibt auch dieses auf der gleichen Seite, die ich den Ausdruck fand, aber es funktioniert nicht, also weiß ich nicht, warum der Typ sagte, dass es für ihn arbeitete.
%Vor%Das funktioniert einfach nicht für mich, ich glaube, die Syntax ist falsch, aber ich weiß nicht, was ich ändern soll, um es zu beheben. Danke.
Der Fehler, den Sie haben, hat nichts mit Formatierung zu tun, es ist die Konvertierung zu Double
, die fehlschlägt. Ihr Ausdruck funktioniert also einwandfrei, solange Ihr Feld nur aus numerischen Zeichen besteht. Sie verfügen jedoch über einige Daten mit nicht numerischen Zeichen, die verursachen, dass die Funktion Convert.ToDouble()
einen Fehler auslöst.
Leider kann dies nicht mit einem IIF
-Ausdruck gelöst werden, da IIF
eine Funktion und kein Sprachkonstrukt ist, so dass sowohl der wahre als auch der falsche Parameter ausgewertet wird, bevor er an die Funktion übergeben wird, unabhängig vom Wert der booleschen Bedingung Parameter. Das bedeutet:
versucht immer, die Konvertierung zu verdoppeln, unabhängig vom Ergebnis der Funktion IsNumeric
. Es gibt zwei Möglichkeiten, dies zu lösen:
Verwenden Sie Val statt ToDouble
Das Problem mit ToDouble
sind Fehler, wenn die zu konvertierende Zeichenfolge ein unpassendes Formular ist; Val
hat dieses Problem nicht - es packt einfach so viele Zahlen wie möglich. Jetzt können wir den Ausdruck verwenden:
Dieser Ausdruck gibt Nothing
zurück, wenn das Feld Null
ist, überprüft, ob es numerisch ist und wenn dies der Fall ist, konvertiert es in eine Zahl und formatiert es, andernfalls gibt es nur das zurück, was im Feld ist.
Beachten Sie, dass die Funktion Val
noch ausgeführt wird, auch wenn das Feld nicht numerisch ist, aber dieser Ausdruck erfolgreich ist, weil die Funktion Val
keine Fehler wie ToDouble
auslöst. Wir machen einfach die Berechnung und verwerfen das Ergebnis.
Benutzerdefinierter Code
Klicken Sie im Menü Report
auf Report Properties...
und wechseln Sie zum Tab Code
. Fügen Sie den folgenden Code ein:
Verwenden Sie den folgenden Ausdruck in Ihrer Telefonnummerzelle:
%Vor%Tags und Links reporting-services formatting phone-number