如何动态地从组中获取值,将其添加到数组,然后在页脚中打印单个值?

How does one dynamically take values from a Group, add it to an Array, and then print individual values in the Page Footer?

我有一个报告文件,其中报告提供了有关 "Job" 的信息 - 所以这是一份 "Job Ticket" 报告。在工作单中,有一个包含详细信息的组,提供有关个人 "Components" 的信息,在任何给定的工作中,可以有从 1 个组件到 6 个组件的任何地方。每个组件都有一个字段,它是一个字符串,是 "ComponentType" ({sp_JobTicket.ComponentType}).

我想做的是将 ComponentType 的每一行的值放入一个数组中,然后我可以在页脚中调用它(即,这样我就可以创建一个文本对象并在其中调用一个值使用类似于 "TypeforComponent[3]"),所以即使每个打印页面只会显示一个组件的完整详细信息,每个页面的页脚都会提供所有组件及其类型的概览视图。

现在,我们只是在打印页面上手写所有组件的组件类型,但是我们可以通过数据库访问 ComponentType,所以看起来我们应该能够打印出来关于报告。

这里是打印的工作单报告的整页预览,它有 4 个组成部分(因此在页脚中只有 1-4 有值,5-6 是空的),以及当前所有内容所在的位置出去,我们希望把东西放在哪里:

很多问题,但假设此报告是 运行 一次仅针对 1 个工作单,这是一种可能性: 创建名为 CT_Array 的公式并将其放入 header1 部分并禁止显示:

WhileReadingRecords;
stringvar array CT_Array ;
stringvar output := "";
numbervar i := ubound(CT_Array)+1;
redim preserve CT_Array[i];
CT_Array[i] := {sp_JobTicket.ComponentType};

然后创建6个公式(CT_Var1到CT_Var6)如下:

WhileReadingRecords;
stringvar array CT_Array ;
CT_Array[1]

用下一个数组元素编号替换CT_Array[1]

将这些公式放在页脚中需要的位置。

CT_Var2

WhileReadingRecords; stringvar array CT_Array ; 
if ubound(CT_Array) >
1 then CT_Array[2] else ""

等... CT_Var3 到 6

所以看起来我的问题更简单直接的解决方案是不使用数组,而是创建一个子报表。

我通过创建一个新报表来完成此操作,link将其编辑到我的工作单(主)报表使用的存储过程,并导入我需要的数据字段。然后,我继续更改子报表的页面大小以适合页面大小 (1.5" x 1"),在专家部分中将详细信息部分设置为 "Format with Multiple Columns",从而提供新的 "Layout Tab" 我输入并选择了 "Format Groups with multiple column[s]." 然后我将其另存为一个单独的文件并将该报告作为子报告导入到我的主报告中。最后,我将子报告链接设置为 link 到我的 "JobNumber" 字段,我的主票将其用作参数,并将该字段设置为参数。

成功完成: