SSRS функционируют с regex

Я создаю отчет с помощью SSRS для поля номера телефона в моей базе данных как строковое значение. Я должен отформатировать строковое значение в формате телефонного номера (555) 555-1212. Если значение является нулевым, ничего не отобразите.

Например, таблица в моей базе данных имеет столбец номера телефона, и некоторые значения являются НУЛЕВЫМИ.

Я получил regex, который форматирует прекрасный номер телефона.

=System. Текст. RegularExpressions. Regex. Замена (Поля! Телефон. Значение, "(\d {3}) [-]. (\d {3}) [-]. (\d {4})"", дюйм за $2-3 (1$))

Однако, если я делаю это:

=IIf (Поля! Телефон. Значение - ничто, "", Система. Текст. RegularExpressions. Regex. Замена (Поля! Телефон. Значение", (\d {3}) [-]. (\d {3}) [-]. (\d {4})"", дюйм за $2-3 (1$)))

Затем это возвращается с ошибкой. #ERROR отображен на моем отчете. Можно ли использовать iif с regex? Есть ли иначе?

9
задан JacksOrBetter99 30 June 2010 в 20:34
поделиться

1 ответ

(Я предполагаю, что вы получаете #ERROR только для ваших записей с нулевым значением, поскольку именно это и произошло, когда я настроил тестовый пример, используя указанное вами выражение. Если нет, Я буду исследовать дальше.)

Вы, конечно, можете использовать регулярное выражение внутри оператора IIF () , но оно оценивает оба условия результата независимо от результата вашего тестового выражения . Следовательно, ваш Regex.replace () также выполняется для ваших значений NULL , что, естественно, вызывает ошибку.

Мне удалось добиться того же поведения, которое, как я думаю, вам нужно, немного изменив порядок вещей, чтобы вместо этого у нас было это выражение (отформатированное для удобочитаемости):

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

Это даст вам пустое поле, когда значение будет NULL , в противном случае ваши телефонные номера будут отформатированы соответствующим образом. Надеюсь, это поможет.

14
ответ дан 4 December 2019 в 14:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: