我正在使用 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 值,所以第二组列复制了那组数据。此外,第二列集的前 6 行为空白,第二组值显示在第一组下方。
如果我添加一个额外的列组,它也按 pass_no 分组,那么我不会得到重复的值,但我确实得到了每个 pass_no 的一对列(正如预期的那样)。我尝试稍微修改上面的表达式并更改Nothing
为行组名称并尝试了表名称,但它们都没有产生预期的结果。
我无法更改 SP 以在那里进行分组,因为还有其他列值不相同,我使用Join(LookupSet())
.
我还考虑过创建 2 个表并对表应用过滤器,因此第一个表只显示前 6 个结果,第二个表显示剩余的结果,但这也查看原始数据而不是分组并且TOP N
不能在 pass_no 上使用,因为它是文本值,而不是整数。如果我需要去 3 张桌子,这也会导致问题。
长话短说,有没有办法进行表格中断而不是分页符,或者将列溢出到同一页面而不是新页面?
这是数据集的相关部分:
http://sqlfiddle.com/#!2/5082b/1
PASS_NO MASTERTRAN TRANS_NO DESCRIPTION IS_MOD
7913019000 4931019000 4931019000 General Admission Adult 0
7914019000 4932019000 4932019000 Sea Turtle Hosp Adult 0
7914019000 4932019000 4933019000 2:00 PM SEA TURTLE HOSP 1
7916019000 4934019000 4934019000 Sea Turtle Hosp Child 0
7916019000 4934019000 4935019000 2:00 PM SEA TURTLE HOSP 1
7917019000 4934019000 4934019000 Sea Turtle Hosp Child 0
7917019000 4934019000 4935019000 2:00 PM SEA TURTLE HOSP 1
7918019000 4934019000 4934019000 Sea Turtle Hosp Child 0
7918019000 4934019000 4935019000 2:00 PM SEA TURTLE HOSP 1
7922019000 4936019000 4936019000 General Admission Child 0
7923019000 4936019000 4936019000 General Admission Child 0
7924019000 4936019000 4936019000 General Admission Child 0