Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql SSRS-有没有一种方法可以让一个表被分页符拆分,显示在同一页上?_Sql_Reporting Services_Grouping - Fatal编程技术网

Sql SSRS-有没有一种方法可以让一个表被分页符拆分,显示在同一页上?

Sql SSRS-有没有一种方法可以让一个表被分页符拆分,显示在同一页上?,sql,reporting-services,grouping,Sql,Reporting Services,Grouping,我正在使用MS report Builder 3.0创建报告。对于这个报告,我构建了一个存储过程,可以向下过滤到所需的特定行,然后使用行组对特定字段进行分组(pass_no)。显示的表是行组中的2列3行。我想要完成的基本描述是,我不希望行运行到下一页,而是希望行在同一页上以一组新的2列继续。把它想象成一份报纸,文本在一个新的专栏中继续,而不是跑到下一页 对于我将在这里使用的示例,SP返回了12行数据,pass_no列中有8个唯一值,这是我的行组的分组依据。因此,在报告中,我以8组3行结束。由于缺

我正在使用MS report Builder 3.0创建报告。对于这个报告,我构建了一个存储过程,可以向下过滤到所需的特定行,然后使用行组对特定字段进行分组(pass_no)。显示的表是行组中的2列3行。我想要完成的基本描述是,我不希望行运行到下一页,而是希望行在同一页上以一组新的2列继续。把它想象成一份报纸,文本在一个新的专栏中继续,而不是跑到下一页

对于我将在这里使用的示例,SP返回了12行数据,pass_no列中有8个唯一值,这是我的行组的分组依据。因此,在报告中,我以8组3行结束。由于缺乏更好的术语,我的目标是在开始一个新表之前让表显示6个pass_no值(因此6组3行)

我的第一种方法是创建一个列组,并将分组表达式设置为以下值:

=Floor((RowNumber(Nothing) - 1) / 6)
虽然这可用于创建一个包含2列的新集合,但新列的拆分基于SP返回的原始数据中的行数,而不是行组创建的行数。因此,因为返回了12行,第6行和第7行具有相同的pass_no值,所以第二组列复制了这1组数据。此外,第二列集合的前6行为空,第二组值显示在第一组值的下方

如果我添加一个额外的列组,其中它也按pass\u no进行分组,那么我不会得到重复的值,但是我也会为每个pass\u no获得一对列(这是预期的)。我尝试过稍微修改上面的表达式,并将
Nothing
更改为行组名,并尝试了表名,但两者都没有产生预期的结果

我无法更改SP在那里进行分组,因为还有其他不相同的列值,我使用
Join(LookupSet())
将这些数据拉入表中的单元格值表达式

我还考虑过创建2个表并对表应用过滤器,这样第一个表只显示前6个结果,第二个表显示其余结果,但这也会查看原始数据,而不是分组,并且
TOP N
不能用于pass\u no,因为它是文本值,而不是整数。这也会导致问题,如果我需要去3表

长话短说,有没有一种方法可以使表中断而不是分页符,或者将列溢出到同一页而不是新页上

以下是数据集的相关部分:


我认为你的数据有点问题

正如您已经了解的,对于这种设置,您通常会使用以下表达式设置行组:

=(RowNumber(Nothing) - 1) Mod 6
=Ceiling(RowNumber(Nothing) / 6)
=RunningValue(Fields!pass_no.Value, CountDistinct, "DataSet1")
和列组表达式,如:

=(RowNumber(Nothing) - 1) Mod 6
=Ceiling(RowNumber(Nothing) / 6)
=RunningValue(Fields!pass_no.Value, CountDistinct, "DataSet1")
这将创建一个六行tablix,可根据需要水平增长

类似的例子见问题SO

但是,您目前还需要按另一列进行分组,即在您的情况下,
pass\u no
。通常,您可以使用以下表达式来近似组级行号:

=(RowNumber(Nothing) - 1) Mod 6
=Ceiling(RowNumber(Nothing) / 6)
=RunningValue(Fields!pass_no.Value, CountDistinct, "DataSet1")
不幸的是,当您尝试将其添加到以下分组表达式之一时:

=Ceiling(RunningValue(Fields!pass_no.Value, CountDistinct, "DataSet1") / 6)
您将得到以下错误:

tablix“Tablix1”的组表达式包括聚合 函数RunningValue。RunningValue不能在组中使用 表情

基于所有这些,我的建议是尝试获取一个数据集,该数据集的每个
pass\u no
值有一行,并以此为基础,使用上述行/列分组表达式,即不需要对多个
pass\u no
行进行分组。因此,在您的示例中,它将有八行。然后,您可以拥有一个包含所有单独行的单独数据集,并使用
lookupset
函数连接
描述
,等等

您的另一个选择是尝试只获取一个数据集上的所有内容,包括所需的聚合。这可能是不可能的,但对于
description
来说,至少您可以利用各种技术中的任何一种来获得分隔列表。拥有此列表后,您可以使用
vbCrLf
替换分隔符,将其拆分为多行


所有这些都是一种冗长的说法,我不知道您的数据是否满足您的要求,但如果您考虑至少有一个数据集,每个
pass\u no
一行,您应该能够使其工作。

我认为您的数据有点问题

正如您已经了解的,对于这种设置,您通常会使用以下表达式设置行组:

=(RowNumber(Nothing) - 1) Mod 6
=Ceiling(RowNumber(Nothing) / 6)
=RunningValue(Fields!pass_no.Value, CountDistinct, "DataSet1")
和列组表达式,如:

=(RowNumber(Nothing) - 1) Mod 6
=Ceiling(RowNumber(Nothing) / 6)
=RunningValue(Fields!pass_no.Value, CountDistinct, "DataSet1")
这将创建一个六行tablix,可根据需要水平增长

类似的例子见问题SO

但是,您目前还需要按另一列进行分组,即在您的情况下,
pass\u no
。通常,您可以使用以下表达式来近似组级行号:

=(RowNumber(Nothing) - 1) Mod 6
=Ceiling(RowNumber(Nothing) / 6)
=RunningValue(Fields!pass_no.Value, CountDistinct, "DataSet1")
不幸的是,当您尝试将其添加到以下分组表达式之一时:

=Ceiling(RunningValue(Fields!pass_no.Value, CountDistinct, "DataSet1") / 6)
您将得到以下错误:

tablix“Tablix1”的组表达式包括聚合 函数RunningValue。RunningValue不能在组中使用 表情

基于所有这些,我的建议是尝试获取一个数据集,该数据集的每个
pass\u no
值有一行,并以此为基础,使用上述行/列分组表达式,即不需要对多个
pass\u no
行进行分组。因此,在您的示例中,它将有八行。然后,您可以拥有一个包含所有单独行的单独数据集,并使用
查找