强制SQL Reporting Services 2005表显示一定数量的行

时间:2009-11-03 20:31:15

标签: c# reporting-services reportingservices-2005

我有一个SQL Reporting Services 2005报告,其中包含第一页上的表格。我在第一页上有足够的空间来显示列表中的前5个项目。如果有超过5个项目,我希望列表继续到报告第二页上的另一个表格。

我还希望表具有固定数量的行。例如,即使列表中不存在任何项,第一页上的表也始终显示5行。这样可以使边框仍然可见,这样页面布局就不会搞砸了。

有关最佳方法的任何想法吗?

4 个答案:

答案 0 :(得分:3)

我认为这最好在Query / Stored Proc中完成,它返回数据而不是SSRS。

你可以做这样的事情

SELECT TOP 5 FROM
(
    SELECT Top 5 *
    FROM DummyOrBlankDataFillerView
    UNION
    SELECT TOP 5 *, Row_Number() over (order by YourColumns) as OrderByClause 
    FROM ActualQueryThatBringsBackRecords
)
ORDER BY OrderByClause

OrderByClause按您的列排序,并且(1,2,3,4,5)和DummyOrBlankDataFillerView应该有一个您回来的列,其列中的值与(6,7, 8,9,10)。

然后,在order by和“前5”之间,你应该拥有你需要显示的东西。

答案 1 :(得分:2)

我认为没有一种简单的方法可以做到这一点。 AFAIK,SSRS在这里不会帮到你。您可以更改查询逻辑,以便在返回的实际行数为< false'时,使用多个“虚拟”行填充结果集。然而,这似乎是一个混乱的解决方案。

答案 2 :(得分:1)

可能不是您正在寻找的答案,但您可以限制查询或数据源第一个表绑定到5个项目或其他任何内容。然后第二个表将绑定到只包含其余项的查询或数据源。

我认为报告中没有办法用财产或类似的东西来做这件事。

答案 3 :(得分:1)

当没有空白数据时,您需要联合一些空白数据。

将计算行添加到名为rowcount的数据集中,例如

=rownumber("datasetname")

然后过滤第一个表以获取rowcount< 6