Jac*_*r99 9 reporting-services
我正在使用SSRS为我的数据库中的电话号码字段创建一个报告作为字符串值.我需要格式化电话号码格式的字符串值(555)555-1212.如果值为null,则不显示任何内容.
例如,我的数据库中的表具有电话号码列,并且某些值为NULL.
我有一个正则表达式,可以很好地格式化电话号码.
= System.Text.RegularExpressions.Regex.Replace(Fields!Phone.Value,"(\ d {3})[ - .] (\ d {3})[ - .](\ d {4})"," ($ 1)$ 2- $ 3")
但是,如果我这样做:
= IIf(Fields!Phone.Value is nothing,"",System.Text.RegularExpressions.Regex.Replace(Fields!Phone.Value,"(\ d {3})[ - .] (\ d {3})[ - .](\ d {4})","($ 1)$ 2- $ 3"))
然后它返回错误.#ERROR显示在我的报告中.你能用正则表达式使用iif吗?还有另外一种方法吗?
Tim*_*one 14
(我假设您的空值记录只获得了#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")
Run Code Online (Sandbox Code Playgroud)
当值为时,这将为您提供一个空白字段NULL
,否则它将相应地格式化您的电话号码.希望这会有所帮助.
归档时间: |
|
查看次数: |
10155 次 |
最近记录: |