1

我正在研究一个基本上看起来像这样的数据库(以最简单的形式):

{阶段} {代码} {数量}

例子:

{Phase}="R" 和 {Code}="Nat" = 0 的 {Qty}

{Phase}="F" 和 {Code}="Nat" = 5 的 {Qty}

{Phase}="R" 和 {Code}="Int" = 10 的 {Qty}

{Phase}="F" 和 {Code}="Int" = 15 的 {Qty}

我试图得到一个结果来显示阶段“R”和代码“Nat”(其中 R <> 0)的数量,否则给我阶段“F”的数量。所以对于上面的例子,我会得到 Nat 的答案 = 5(因为 R 阶段的数量为 0)和代码为 Int 的 10 的答案(因为 R 阶段的数量 <> 0)

我使用了三个公式字段来执行此操作:

1:如果 ({PHASE}="F" 和 {CODE}="NAT") 则 {QTY} 否则 0

2: if ({PHASE}="R" and {Code}="NAT") 然后 {QTY} else 0

3:如果 {2} = 0 则 {1} 否则 {2}

公式字段 1 和 2 得出正确的金额。但是,公式字段 {3} 返回两个阶段。例如,代码“Int”阶段“R”显示为 qty = 25 而不是 qty = 10。

我该如何解决这个问题?

4

1 回答 1

0
  1. 您需要按 {table.code} 分组,因为这不是单行计算,而是需要对 2+ 个阶段(即 2+ 行数据)的每个代码进行计算。

  2. 创建一个包含两个变量的公式,用于存储每个阶段的值 F 和 R。这个公式需要放在报告的详细信息部分。

    whileprintingrecords;
    numbervar Fqty;
    numbervar Rqty;
    
    if {table.phase}="F" then Fqty:={table.qty}
    else Rqty:={table.qty};
  3. 现在,在组页脚中,您可以通过变量引用这两个数量值。

    whileprintingrecords;
    numbervar Fqty;
    numbervar Rqty;
    
    if Fqty=0 then Rqty else Fqty

你完成了。不要忘记重置组标题中的两个变量,这样您就不会在不同代码之间传递数量。

于 2013-01-20T19:28:42.303 回答