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

Crystal reports 如何从组中动态获取值,将其添加到数组中,然后在页脚中打印单个值?,crystal-reports,crystal-reports-2008,crystal-reports-2010,crystal-reports-2011,Crystal Reports,Crystal Reports 2008,Crystal Reports 2010,Crystal Reports 2011,我有一个报告文件,其中报告提供了关于“工作”的信息,所以这是一个“工作通知单”报告。在工作通知单中,有一个包含详细信息的组,该组提供了有关单个“组件”的信息,其中任何给定工作中都可以有1到6个组件。每个组件都应用了一个字段,该字段是一个字符串,是“ComponentType”({sp_JobTicket.ComponentType}) 我想做的是将ComponentType的每一行的值放入一个数组中,然后我可以在页脚中调用该数组(即,我可以创建一个文本对象,并在其中使用类似“TypeforCom

我有一个报告文件,其中报告提供了关于“工作”的信息,所以这是一个“工作通知单”报告。在工作通知单中,有一个包含详细信息的组,该组提供了有关单个“组件”的信息,其中任何给定工作中都可以有1到6个组件。每个组件都应用了一个字段,该字段是一个字符串,是“ComponentType”({sp_JobTicket.ComponentType})

我想做的是将ComponentType的每一行的值放入一个数组中,然后我可以在页脚中调用该数组(即,我可以创建一个文本对象,并在其中使用类似“TypeforComponent[3]”的内容调用一个值,因此,即使每个打印的页面只显示一个组件的完整细节,每个页面的页脚将提供所有组件及其类型的概览

现在,我们只需在打印的页面上手工编写所有组件的组件类型,但我们可以通过数据库访问组件类型,因此我们似乎应该能够将其打印到报表上

下面是打印的工作通知单报告的全页预览,该报告有4个部分(因此在页脚中只有1-4个部分有值,5-6为空),所有内容当前都已布置好,我们希望在其中放置内容:

问题很多,但假设此报告一次只针对一张工作通知单运行,则有一种可能性: 创建名为CT_数组的公式,并将其放置在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_阵列[1]替换为下一个阵列元素编号

将这些公式放在页脚中需要的地方

CT_Var2

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

等等。。。对于CT_Var3到6,看起来更简单、更直接的解决方案是不使用数组,而是创建子报表

为此,我创建了一个新报告,将其链接到我的工作通知单(main)报告使用的存储过程,并导入了所需的数据字段。然后,我继续更改子报表的页面大小,以适应页面上的大小(1.5“x 1”),在section expert中将Details部分设置为“Format with Multiple Columns”,这提供了一个新的“布局选项卡”,我输入并选择了“Format Groups with Multiple column[s]”然后我将其另存为一个文件,并将该报告作为子报告导入主报告。最后,我将子报表链接设置为链接到我的“JobNumber”字段,我的主票证将该字段用作参数,并将该字段设置为参数

已成功完成:

好的,我知道你的想法了。这是可能的。。你在哪里?嗨,谢谢你的回答!有些事情似乎不太正确,因为只有第一个变量(CT_Var1)起作用。后续操作会导致错误:“下标必须介于1和数组大小之间。”当我取消抑制包含CT_数组公式的GH1部分时,它在预览中显示“票证”只有1个值,应该有4个值(因为有4个组件)。提醒:报告按sp_JobTicket.ComponentNumber分组,但实际需要的值是sp_JobTicket.ComponentType。我编辑了答案。。。很抱歉。我忘了需要评估阵列的大小谢谢更新。这就阻止了错误的出现,但是后续的VAR似乎只想从第一个组件(“SM”)获取信息。其中,在这张票据上,预期的组件类型值为:1:SM、2:QM、3:QM、4:Note,即使更新了CT_Var2-4,它们都显示值“SM”。感谢回复CoSpingsGuy。由于您的解决方案似乎不想完全起作用,我继续研究各种选项,最终找到了子报表,因此使用子报表来完成我需要的任务。很高兴您找到了它。我完全打算回到这里来帮助你,但我昨天不知怎的找到了一份报告工作,所以一直忙着。