SSRS - 如何构建简单的多列报告?

时间:2009-06-18 20:45:18

标签: reporting-services

我是SSRS的新手,请原谅我的新手。我正在使用 Sql Server 2008 ,我想在报告的多列中显示一个表中的单个字段。就像我打印标签一样。我怎样才能做到这一点?

例:

而不是印刷:

姓名报告

安德烈
奥斯汀
芭芭拉
鲍勃
布鲁诺
凯茜
CHIS
...

我想打印列(比如3个固定列):

姓名报告

安德里亚----布鲁诺----达伦朗 奥斯汀----凯茜----弗朗西斯 芭芭拉---- Chis ---- Gabriel
鲍勃----大卫----杰拉尔德 ....... ---- ....... ---- .......

编辑:如果我运行报告并点击“打印布局”按钮,我可以看到多个列。我可以将此模式设置为默认模式吗?

3 个答案:

答案 0 :(得分:13)

对于标签的水平布局......

一种选择是在报表或正文元素上使用columns属性。 这并不总是正确显示在reportviewer上。我注意到即使它在您的IDE上正确显示以及导出为PDF时也是如此。在报告查看器中,它只显示一列。此外,它从上到下依次蜿蜒标签,然后从左到右。

一种选择是每3行使用一个矩阵和组(如果你想要3列)。

这个有点复杂。

我选择的解决方案是在页面上放置3个垂直列表。在每个列表中放置相同的标签。返回数据集中的行号。然后只需过滤模3上的每个列表

例如

结果集

RIndex Fname
1 abe
2 burt
3 fred
4 george

过滤表达式

list 1 -> =Fields!RIndex.Value mod 3 = =1
list 2 -> =Fields!RIndex.Value mod 3 = =2
list 3 -> =Fields!RIndex.Value mod 3 = =0

结果

Abe Burt Fred 
George 

答案 1 :(得分:6)

我使用的方法与Vern建议的方法有点相似但差别很大,值得一提。

您可以直接在查询中将ROW_NUMBER与模数(%)运算符组合在一起,以构建应显示记录的列号。这是一个在考虑群组的情况下生成一个的示例:

declare @numberOfColumns int = 4;

select dpc.EnglishProductCategoryName, dp.ProductAlternateKey
    , (ROW_NUMBER() OVER (
        PARTITION BY dpc.EnglishProductCategoryName
        ORDER BY dp.ProductAlternateKey) + @numberOfColumns - 1) % @numberOfColumns + 1
    as DisplayColumn
from dbo.DimProduct dp
inner join dbo.DimProductSubcategory dps on dps.ProductSubcategoryKey = dp.ProductSubcategoryKey
inner join dbo.DimProductCategory dpc on dpc.ProductCategoryKey = dps.ProductCategoryKey;

为了显示这个,我使用嵌套表,然后在DisplayColumn上过滤。

阅读以下文章了解所有详细信息:Creating Multiple-Column Reports

答案 2 :(得分:3)

使用Visual Studio中的“报告”菜单,然后选择“报告属性”。您可以在“布局”标签中设置列。

有关详细信息,请参阅此有关简报式报告的msdn文章:http://msdn.microsoft.com/en-us/library/ms159107.aspx

此方法确实存在局限性,但在某些情况下可能不适用:

  

仅支持PDF和图像渲染器   时事通讯报道。