확실히 문제를 알면 돌아 갈 수 있어서 좋은것 같습니다.
커밋이나 롤백시 쿼리가 닫히는 것은 기본이다라는 명제 앞에 돌아가기로 마음먹습니다.
SQLbal.Open;
....
....
if Datamd.IBTransaction1.inTransaction then Datamd.IBTransaction1.rollback;
==>위 문장으로 앞서 조회한 쿼리가 닫혔습니다.
Datamd.IBTransaction1.StartTransaction;
try
if SQLbal.Active = false then ==>쿼리를 다시 Open 해 주었습니다.
SQLbal.Open;
if SQLmedia.Active = false then
SQLmedia.Open;
...
....Execsql;
Datamd.IBTransaction1.CommitRetaining();
==>요기서 커밋을 만나니 위의 조회쿼리가 닫혀야 할것 같은데....안닫히고 있습니다.
Retaining() 이 문장때문인가??
Except
on E:Exception do begin
Datamd.IBTransaction1.rollback;
showmessage('실패 !'+#13+#13+ E.Message);
end;
end;
그래서 위의 if 두문장 추가로 돌아가기로 했습니다.
|