2010-06-30 6 views
9

Je crée un rapport en utilisant SSRS pour un champ de numéro de téléphone dans ma base de données en tant que valeur de chaîne. J'ai besoin de formater une valeur de chaîne au format de numéro de téléphone (555) 555-1212. Si la valeur est null, n'affiche rien.Fonction SSRS avec regex

Par exemple, une table dans ma base de données a une colonne de numéro de téléphone et certaines valeurs sont NULL.

J'ai reçu une regex qui formate correctement le numéro de téléphone.

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

Toutefois, si je le fais:

= IIf (champs Phone.Value est rien "", système .Text.RegularExpressions.Regex.Replace (Fields! Phone.Value, "(\ d {3}) [ -.] (\ d {3}) [-.] (\ d {4})", "($ 1) $ 2- $ 3"))

Puis il revient avec une erreur. #ERROR est affiché sur mon rapport. Pouvez-vous utiliser iif avec une regex? Y a-t-il un autre moyen?

Répondre

12

(Je suppose que vous n'obtenez que #ERROR pour vos enregistrements null-valués, puisque c'est ce qui s'est passé quand j'ai mis en place un cas de test en utilisant l'expression que vous avez fournie.

Vous pouvez certainement utiliser une regex dans l'instruction IIF(), mais evaluates both result conditions, quel que soit le résultat de votre expression de test. Par conséquent, votre Regex.replace() est également effectuée sur vos valeurs NULL, ce qui génère naturellement une erreur.

j'ai pu produire le comportement que je pense que vous êtes après par les choses réarranger un peu, de sorte que nous avons cette expression au lieu (formaté pour la lisibilité):

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

Cela vous donnera un blanc lorsque la valeur est NULL, sinon, il formatera vos numéros de téléphone en conséquence. J'espère que ça aide.

+1

Merci, cela fonctionne. J'avais seulement besoin de formater l'expression rationnelle juste un peu. = System.Text.RegularExpressions.Regex.Replace (IIf (N'est pas (Fields! Phone.Value), "", Fields! Phone.Value), "(\ d {3}) [-.] * (\ D {3 }) [-.] * (\ d {4}) "," ($ 1) $ 2- $ 3 ") – JacksOrBetter99