我有一个基于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或类似内容中 - 它只是报表上的自由格式文本框。有没有机会让我做这些我没有付出巨大努力的事情?
答案 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'
接下来,创建列表并按公司对其进行分组。
在此列表中,为每个字段添加一行表。在每个行中添加矩形,然后使用字段详细信息添加文本框。由于我们有表,我们可以根据表达式隐藏行,并且因为每行中都有矩形,我们可以移动 Texbox 根据要求:
在第二个地址行中,根据表达式设置行可见性:
=IIf(IsNothing(Fields!add2.Value), true, false)
最终结果:
您可以根据需要移动字段。这不是完美而且有点繁琐,但至少这会给你更多的灵活性,如果它不是100%合适的话,你可能想知道如何进行。
答案 2 :(得分:0)
将此表达式放在我的文本框中。 (允许您在同一文本框中包含其前后的所有其他地址字段。)超级简单!
= iif(Fields!Street2.Value什么都没有,Fields!Street1.Value,Fields!Street1.Value + vbCRLF + Fields!Street2.Value)