안뇽~~~~.
환경 : delphi4 , oracle 8i
질문사항 : insert는 잘되는데...
           update 와 delete가 않됩니다.
           ( Table is read onIy ) 라는 error message가 출력 됩니다.
           아래 내용을 보시고 좋은 답변 부탁 합니다.
           참고 : query의 RequestLive := true
====  해당하는 SOURCE =====
   with  Q_CODE01 do begin
     F_DM.db1.StartTransaction;
     COMMIT_SW  := '';
     IF  LOCATE('CODE;DATE1',VARARRAYOF([E_CODE.TEXT,E_DATE1.TEXT]),[]) THEN BEGIN
         DB_UPDATE   // 갱신
     ELSE 
         DB_INSERT;  // 추가
     IF  COMMIT_SW = 'ERR' THEN
         SHOWMESSAGE(' 정상적으로 저장되지 않았습니다'+#13+#13+
                     ' 입력한 내용을 확인 하세요!!!!!');
               ~~~~~~~ 
procedure TF_SMCODE01.DB_MOVE;
begin
   with  Q_CODE01 do begin
     ParambyName('FD1').AsString  := E_CODE.TEXT;
     ParambyName('FD2').AsString  := E_DATE1.Text;
     ParambyName('FD3').AsInteger := FloatToInteger(E_AMT1.VALUE);
     ParambyName('FD4').AsInteger := FloatToInteger(E_AMT2.VALUE);
   END;
END;
//  추  가
procedure TF_SMCODE01.DB_INSERT;
begin
   with  Q_CODE01 do begin
     CLOSE;
     SQL.Clear;
     SQL.ADD('Insert InTo T_CODE01 CODE,DATE1,AMT1,AMT2) Values');
     SQL.ADD('(:FD1,:FD2,:FD3,:FD4)');
     DB_MOVE;  //  자료를 query 에
     try
       ExecSQL;
       F_DM.DB1.Commit;           // ExecSQL이 에러나면 처리하지않게됨
     except
       COMMIT_SW := 'ERR';
       F_DM.DB1.Rollback;         // ExecSQL시 에러가 났을 경우만 처리함
     end;
   end;
end;
//  갱  신
procedure TF_SMCODE01.DB_UPDATE;
begin
   with  Q_CODE01 do begin
     CLOSE;
     SQL.Clear;
     SQL.Add('Update T_CODE01 Set ');
     SQL.Add('AMT1   = :FD3,');
     SQL.Add('AMT2   = :FD4,');
     SQL.Add('WHERE CODE  = :FD1');
     SQL.Add(' AND  DATE1 = :FD2');
     Prepare;
     DB_MOVE;  //  자료를 query에...
     try
       ExecSQL;
       F_DM.DB1.Commit;           // ExecSQL이 에러나면 처리하지않게됨
     except
       COMMIT_SW := 'ERR';
       F_DM.DB1.Rollback;         // ExecSQL시 에러가 났을 경우만 처리함
     end;
   END; 
end;