Q&A

  • Transaaction 관련 질문입니다.
with Query1 do begin

DataBase1.StartTransaction;

try

SQL.Clear;

SQL.ADD('DELETE FROM Ptr ');

SQLEXEC;

Database1.Commit;

except

MessageDlg('에러!', mtInformation, [mbOk], 0);

Database1.Rollback;

Exit;

end;

CommitUpdates;

end;



이 소스에서, 2번째 라인이,

closed Dataset에서 수행할 수 없다고 하는데,

분명 이 때, Query1은 Open된 상태거든요?

왜 이런 문제가 나는지....



제가 잘못 쓰고 있는지요..



Transaction에 대해 많은 조언 부탁드립니다.

3  COMMENTS
  • Profile
    락이야.. 2001.11.15 19:34
    훈 wrote:

    > with Query1 do begin

    > DataBase1.StartTransaction;

    > try

    Close; <--------- 이게 빠진거 같은데요..

    > SQL.Clear;

    > SQL.ADD('DELETE FROM Ptr ');

    > SQLEXEC;

    > Database1.Commit;

    > except

    > MessageDlg('에러!', mtInformation, [mbOk], 0);

    > Database1.Rollback;

    > Exit;

    > end;

    > CommitUpdates;

    > end;

    >

    > 이 소스에서, 2번째 라인이,

    > closed Dataset에서 수행할 수 없다고 하는데,

    > 분명 이 때, Query1은 Open된 상태거든요?

    > 왜 이런 문제가 나는지....

    >

    > 제가 잘못 쓰고 있는지요..

    > Transaction에 대해 많은 조언 부탁드립니다.





    위 Close;써 주시는게 확실하구요..

    DataBase1는 당연히 Active되어 있겠지요?

    CommitUpdates; <- 글구, 이건 안해주셔도 되는데...



  • Profile
    2001.11.15 23:22
    Close까지 가지도 못합니다.



    DataBase1.StartTransaction;



    에서 에러가 나거든요,

    Closed Dataset에서는 StartTransaction을 수행할 수 없다는 메시지와 함께요.

    쩝.. 정말 왜그러는지..



    락이야.. wrote:

    > 훈 wrote:

    > > with Query1 do begin

    > > DataBase1.StartTransaction;

    > > try

    > Close; <--------- 이게 빠진거 같은데요..

    > > SQL.Clear;

    > > SQL.ADD('DELETE FROM Ptr ');

    > > SQLEXEC;

    > > Database1.Commit;

    > > except

    > > MessageDlg('에러!', mtInformation, [mbOk], 0);

    > > Database1.Rollback;

    > > Exit;

    > > end;

    > > CommitUpdates;

    > > end;

    > >

    > > 이 소스에서, 2번째 라인이,

    > > closed Dataset에서 수행할 수 없다고 하는데,

    > > 분명 이 때, Query1은 Open된 상태거든요?

    > > 왜 이런 문제가 나는지....

    > >

    > > 제가 잘못 쓰고 있는지요..

    > > Transaction에 대해 많은 조언 부탁드립니다.

    >

    >

    > 위 Close;써 주시는게 확실하구요..

    > DataBase1는 당연히 Active되어 있겠지요?

    > CommitUpdates; <- 글구, 이건 안해주셔도 되는데...

    >

  • Profile
    락이야 2001.11.19 21:39
    훈 wrote:

    > Close까지 가지도 못합니다.

    >

    > DataBase1.StartTransaction;

    >

    > 에서 에러가 나거든요,

    > Closed Dataset에서는 StartTransaction을 수행할 수 없다는 메시지와 함께요.

    > 쩝.. 정말 왜그러는지..

    >

    > 락이야.. wrote:

    > > 훈 wrote:

    > > > with Query1 do begin

    > > > DataBase1.StartTransaction;

    > > > try

    > > Close; <--------- 이게 빠진거 같은데요..

    > > > SQL.Clear;

    > > > SQL.ADD('DELETE FROM Ptr ');

    > > > SQLEXEC;

    > > > Database1.Commit;

    > > > except

    > > > MessageDlg('에러!', mtInformation, [mbOk], 0);

    > > > Database1.Rollback;

    > > > Exit;

    > > > end;

    > > > CommitUpdates;

    > > > end;

    > > >

    > > > 이 소스에서, 2번째 라인이,

    > > > closed Dataset에서 수행할 수 없다고 하는데,

    > > > 분명 이 때, Query1은 Open된 상태거든요?

    > > > 왜 이런 문제가 나는지....

    > > >

    > > > 제가 잘못 쓰고 있는지요..

    > > > Transaction에 대해 많은 조언 부탁드립니다.

    > >

    > >

    > > 위 Close;써 주시는게 확실하구요..

    > > DataBase1는 당연히 Active되어 있겠지요?

    > > CommitUpdates; <- 글구, 이건 안해주셔도 되는데...

    > >



    답변이 늦었네요..

    제생각엔 DataBase1이 Open되어있지 않은 거 같군요..

    Database1을 사용하는 Query에서 Select를 실행할경우에는

    자동으로 Open되지만

    나머지 실행문에 대해서는 그렇지 않습니다.

    미리, DataBase1.Open; 을 실행시키고 해보심이 좋을듯 합니다.