Q&A

  • update 안됩니다.. 좀 봐주세요.
안뇽~~~~.



환경 : 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;

0  COMMENTS