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

时间:2015-04-07 00:53:54

标签: crystal-reports crystal-reports-2008 crystal-reports-2010 crystal-reports-2011

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

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

就像现在一样,我们只是手工编写打印页面本身所有组件的组件类型,但是我们可以通过数据库访问ComponentType,所以看起来我们应该可以让它在报告。

ComponentType List Printed in the Page Footer

以下是打印的作业单报告的完整页面预览,其中包含4个组件(因此在页面页脚中,只有1-4将具有值,5-6为空),并且当前所有内容都已布置,以及我们希望放置东西的地方: Full Report Preview

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

Subreport

我通过创建一个新报告,将其链接到我的作业单(主要)报告使用的存储过程来完成此操作,并导入了我需要的数据字段。然后我继续更改子报表的页面大小以适应页面上的大小(1.5“x 1”),在“专家”部分中将“详细信息”部分设置为“使用多列格式化”,这使新的“布局”选项卡可用“我输入并选择了”具有多列[s]的格式组“。然后我将其保存为单独的文件,并将该报告作为子报告导入到我的主报告中。最后,我将子报表链接设置为链接到我的“JobNumber”字段,我的主票据用作参数,而Field用作参数。

Setting Subreport Links

成功完成: Completed Successful Report