Q&A

  • 질문 midas에서 rollbackup
서버쪽에는 Remotedatamodule에 tdatabase,tquery,DataSetProvider를 사용합니다.

클라이언트쪽에는 SocketConnection에 clientdataset을 사용하여 데이타을 처리합니다.

Activexform을 사용합니다.

여기서 Clientdataset을 open하여 자료를 등록후 applyupdates를 하는데 그냥 applyupdates하면 자료가 정상적으로 들어 갑니다. 그러나 rollback처리를 할려고 하니 아래와 같은 문제가 발생합니다.



클라이언트에서 서버쪽까지 transaction_mode(0)은 자료가 넘가갑니다.

즉, starttransaction 은 실행이됩니다. 그리고 다음문장 applyupdates에서 StartTransaction이 이미 열려 있다는 메세지가 나옵니다.

혹시 clientdataset에서 applyupdates와 starttransaction은 같이 사용 못하는 것이 아닌지.





-프로그램 source-



--서버쪽--

-- tbl에 method를 추가하여 아래와같이 코딩 했습니다.

procedure Tstock_server.Transaction_Mode(i:Integer);

begin

case i of

0 : tc_db.StartTransaction;

1 : tc_db.Commit;

2 : tc_db.Rollback;

end;

end;





--클라이언트쪽--

--서버쪽에 Transaction_Mode(0)를 호출하여 transaction처리를 할려고 합니다.



dm.SocketConnection1.AppServer.Transaction_Mode(0); ######## 여기는 정상적으로 넘어가고



try

dm.q_tcpt903.ApplyUpdates(-1); ######## 요기서 이미 transaction이 실행중이라는 메세지가 뜹니다.

dm.q_tcpt903.ApplyUpdates(-1);

dm.q_tcpt902.ApplyUpdates(-1);

dm.SocketConnection1.AppServer.Transaction_Mode(1);

except

dm.SocketConnection1.AppServer.Transaction_Mode(2);

exit;

end;





1  COMMENTS
  • Profile
    타락천사 2001.04.13 15:42
    안녕하세여..타락임다..^^



    흠, 지가 지금 집에 있어서, 자료를 찾아볼수 없어서 잘모르겠지만여....



    ApplyUpdates(0) 으로 함 해보시는게 어떨까여?



    즐푸하세여..



    타락천사...^^