혹시 ibquery를 사용하셨나요?
데이터를 등록, 수정, 삭제 후 Commit작업을 해주시면 해결되실것 입니다.
이유를 모르겠습니다. 님이 쓰신 글 :
: 파이어버드 Ver 2.1 + 델파이 Xe를 사용하고 이며 서버에 데이터를 저정하고 클라이언트에서
: 실시간조회를 하는 구성입니다.(트래픽이 많지 않아 미들웨어는 사용하지 않음)
:
: Timer를 써서 2분마다 서버에서 데이터를 읽어 그리드에 표시 하는데 프로그램을 종료하고 다시
: 실행 하였을때는 최신 값이 표시되지만 타이머에서 쿼리 문을 날렸을때는 프로그램 실행시 불러온
: 값만 표시가 되고 업데이트가 되지를 않는군요,,,
:
: Timer문제인가 하여 쓰레드로 바꾸어 보아도 동일한 증상이 나옵니다.
:
: 더 이상한건 내부 시험에서는 더 낮은 사양의 클라이언 PC에 적용하여도 정상 동작하는데 업체에
: 설치된 곳에서는 이와 같은 증상이 나타 나는군요..
:
: 혹시 이와 같은 문제가 있으셨거나 어디가 문제인지 짐작 되시는 분 있으면 알려 주시면 감사하겠습니다.
:
: 쿼리는 진짜 간단합니다.
:
: with RMSIWQueryRT do
: begin
: Close;
: SQL.Clear;
:
: SQL.Text := ' Select LDate, SENSORID,CHANNELID,CHANNELMODE,RVALUE,STATUS From TBDATALOG ' +
: ' Where (USERNAME=:a or USER1=:a or USER2=:a or USER3=:a or USER4=:a ) and ((LDate>=:b) and (LDate<=:c))' +
: ' order by CHANNELID, LDate desc';
:
:
: ParamByName('a').DataType := ftString;
: ParamByName('a').Size := 20;
: ParamByName('a').Value := UName;
:
: ParamByName('b').DataType := ftString;
: ParamByName('b').Size := 19;
: ParamByName('b').Value := formatDatetime('yyyy-mm-dd hh:nn:ss', IncDay(Now,-1));
:
: ParamByName('c').DataType := ftString;
: ParamByName('c').Size := 19;
: ParamByName('c').Value := formatDatetime('yyyy-mm-dd hh:nn:ss', Now);
:
: try
:
: Open;
: FetchAll;
:
: first;
:
: i := 1;
:
: while Not Eof do
: begin
: if (FieldByName('CHANNELID').AsInteger = i) and (FieldByName('CHANNELID').AsInteger < 32) then
: begin
: Grd1.Cells[3,FieldByName('CHANNELID').AsInteger] := FieldByName('LDate').AsString;
:
: Grd1.Cells[4,FieldByName('CHANNELID').AsInteger] := Format('%3.3f',[FieldByName('RVALUE').AsSingle]);
:
: if FieldByName('STATUS').AsInteger = 1 then
: begin
: Grd1.Colors[0,FieldByName('CHANNELID').AsInteger] := ClNone;
: end
: else Grd1.Colors[0,FieldByName('CHANNELID').AsInteger] := clred;
:
: inc(i);
:
: Continue;
: end
: else if (FieldByName('CHANNELID').AsInteger = i) and (FieldByName('CHANNELID').AsInteger > 31) then
: begin
: Grd2.Cells[3,FieldByName('CHANNELID').AsInteger - 31] := FieldByName('LDate').AsString;
:
: Grd2.Cells[4,FieldByName('CHANNELID').AsInteger - 31] := Format('%3.3f',[FieldByName('RVALUE').AsSingle]);
:
: if FieldByName('STATUS').AsInteger = 1 then
: begin
: Grd2.Colors[0,FieldByName('CHANNELID').AsInteger - 31] := ClNone;
: end
: else Grd2.Colors[0,FieldByName('CHANNELID').AsInteger - 31] := clred;
:
: inc(i);
:
: Continue;
: end;
:
: Next;
:
: if FieldByName('CHANNELID').AsInteger >= (i+1) then
: i := FieldByName('CHANNELID').AsInteger;
: end;
:
: Except On EIBInterBaseError do
: begin
: Cancel;
: end;
: end;
: end;
|