Q&A

  • 오라클에서 삭제 후 commit이 안됩니다.
음...델파이 4로 혼자 땀 흘리며..공부하고 있습니다.
프로그램은 첨이라...T.T
힘이 드는군요...

혼자 공부하다가 안되는것이 있어서..
db는 오라클을 사용하는데...
공부하면서 이것저것 만들어보는데..
가장 기본적이 삭제,,저장이 안되더군요..
처음에는 applyupdate 컴포넌트를 사용해서 만들었는데...안되길래..
직접sql문 써서 했는데..그래도 삭제, 저장이 안됩니다.
화면상 삭제는 되는것 같은데....
삭제 후 commit이 안되더라구요.....
방법을 좀...처음부터...

가장 기본적인거 같은데..왜 안될까요?
하는방법을 좀 간단하게 나마...갈르켜 주시면...도움이 될것 같은뎅...
꼭!!부탁드립니다.
3  COMMENTS
  • Profile
    Mr. Ziker 2002.02.26 13:21
    안녕하세요!

    근본적은 SQL문이 틀리지 않다면 다음을 참고 하십시오

    컴포넌트마다 다르겠지만,
    쿼리를 통해서 값을 가져 올때,
    쿼리를 통해서 값을 저장 할때,

    메쏘드가 다르게 동작 하는 경우가 있습니다.

    가령, Query 컴포넌트 같은 경우엔, 가져올때 경우는 query1.open으로
    가능하지만 저장을 할경우(수정, 업데이트, 삭제, 입력)등일경우
    query1.Execute 메쏘드를 사용 하셔야 합니다.

    말씀하신건 안 써봤지만, 참고 하십시오.

    즐코~


  • Profile
    으쌰으쌰 2002.02.26 20:19
    그렇게 했는뎅...T.T
    머가 틀렸는지...좀 봐주세용
    책보고 이런방법 저런방법 다 해봤는데...
    암튼 가장 최근에 따라한 코딩입니다.
    좀 봐주세요....감솨..죄송..복 받을겁니다...-.-;;;
    ==============================================================

    procedure TForm4.SpeedButton3Click(Sender: TObject);
    var iso_seq : String ;
         iso_code : string ;
         ret_msg : Integer ;
    begin
      iso_seq :=DataModule1.Query1.fieldbyname('isoseq').AsString;
      iso_code :=DataModule1.Query1.fieldbyname('isocode').AsString;

    if DataModule1.Query1.recordcount <> 0 then
      begin
        ret_msg := messagedlg ('삭제하시겠습니까?',mtWarning,[mbYes,mbno],0);
       if ret_msg = 6 then
       begin
       DataModule1.Query1.Close;
       DataModule1.Query1.sql.clear;
       DataModule1.Query1.sql.add ('delete from iso');
       datamodule1.Query1.sql.add ('where isoseq =:isoseq1 ');
       datamodule1.Query1.sql.add ('and isocode =:isocode1');
       DataModule1.Query1.ParamByName('isoseq1').AsString :=iso_seq ;
       DataModule1.Query1.ParamByName('isocode1').AsString :=iso_code ;
       DataModule1.Query1.ExecSQL;
       end
       else
       application.MessageBox ('삭제가 취소되었습니다.','삭제취소',mb_ok);
       end;
       end;

    =================================================================



  • Profile
    gudwhrla 2002.02.26 20:26
    오라클DB에 삭제 저장시는 Database컴포넌트를 사용하셔야합니다.
    Database컴포넌트를 사용하셨다면

    DataModule1.Database1.StartTransaction;
    DataModule1.Query1.ExecSQL;
    DataModule1.Database1.Commit;

    이런 식으로 하시면 됩니다. 물론 Database1는 DataModule1에 있어야 하죠.

    Database1컴포넌트가 없다면 Database1를 설정해야 겠죠...