sql에서 데이타를 받아서 정기적(10초)간격으로 데이타를 보여주고 싶은데
잘안되네요....이런지...interval 속성은 10000으로 주었구요...근데 뭐가 문제
이지 제가 코딩을 잘못했는것 같은데...콤보박스를 선택해서 각 해당 데이타를
선택하면 그에 해당하는 데이타가 정기적으로 올라 와야 한는데 좀 갈르쳐 주세요...
소소는
procedure TForm1.EventTimerTimer(Sender: TObject);
begin
screen.Cursor := crHourGlass;
EventTimer.Tag := EventTimer.Tag + 1;
if EventTimer.Tag > 200 then begin
EventTimer.Tag := 0;
with OrderQuery do begin
try
DisableControls;
Close;
SQL.Clear;
SQL.Add('SELECT * FROM tPBS');
OPEN;
LAST;
finally
EnableControls;
end;
end;
orderQuery.free;
end;
Screen.Cursor := crDefault;
end;
> try
> DisableControls;
> Close;
> SQL.Clear;
> SQL.Add('SELECT * FROM tPBS');
> OPEN;
> LAST;
> finally
> EnableControls;
> end;
> end;
> orderQuery.free;
> end;
> Screen.Cursor := crDefault;
> end;
orderQuery.free 이 문장이 잘 못 된것 같습니다.
주석처리해서 한 번 실행시켜 보시죠.
그리고 EnableControls와 DisableControls 역시 잘 못 된것 같은데...
쩝...저두 확실치는 않군요.
아래 내용은 제 생각입니다. 나중에 틀렸다는걸 알아도 이해 바람.
DisableControls와 EnabledControls는 쿼리한 데이터를 루프문으로 조작할 때
속도가 떨어지는것을 줄이기 위해 전 자주 사용했습니다.
루프문 시작전에 DisableControls를 쓰고,
루프문 끝난후에 EnableControls를 쓰고,
왜 위와 같이 쓰냐면 DataSource컴포넌트와의 연결을 잠시 끊기 위해서죠.
예를 들어 하나의 DataSource 컴포넌트에 여러개의 DBGrid라던지, DBEdit등
이 연결되어 있다면 Table의 변화되는 내용을 보여주는 돼는 컴퓨터가 빠르다고
하지만 어느정도의 시간을 쫌 걸리죠. 특히나 중형 DB를 다룬다면 더...
아래 저 나름대로 고쳐 봤습니다.
with OrderQuery do begin
try
//DisableControls;
Close;
SQL.Clear;
SQL.Add('SELECT * FROM tPBS');
OPEN;
LAST;
finally
//EnableControls;
//다른 예외를...
end;
end;
//orderQuery.free;
end;
Screen.Cursor := crDefault;
Query를 Open하고 레코드를 Last로 옮겼는데 왜인지?