我正在使用报告生成器来生成字母。我想要做的是有一列值,但是当它到达页面的末尾时,我希望它溢出到第一列右边的新列,而不是创建新页面。或者,如果在创建新行之前在多个列中填充数据,它将起作用。
这是可能的吗?
答案 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)
那就是它!