首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SSRS -如何构建一个简单的多列报告?

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

Stack Overflow用户
提问于 2009-06-18 20:45:18
回答 3查看 50.3K关注 0票数 8

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

示例:

而不是印刷:

姓名报告

安德里亚

奥斯汀

芭芭拉

鲍勃

布鲁诺

凯茜

吉斯

..。

我想在列(例如3列固定栏)中打印:

姓名报告

安德里亚--布鲁诺--达伦

奥斯汀,凯茜,弗朗西斯

芭芭拉,吉斯,加布里埃尔

鲍勃--大卫--杰拉尔德

.-.-.

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-06-18 21:17:52

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

请尝试这篇关于时事通讯样式报告的msdn文章,以获得更多详细信息:http://msdn.microsoft.com/en-us/library/ms159107.aspx

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

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

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

另一种方式称为“通讯式报告”( (链接) )。只有当报表导出为PDF或Image时,才保留此格式。只有在Visual中的预览选项卡上选择“打印布局”时,才能预览。下面是一个示例:

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

正如在第5和第6点中所指出的,由于报表正文流成多个列,您必须确保页面大小至少等于-> (原始报表体大小乘以列数+所有列间距值)。否则它会看起来很乱。

票数 3
EN

Stack Overflow用户

发布于 2011-03-22 18:49:13

标签的横向布局..。

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

一种选择是在每3行上使用矩阵和组(如果需要3列的话)。

这个有点复杂。

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

例如

结果集

代码语言:javascript
运行
复制
RIndex Fname
1 abe
2 burt
3 fred
4 george

滤波表达式

代码语言:javascript
运行
复制
list 1 -> =Fields!RIndex.Value mod 3 = =1
list 2 -> =Fields!RIndex.Value mod 3 = =2
list 3 -> =Fields!RIndex.Value mod 3 = =0

结果

代码语言:javascript
运行
复制
Abe Burt Fred 
George 
票数 14
EN

Stack Overflow用户

发布于 2013-06-06 06:23:43

我使用的方法有点类似于Vern的建议,但差别很大,值得在这里提及。

您可以在查询中将ROW_NUMBER与模(%)运算符直接组合,以生成应该显示记录的列号。下面是一个在考虑组的同时生成一个的示例:

代码语言:javascript
运行
复制
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上进行过滤。

有关所有细节,请阅读以下文章:创建多列报表

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1015098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档