如何在ssrs的字段列中的文本中对齐每个字符串

时间:2014-01-10 12:24:42

标签: reporting-services ssrs-2008 reportingservices-2005 ssrs-tablix ssrs-grouping

我在ssrs的列字段中有这样的字段。

QUINIDINEssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss GL INJ 80MG / ML FLECAINIDEssssssssssssssssssssssssssssssssssssss TAB 50MG TAMBOCORssssssssssssssssssssssssssssssssssssssssssssssssss TAB 50MG

我怎么能像这样对齐...

QUINIDINEssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss GL INJ 80MG / ML FLECAINIDEssssssssssssssssssssssssssssssssssssss(emptyspaceeeeeeeee)TAB 50MG TAMBOCORssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss(50)TAB 50MG

字符串的每个部分都正确对齐......

任何帮助......

2 个答案:

答案 0 :(得分:1)

我曾使用Switch向列字段追加空格,如下例所示:

=Switch(LEN(Fields!FamilyMemberName.Value) = 1, " ",
LEN(Fields!FamilyMemberName.Value) = 2, "  ",
LEN(Fields!FamilyMemberName.Value) = 3, "   ")

但是我不必为表达变得更长而烦恼,因为我确切地知道我应该追加多少空格而且不超过15个。

您也可以在案例中使用Switch,或者您可以在Code窗口的Report Properties标签中编写VB函数并传递值,使用一些循环来生成空格需要。

或者在MS SQL中更容易,你所要做的就是将SPACE(NoOfSpacesInInteger)追加到该字段。

答案 1 :(得分:1)

嗯,我有两种方法可以做到这一点,而且都不是特别优雅,所以如果有人没有更好的解决方案,我会感到惊讶。

下面代码中的“t.a”是您的表格和列。

SQL方式:

SUBSTRING(t.a,1,CHARINDEX('  ',t.a,1))+REPLICATE('_',20)+REVERSE(SUBSTRING(REVERSE(t.a),1,CHARINDEX('  ',REVERSE(t.a),1)))

将上面复制的值从“”更改为“”并且您正在营业。我把它留作''来说明它在做什么。

SSRS方式,从数据库角度来看更好:

=Mid(Fields!a.Value,1,InStr(Fields!a.Value,"  "))+StrDup(20,"_")+StrReverse(Mid(StrReverse(Fields!a.Value),1,InStr(StrReverse(Fields!a.Value),"  ")))

这是完全相同的公式,由SSRS而不是SQL Server执行。