2010-06-30 16 views
9

Ich erstelle einen Bericht mit SSRS für ein Telefonnummer Feld in meiner Datenbank als Zeichenfolge Wert. Ich muss einen Zeichenfolgenwert im Telefonnummernformat (555) 555-1212 formatieren. Wenn der Wert null ist, zeige nichts an.SSRS-Funktion mit Regex

Zum Beispiel hat eine Tabelle in meiner Datenbank eine Telefonnummer Spalte und einige Werte sind NULL.

Ich habe eine Regex, die die Telefonnummer fein formatiert.

= System.Text.RegularExpressions.Regex.Replace (Fields Phone.Value, „(\ d {3})! [-.] (\ d {3}) [-.] (\ d {4})“, "($ 1) 2- $ 3 $")

Allerdings, wenn ich dies tun:

= IIf (Fields Phone.Value ist nichts "", System .Text.RegularExpressions.Regex.Replace (Felder! Phone.Value, "(\ d {3}) [ -.] (\ d {3}) [-.] (\ d {4})", "($ 1) $ 2- $ 3"))

Dann kommt es mit einem Fehler zurück. #FEHLER wird in meinem Bericht angezeigt. Können Sie iif mit einer Regex verwenden? Gibt es eine andere Art und Weise?

Antwort

12

(Ich nehme an, dass Sie nur #ERROR für Ihre nullwertigen Datensätze erhalten, da dies passiert ist, wenn ich einen Testfall mit dem von Ihnen bereitgestellten Ausdruck eingerichtet habe. Wenn nicht, werde ich weiter untersuchen.)

Sie können sicherlich eine Regex innerhalb der IIF() Anweisung verwenden, aber es evaluates both result conditions unabhängig von dem Ergebnis Ihrer Testausdruck. Daher wird Ihre Regex.replace() auch auf Ihre Werte durchgeführt, die natürlich einen Fehler generiert.

Ich war in der Lage, das Verhalten Ich denke, zu produzieren, dass Sie nach sind durch die Dinge ein wenig neu anordnen, so dass wir diesen Ausdruck stattdessen haben (zur besseren Lesbarkeit formatiert):

=System.Text.RegularExpressions.Regex.Replace(
    IIf(IsNothing(Fields!Phone.Value), "", Fields!Phone.Value), 
    "(\d{3})[ -.](\d{3})[ -.](\d{4})", 
    "($1) $2-$3") 

, die Ihnen ein leeres Wenn der Wert NULL ist, formatiert er Ihre Telefonnummern entsprechend. Hoffentlich hilft das.

+1

Danke, das funktioniert. Ich musste die Regex nur ein wenig formatieren. = System.Text.RegularExpressions.Regex.Replace (IIf (IsNothing (Felder! Phone.Value), "", Felder! Phone.Value), "(\ d {3}) [-.] * (\ D {3 }) [-.] * (\ d {4}) "," ($ 1) $ 2- $ 3 ") – JacksOrBetter99