报表生成器创建新列而不是页面

时间:2013-02-01 15:21:55

标签: sql reportbuilder

我正在使用报告生成器来生成字母。我想要做的是有一列值,但是当它到达页面的末尾时,我希望它溢出到第一列右边的新列,而不是创建新页面。或者,如果在创建新行之前在多个列中填充数据,它将起作用。

这是可能的吗?

2 个答案:

答案 0 :(得分:1)

您必须从sql存储过程区域找到解决方法,因为SSRS中的Tablix基于检索到的数据集,这不是报表构建器中的功能或解决方法。

我建议您尝试创建一个存储过程,对您执行此操作以设置一个或多个列,并针对设置的行数进行测试。这必须是你的sql平台。

祝你好运我爱你的要求和问题!

答案 1 :(得分:1)

我会去解决方法: 基本上,解决方案是定义查询以在列中显示数据(例如,列A - 值1-60,列B - 值61-120 ......)。

然后,您可以将每个列定义为不同的数据集。

在SSRS中,您可以定义表的数量(每个表只包含一列)并将它们放在一起。 (使用表可见性隐藏null表)

让我们开始吧:

首先,你需要知道有多少行适合一页(对于这个例子,可以说是60)。

接下来,你需要知道你可以拥有的最大值(对于这个例子,可以说是180)。

根据以下内容定义您的查询:

WITH NumberedMyTable AS
(
    SELECT
        Id,
        Value,
        ROW_NUMBER() OVER (ORDER BY Id) AS RowNumber
    FROM
        MyTable
)
SELECT
    Id,
    Value
FROM
    NumberedMyTable
WHERE
    RowNumber BETWEEN @From AND @To

对每一列重复此查询(对于此示例,您需要将此查询定义3次)。

然后定义3个表 - 每个表一列,并相应地将每个数据集定义为它们的值。

定义tablix可见性表达式,如下所示: =IIf(CountRows("MyDataset") = 0,false,true)

那就是它!