SSRS在数字和字母字符之间插入空格

时间:2018-07-19 13:39:49

标签: reporting-services ssrs-2012

我遇到一个问题,其中字段以'## ABC'的形式存储在我们的数据库中,数字和字母之间没有空格。该数字可以是1到100之间的任何数字,并且字母可以是任何组合,因此开头字母或数字长度之间的不一致。

我正在尝试找到一种在数字和字母之间插入空格的方法。

例如,“ 1DRM”将转换为“ 1 DRM”              '35PLT'将转换为'35 PLT'

有人知道实现此目标的方法吗?

2 个答案:

答案 0 :(得分:1)

不幸的是,没有内置函数可以做到这一点。

幸运的是,Visual Studio允许您创建函数来帮助解决此类问题。

您可以通过转到“报表属性”并转到“自定义代码”标签来添加Visual BASIC自定义代码。

您只需要编写一些代码就可以逐字符地进行一些文本输入。如果在下一个字符中找到数字和字母,请添加一个空格。

这是我在几分钟内写的似乎有效的内容:

Function SpaceNumberLetter(ByVal Text1 AS String) AS String

DIM F AS INTEGER

IF LEN(Text1) < 2 THEN GOTO EndFunction

F = 1 

CheckCharacter:

IF ASC(MID(Text1, F, 1)) >= 48 AND ASC(MID(Text1, F, 1)) <=57 AND ASC(MID(Text1, F + 1, 1)) >= 65 AND ASC(MID(Text1, F + 1, 1)) <=90 THEN Text1 = LEFT(Text1, F) + " " + MID(Text1, F+1, LEN(Text1))

F = F + 1

IF F < LEN(Text1) THEN GOTO CheckCharacter

EndFunction:

SpaceNumberLetter = Text1 

End Function

然后您从文本框表达式中调用函数:

=CODE.SpaceNumberLetter("56EF78GH12AB34CD")

结果:enter image description here

我使用文本进行测试,但是您会使用您的字段。

答案 1 :(得分:1)

您可以使用下面的正则表达式(假设您的模式是数字字符)

= System.Text.RegularExpressions.Regex.Replace( Fields!txt.Value, "(\d)(\D)", "$1 $2")