我有一个SQL Reporting Services 2005报告,其中包含第一页上的表格。我在第一页上有足够的空间来显示列表中的前5个项目。如果有超过5个项目,我希望列表继续到报告第二页上的另一个表格。
我还希望表具有固定数量的行。例如,即使列表中不存在任何项,第一页上的表也始终显示5行。这样可以使边框仍然可见,这样页面布局就不会搞砸了。
有关最佳方法的任何想法吗?
答案 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