제 경우에 대해서 말씀을 드릴께요.
저는 TIBTransaction.AutoStopAction = saNone 으로 셋팅을 했습니다.
그렇게 하지 않을때는 TIBQuery 에서 작업을 완료하면 자동으로 TIBQuery 가 Close 되더군요.
디폴트가 saNone 인데 다른걸로 바꾸니까 TIBTransaction 지가 알아서 Transaction에 들어가고 TIBQuery를 Close 시키고 그러더군요.(묵시적 Transaction?) 한번 확인 해 보심이.
글구, 저는 TIBQuery와 TIBTransaction을 연결시킨 다음 TIBQuery.Transaction.StartTransaction 으로 했는데.. Active랑 같은 건가요?
아.. 소스를 보니까 같은 거군요. 위에꺼 함 확인 해 보시구요. 그 이상은 모르겠습니다. :-)
즐코 하세요.
감사^^ 님이 쓰신 글 :
: 환절기 감기 조심하십시요
:
: IBDataBase - IBTransaction - IBQuery1, IBQuery2, IBQuery3, IBQuery4 를 사용하고여
:
: 실제 DB갱신은 IBQuery4 에서만 합니다..
:
: 그런데 트랜잭션 활성화 시키구 commit 날린 후 트랜잭션 닫구..
:
: 이런식으로 하는데 트랜잭션 을 닫으면 해당하는 IBQuery1,2,3이 모두 close되어 버립니다.
:
: 어떻케하면 IBQuery1,2,3을 계속 open 상태를 유지할 수 있을까요.. ??
:
: 잘못된점 지적 부탁드립니다..
:
: 좋은 답변 부탁합니다....
:
: try
: with QWrt1 do begin ==>> 위의 IBQuery 4
: Close;
: SQL.Clear;
: SQL.Add(Format(SqlText1,[Edit1.Text,Edit2.Text,Edit12.Text]));
: Open;
:
: DB_MOVE;
:
: IBT1.Active := True; ==> IBTransaction
: try
: ExecSQL;
: IBT1.Commit;
: except
: on E: Exception do begin
: IBT1.Rollback;
: raise Exception.Create(PChar(Format(Msg04,['저장',E.Message])));
: end;
: end;
: end;
: Application.MessageBox(PChar(Format(Msg02,['저장'])), '확인', MB_ICONINFORMATION+MB_OK);
: finally
: IBT1.Active := False;
: QWrt1.Close;
: end;
:
:
: 즐거운 연말되세여 ^^*
|