SSRS 2008 R2 回车问题

7
我有一个报告,其中有一个简单的文本框,包含姓名、地址和邮政编码字段。预览时这些字段都能正常工作,但当我把它们放在块状格式中时:
Name
Address
Zipcode

我得到了双倍行距的文本。一个朋友给我展示了一个小技巧,将所有字段放在一行上,而不是按回车键,我按Shift + Return键。这个方法行得通,但只适用于一行。换句话说,我得到了这样的结果:
Name
Address

ZipCode

Etc.

我相信这是一个有经验的用户可以在一秒钟内解决的琐碎问题。不幸的是,我没有经验。所以,有人有解决方法吗?

干得好!好的,这应该有助于获得答案。实际上我有三个地址行。我正在使用的示例仅使用其中一个地址行,因此其他两个地址行未被使用并显示为空字段。如果该字段的值为null,是否有一种方法可以抑制该字段? - 2boolORNOT2bool
3个回答

14

我正在使用这个数据集:

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")

以下是输出结果:

在Visual Studio中呈现的Address的预览

VBCRLF代表“Visual Basic回车换行”,可以产生一个新行。如果字段为空,则不会添加新行,因此地址中不会出现任何断点。

您需要决定哪些字段可以为空。我假设姓名、地址1和邮政编码不能为空,但也许您设置了不同的内容。


非常好!我慢慢发现VB在SSRS中被使用,而我没有VB的背景。我很感激你的帮助! - 2boolORNOT2bool
我也在学习Visual Basic。以下网站非常有用:http://msdn.microsoft.com/en-us/library/ms157328.aspx - Fillet

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)

1
这里有一个小的补充:
您可以在报表的SQL中执行以下操作:
SELECT Postalcode + ' ' + City + ', ' + Country as pccString FROM ....
并在报表的文本框中执行以下操作:
=First(Fields!pccString.Value).Replace(",", VbCrLf)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接