1

このように挿入した後、OracleフォームのテーブルにAブロックの値を挿入しようとしています

GO_BLOCK ('LCL_SP_DTL');
   LAST_RECORD;
   LV_N_LAST_REC := :SYSTEM.TRIGGER_RECORD;
   FIRST_RECORD;
   LV_N_FST_REC := :SYSTEM.TRIGGER_RECORD;

   FOR I IN LV_N_FST_REC .. LV_N_LAST_REC
   LOOP
      INSERT INTO LEDGER(LDATE, LTYPE, DESCRIPTION, DEBIT, CREDIT, SID,VID)
           VALUES (:LCLSP_MST.REC_DATE, 'Local Sale', DES, 0, AMOUNT, LS_ID,'LS-' || :LCLSP_MST.REC_ID);
      NEXT_RECORD;
   END LOOP;

しかし、それは私にエラーが正しく機能していないことを示しています.PlzはLEDGER、実行時に値を挿入するための提案をしてください

4

1 に答える 1

2

を使用して:SYSTEM.TRIGGER_RECORDいます。これは、コードが作成されたレコード番号です。別のレコードに移動したからといって、変更されるわけではありません。つまり、LV_N_LAST_RECLV_N_FST_RECは同じ値に設定されます。

使用できる:SYSTEM.CURRENT_RECORD思いますが、より良い解決策は、従来のフォーム レコード ループです。

GO_BLOCK ('LCL_SP_DTL');
FIRST_RECORD;
LOOP
  INSERT INTO LEDGER(LDATE, LTYPE, DESCRIPTION, DEBIT, CREDIT, SID,VID)
       VALUES (:LCLSP_MST.REC_DATE, 'Local Sale', DES, 0, AMOUNT, LS_ID
              ,'LS-' || :LCLSP_MST.REC_ID);
  EXIT WHEN :SYSTEM.LAST_RECORD = 'TRUE';
  NEXT_RECORD;
END LOOP;
于 2013-05-07T08:34:22.720 に答える