날씨가 또 추워졌네요. 다들 건강하세요.
DBGrid의 선택된 값을 다른 DBGrid에 옮기는 작업을 하는데요
옮기기는 하는데,
한 레코드씩 옮기는데 처음에는 빠르다가 점점 속도가 느려져요....
왜 이런가요? 어떻게 해결해야 될까요?
작업을 다시한번 자세히 설명드리면 DBGrid가 2개 있고요 각각은 Query1과 Query2로 연결되어 있습니다. DBGrid1에서 선택된 레코드를 DBGrid2에 추가하는 작업입니다.
제가 사용한 루틴
procedure MoveDBGrid1toDBGrid2;
var i:integer;
begin
Query1.DisableControls;
Query2.DisableControls;
with DBGrid_1.SelectedRows do begin
for i:=0 to Count -1 do begin
Query1.BookMark := Items[i];
Query2.Append;
Query2.('level2').AsString :=Query1.FieldByName('level2').AsString;
Query1.Delete;
end;
end;
Query1.EnableControls;
Query2.EnableControls;
end;
삭제한 Query1 내용을 실제 Table에 ApplyUpdates하지는 않습니다.
고수님 도와주세요.
모두 DB와 연결이 되어 있는 것으로 보니까....
이런 방법으로 해보시는 것이...
한건한것씩 옮기면 (10000건이면...) 10000번의 쿼리가 날라가지요...
그럼 속도면에 가장 큰 문제가 있습니다...
Insert into 넣을 테이블(필드1,....필드n)
select 필드1,....필드n from 테이블 where 조건;
여기서 만약에 두 테이블의 필드가 같다면 (필드1,....필드n) 은 필요가
없습니다....
조건은 원테이블에서 넣을테이블의 자료의 조건을 의미합니다...
이러면 한번에 쿼리와 1번의 트랜잭션으로 속도가 빨라지겠지요.....