SSRS 2008 R2回车问题

时间:2011-06-20 18:25:24

标签: sql-server reporting-services carriage-return

我有一个包含Name,Address和ZipCode字段的简单文本框的报告。这些字段在预览时工作正常,但是当我将它们放在块格式中时:

Name
Address
Zipcode

我得到双倍间距的文字。一位朋友向我展示了一个小技巧,将所有字段放在一行而不是点击返回我点击Shift + Return。这有效,但只适用于一行。换句话说,我得到了这个结果:

Name
Address

ZipCode

Etc.

我确信这是一个微不足道的问题,有经验的用户可以在一秒钟内解决。不幸的是,我没有经验。那么,有人有解决方法吗?

3 个答案:

答案 0 :(得分:13)

我正在使用此数据集:

select 'Mr2Bool' as Name,
'1 TrueStreet' as Address1,
 NULL as Address2,
'NewTrueshire' as Address3,
'1010101' as ZipCode

并使用以下表达式放入文本框:

= First(Fields!Name.Value, "DataSet1") & VBCRLF &
First(Fields!Address1.Value, "DataSet1") & VBCRLF &
IIF(First(Fields!Address2.Value, "DataSet1") Is Nothing, "", First(Fields!Address2.Value, "DataSet1")  & VBCRLF) &
IIF(First(Fields!Address3.Value, "DataSet1") Is Nothing, "", First(Fields!Address3.Value, "DataSet1")  & VBCRLF) &
First(Fields!ZipCode.Value, "DataSet1")

给出以下输出:

Preview of Address rendered in Visual Studio

VBCRLF代表“Visual Basic回车换行”,并给出一个新行。如果字段为空,则不添加新行,因此您不会在地址中获得任何中断。

您必须决定哪些字段可以为空。我假设Name,Address1和ZipCode不能为空,但也许你设置不同的东西。

答案 1 :(得分:1)

这是邮件标签的一些代码,希望以后可以帮助别人。

=IIf(IsNothing(Fields!WholeName.Value), "", Fields!WholeName.Value) & vbCRLF & 
IIf(IsNothing(Fields!Address1.Value), "", Fields!Address1.Value) & vbCRLF & 
IIf(IsNothing(Fields!Address2.Value), "", Fields!Address2.Value) & vbCRLF & 
IIf(IsNothing(Fields!City.Value), "", Fields!City.Value) & ", " & 
IIf(IsNothing(Fields!State.Value), "", Fields!State.Value) & " " & 
IIf(IsNothing(Fields!Zip.Value), "", Fields!Zip.Value)

答案 2 :(得分:1)

这是一个小小的补充:

您可以在报告的SQL中执行此操作:    

SELECT Postalcode + ' ' + City + ', ' + Country as pccString FROM ....

并在报告的文本框中

=First(Fields!pccString.Value).Replace(",", VbCrLf)