2010-06-30 13 views
9

Tworzę raport za pomocą SSRS dla pola numeru telefonu w mojej bazie danych jako wartość ciągu. Potrzebuję sformatować wartość ciągu w formacie numeru telefonu (555) 555-1212. Jeśli wartość jest pusta, nic nie wyświetlaj.Funkcja SSRS z regex

Na przykład tabela w mojej bazie danych zawiera kolumnę z numerem telefonu, a niektóre wartości mają wartość NULL.

Mam wyrazy regularne, które formatują numer telefonu dobrze.

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

jednak jeśli robię to:

= IIf (Pola Phone.Value jest niczym,

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

Następnie wraca z błędem. #ERROR jest wyświetlany na moim raporcie. Czy możesz używać iif z wyrażeniem regularnym? Czy istnieje inny sposób?

Odpowiedz

12

(Zakładam, że otrzymujesz tylko #ERROR dla rekordów o wartości zerowej, ponieważ tak się stało, gdy skonfigurowałem test testowy za pomocą wyrażenia, które podałeś. Jeśli nie, zbadam dalej.)

Z pewnością można użyć wyrażeń regularnych wewnątrz instrukcji IIF(), ale jest to evaluates both result conditions niezależnie od wyniku wyrażenia testowego. Dlatego Twój Regex.replace() jest również wykonywany na twoich wartościach NULL, co naturalnie generuje błąd.

byłem w stanie wyprodukować zachowanie myślę, że jesteś po przez rozmieszczanie rzeczy trochę tak, że mamy to wyrażenie zamiast (sformatowany dla czytelności):

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

To daje pusty pole, gdy wartość wynosi NULL, w przeciwnym razie odpowiednio sformatuje numery telefoniczne. Mam nadzieję, że to pomaga.

+1

Dzięki, to działa. Musiałem tylko sformatować wyrażenie regularne. = System.Text.RegularExpressions.Regex.Replace (IIf (IsNothing (Fields! Phone.Value), "", Fields! Phone.Value), "(\ d {3}) [-.] * (\ D {3 }) [-.] * (\ d {4}) "," (1 $) 2- $ 3 ") – JacksOrBetter99