안뇽~~~~.
환경 : 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;