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

Gus*_*nti 8 reporting-services

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

示例:

而不是打印:

姓名报告

Andrea
Austin
Barbara
Bob
Bruno
Cathy
Chis
...

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

姓名报告

Andrea ---- Bruno ---- Darren
Austin ---- Cathy ---- Francis
Barbara ---- Chis ---- Gabriel
Bob ---- David ---- Gerald
...... .---- ....... ---- .......

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

小智 13

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

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

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

这个有点复杂.

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

例如

结果集

RIndex Fname
1 abe
2 burt
3 fred
4 george
Run Code Online (Sandbox Code Playgroud)

过滤表达式

list 1 -> =Fields!RIndex.Value mod 3 = =1
list 2 -> =Fields!RIndex.Value mod 3 = =2
list 3 -> =Fields!RIndex.Value mod 3 = =0
Run Code Online (Sandbox Code Playgroud)

结果

Abe Burt Fred 
George 
Run Code Online (Sandbox Code Playgroud)


Val*_*ken 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;
Run Code Online (Sandbox Code Playgroud)

为了显示这个,我使用的是嵌套表,然后在DisplayColumn上进行过滤.

阅读以下文章了解所有细节:创建多列报告


Bo *_*erg 3

使用 Visual Studio 中的“报告”菜单并选择“报告属性”。您可以在“布局”选项卡中设置列。

请尝试这篇有关新闻稿样式报告的msdn 文章以了解更多详细信息:http://msdn.microsoft.com/en-us/library/ms159107.aspx

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

只有 PDF 和图像渲染器支持新闻通讯样式的报告。

编辑:因此一种方法是使用多个 tablix 和一个过滤器来检查 RowNumber 并相应地显示每个表中的特定记录。

另一种方式称为新闻通讯式报告 (链接)。仅当报表导出为 PDF 或图像时,才会保留此格式。仅当您在 Visual Studio 的“预览”选项卡上选择“打印布局”时才能预览它。这是一个例子:

  1. 使用以下命令创建一个新报告。数据集:SELECT ID,NAME FROM TABLENAME
  2. 将新表添加到报告中并选择 ID 和名称作为列
  3. 单击 Tablix 并按 F4 编辑 Tablix 属性。在属性窗口中,更改大小 - 将宽度设置为 2 英寸
  4. 单击报表页面边界外的报表区域,然后按 F4 编辑报表属性。在属性窗口中,将列值更改为 3,将列间距值更改为 0.1
  5. 在报告滚动到右侧时,您会注意到有 2 个新列(因此报告上总共有 3 列 - 因为您在上面的步骤 4 中选择了 3 列)。现在单击第 2 列开始处的边距,并将其进一步向左拉,使其尽可能接近第 1 列。这只是为了减少对大页面大小的需求。
  6. 右键单击报表页面边界外的报表区域,然后选择报表属性。更改页面大小 - 将宽度设置为 10 英寸
  7. 预览报告。现在选择“打印布局”选项卡以查看结果。仅当报表导出为 PDF 或图像时,才会保留此格式。

如第 5 点和第 6 点所述 - 由于报表正文流入多个列,因此您必须确保页面大小至少等于 -> ([原始报表正文大小乘以列数] + 所有列间距值)。不然会显得很乱。