트랜잭션의 문제로 보이네요.
트랜잭션 Property를 더블클릭한 후 Read Committed를 체크하고 연결해 보세요.
커넥션이 유지된 상태에서 Query를 하더라도 상대방이 고친 내용이 보일 겁니다.
그럼... ^^;
박태성 님이 쓰신 글 :
: 파이어버드 2.1과 델파이 7을 제우스 컴포넌트로 연결해서 만든 간단한 데이타베이스프로그램을
: 만들고 있는중입니다.
:
: 아래 함수는 그리드에 Room별로 대기자명단을 받아오기 위한 함수입니다.
: 어떤 대기자가 발생했을경우 콤보박스에서 방을 선택하면 그방에 대한 대기자만
: 불러오는 함수인데 문제는 이프로그램을 로켈네트웍으로 연결된 다른컴에서
: 대기자를 등록했을경우 갱신된 데이타가 불러와 지지 않는다는 겁니다.
:
: 프로그램 자체내에서 등록한 대기자는 제대로 목록이 갱신된후 불러와지는데 말이죠
:
: 즉 a컴, b컴 2대가 있을때 firebird 서버는 a컴에 있습니다.
: a컴에서 '만수'라는 대기자를 등록했고 b컴에서 '철수'라는 대기자를 등록했다고 했을때
: firebird서버로 가서 대기자를 보면 둘다 등록되어 있는데
: a컴에서는 b컴에서 등록한 '철수'라는 대기자는 안 불러와지고 자기가 추가한 '만수'라는
: 대기자만 추가된 채로 대기자목록이 불러와 집니다.
:
: 데이타 갱신에 문제가 있는것 같은데 그래서 아래 함수에 주석처리한 부분을
: 삽입한 후 실행하면 제대로 갱신된 데이타가 불러와 지는건요
:
: 제가 아는 상식에서 봤을때 커넥션만 연결된 상태에서 쿼리문을 실행하면 모든 자료가
: 갱신된 상태로 와야되는게 정상아닌가요? 제가 아직도 커넥션의 개념을 모르고 있는건지. ㅠ.ㅠ
:
: 함수를 실행할때마다 커넥션을 다시접속하게 하는건 잘은 모르지만 퍼포먼스에 향상에
: 도움이 되지 않을것 같은데 다른 해결책은 없을까요?
:
: function TdmClient.GetWaitList(var WaitList : TObjectList; RoomName : String): Boolean;
: var
: fPerson : TWaitPerson;
: Loop : integer;
: tmpQry : TZQuery;
: begin
: result := False;
: tmpQry := TZQuery.Create(nil);
: try
: //dmDatabase.cnnChart.Reconnect;
: tmpQry.Connection := dmDatabase.cnnChart;
: tmpQry.SQL.Clear;
: if RoomName = '전체' then begin
: tmpQry.SQL.Add('select * from Receipt order by r_time');
: tmpQry.Open;
: end
: else begin
: tmpQry.SQL.Add('select * from Receipt where r_room=:Room order by r_time');
: tmpQry.ParamByName('room').AsString := RoomName;
: tmpQry.Open;
: end;
|