0

私の応答では、2 行が「.」とは異なります。したがって、印刷され、「myCounter」をインクリメントする必要があります。
しかし、両方のプリントアウトで、myCounter のように 1 はインクリメントされません...

function R_G_cnFormatTrigger return boolean is
myCounter number :=0;
begin
  -- Automatically Generated from Reports Builder.
  if (mod(myCounter,2) = 0)
  then
    srw.set_foreground_fill_color('gray8');
    srw.set_fill_pattern('solid');
  else
    srw.set_foreground_fill_color('');
    srw.set_fill_pattern('transparant');
  end if;
 if(:CP_WAYBILL_NO <> '.')
    then
        myCounter:=(myCounter+1);
        srw.message(123,'myCounter:'||myCounter);
        return true;
    else
        return false;
 end if;
end;
4

1 に答える 1

1

印刷myCounterすると、常に等しい1ですよね?これは、あなたreturn true;が の最後にいるためですif(:CP_WAYBILL_NO <> '.')

関数内で使用するreturnと、実行が中断されます。myCounterはローカル変数なので、その値は記憶されていません。

グローバル変数としてパッケージを作成するか、一時テーブルからmyCounter読み書きすることができます。myCounter

于 2013-01-03T13:21:47.013 に答える