파이어버드 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;
|