0

我创建了一个水晶报表,它根据订单号对产品进行分组。

我创建了一个公式,它根据每个产品上名为“差异”的字段是否等于 0 来显示文本“部分完成”或“完全完成”。如果“差异”为 0,则显示“完全完成”,反之亦然。

我需要做的是显示整个订单号的相应消息(即,如果订单的任何产品有差异!= 0,则显示“部分完成”。如果所有产品都有差异 == 0订单然后显示“完全完成”。

这是我到目前为止尝试的代码:

StringVar ouputText;

if {AD_999_SB_Fulfillment__Summary.FulfillmentPicking.Difference} = 0 then
    ouputText := 'Full'
else
    ouputText := 'Partial';

ouputText;

我假设我需要某种for循环来遍历订单的所有产品并检查是否有任何订单有差异!= 0,然后根据所有产品是否有差异更新消息= = 0 或其中一个产品通过有差异!= 0 来打破条件。

4

1 回答 1

1

循环是一个冗长的过程,而不是您根据“订单”对报告进行分组,然后将产品放在详细部分。这将自动循环订单中的整个产品。

  1. 创建名称重置的公式并将其放在组标题中。代码如下。

    共享 stringVar 数组 y;

    y:=" ";
    
    join(y);
    
  2. 创建一个公式并将其放在详细信息部分。这将获取结果并将其存储在数组中以备将来使用。使用下面的代码。

StringVar 输出文本;

共享 stringVar 数组 y;

如果 {AD_999_SB_Fulfillment__Summary.FulfillmentPicking.Difference} = 0 那么 y:= y+'Full' else y:= y+'Partial';

if {AD_999_SB_Fulfillment__Summary.FulfillmentPicking.Difference} = 0 then
    ouputText := 'Full'
else
    ouputText := 'Partial';

ouputText;
  1. 在组页脚中创建另一个公式以显示结果是完整还是部分订单。

    共享 stringVar 数组 y;

    if "Partial" in y Then "partial" else "Full";

于 2013-08-07T06:17:13.127 回答