SQL Server Reporting Services - 禁止自由格式报告中的空行

时间:2013-02-05 12:16:42

标签: reporting-services reportingservices-2005

我有一个基于SQL Server Reporting Services中List控件的自由格式报表,基本上显示了公司的地址:

Company Name
Address 1
Address 2
ZipCode City

但是,我的某些公司记录没有Address2字段的值 - 在这种情况下,我想完全删除包含非{0}}的行(即Textbox) - 远程Address2数据 - 所以它应该类似于:

Company Name
Address 1
ZipCode City

我可以很好地设置报告中Hidden的{​​{1}}属性 - 但这只会导致文本框被隐藏 - 并且空白行显示Textbox用于是....我想压制那个空白行。 如何?!?!

我不在Tablix或类似内容中 - 它只是报表上的自由格式文本框。有没有机会让我做这些我没有付出巨大努力的事情?

3 个答案:

答案 0 :(得分:7)

将所有字段放在一行中,如果需要换行,请在每个字段前检查。

例如:

[Name1]«Expr»[Name2]«Expr»[Name3]
[Street]
[City]

使用表达式:

=Iif(Fields!Name2.Value="",Nothing,vbCRLF)
=Iif(Fields!Name3.Value="",Nothing,vbCRLF) 

答案 1 :(得分:3)

嗯,它可以做,有点,取决于你需要什么。这是一项巨大的努力吗?由您决定:

首先我创建了一个数据集。

select company = 'A'
, add1 = 'Add 1 A'
, add2 = 'Add 2 A'
, zip = '90210'
union all
select company = 'B'
, add1 = 'Add 1 B'
, add2 = null
, add3 = '12345'

接下来,创建列表并按公司对其进行分组。

enter image description here

在此列表中,为每个字段添加一行。在每个行中添加矩形,然后使用字段详细信息添加文本框。由于我们有,我们可以根据表达式隐藏行,并且因为每行中都有矩形,我们可以移动 Texbox 根据要求:

enter image description here

在第二个地址行中,根据表达式设置行可见性:

=IIf(IsNothing(Fields!add2.Value), true, false)

最终结果:

enter image description here

您可以根据需要移动字段。这不是完美而且有点繁琐,但至少这会给你更多的灵活性,如果它不是100%合适的话,你可能想知道如何进行。

答案 2 :(得分:0)

将此表达式放在我的文本框中。 (允许您在同一文本框中包含其前后的所有其他地址字段。)超级简单!

= iif(Fields!Street2.Value什么都没有,Fields!Street1.Value,Fields!Street1.Value + vbCRLF + Fields!Street2.Value)