格式化第二页详细信息

时间:2012-03-16 16:38:57

标签: crystal-reports

这是我过去设法提出半解决方案的问题,但我认为其他人可能会更清楚。

我在 Crystal Reports 10 中有一个报告,用作生产区域的订单摘要表单。我们有标准产品,每个代码只有一个项目,然后我们有工具包。套件将包含一个主要项目和一个辅助项目,这两个项目在本摘要中都需要自己的页面,因为它们会转到不同的区域。

为了实现这一点,我从报告中获取了正常的详细信息区域并制作了每个部分的副本。第二组详细信息部分仅显示记录何时包含工具包,并强制在其前面添加新页面。对于普通观察者来说,这使得它看起来好像订单上有两个单独的项目,而实际上只有一个。

在我的页面标题中,有一个标记只需要在这些辅助页面上显示。我的问题是这些第二页没有特殊的属性,它们将它们与记录的第一页区分开来。为了实现这种格式化,我创建了一个有效的公式,但它并不适用于所有可能的配置。

公式为:

(PageNumber = 2
or ({%kit count} = 1 and (PageNumber - 1) = RecordNumber)
or ({%kit count} > 1 and (PageNumber -2) = RecordNumber)) then false

%kit count只是一个公式,可以在报告中获得套件代码的总计数。

目前这仅适用于少数特定情况。我确信在我可以使用的可用值中存在某种模式,但我只是没有看到它。

我需要能够在套件的每个第二页上触发此公式。我怎么能做到这一点?

编辑:截图请求。 (支持你自己)

[Screenshot 1]

(原件http://cl.ly/392f033Y131e3r0l100V

[Screenshot 2]

(原件http://cl.ly/2x1D0t0W0S0j0F0h0S28

1 个答案:

答案 0 :(得分:1)

如果没有讨论,很难完全理解你想要做的事情。以下是我认为你想用一些组成数据做的解决方案:

OrderNo    Line    Kit    Rush
1          1       a      0
1          1       b      0
1          2       NULL   0
1          3       NULL   1
1          4       NULL   1

我根据公式创建一个组(假装OrderNo和Line是varchar,所以我不需要强制转换:)。

if {Rush} = 1 then
 {OrderNo} & '-Rush'
else if isnull({Kit}) then
 {OrderNo} & '-' & {Line}
else
 {OrderNo} & '-' & {Line} & '-' & {Kit}

然后在组标题中,我将您当前拥有的所有内容放入页眉并启用Repeat Group Header on each Page.

然后最终把我的细节放进去。