안녕하십니까.
프로젝트 중 DB 검색 결과가 수만건 이상 되는 경우가 발생하는 사례가 있어
이런 질문을 올리게 되었습니다.
검색을 하고 그 검색 결과 중에서 예를 들면 1번째 레코드 ~ 10번째 레코드,
그 다음은 11번째 레코드 ~ 20번째 레코드 이런 식으로 일부분씩 fetch해오는
방법을 알고 싶습니다. Data Access/Data Controls 컴포넌트들을 그냥 연결하면
검색 후 모든 결과를 한번에 다 fetch해 오지 않습니까? 그게 너무 느려서 이런
질문을 드립니다.
사실 이런 기능은 거의 매번 필요를 느끼는데 저도 많이 찾아봤지만 찾을 수 없었고
의외로 다른 곳에서도 찾지 못하겠더군요. 검색하기 좋은 키워드가 없어서 검색하지
못해서인지도 모르겠습니다. 그러니 제가 혹 답이 있는데 못 찾은 것이더라도
그냥 넘어가지 마시고 알려주시면 대단히 감사하겠습니다.
부탁드립니다.
TQuery 결과셋의 레코드 개수를 제한 할수 있습니다....
..님 질문은 결과셋이 넘 커서, 시간이 길어진다는 거져.. 책에는 네트웍의 부담도
가중된다구 써 있네여... 고로 결과셋을 적당하게 조절하란 건데.......음....
아래의 Query함수로 적당한 크기의 결과셋을 가진 Query를 부르고,,
보는 동안 전체 결과셋을 부르는 쿼리를 실행시켜서...
사용자가 보기엔 빨라진거 처럼 느끼게 하면 어떨까여?
** 결과셋의 크기를 제한할수 있는 TQuery 상속객체..
unit MyQuery;
interface
uses
Dialogs, DB, DBTables, BDE;
type
TMyQuery = class(TQuery)
private
FMaxRowCount : Longint;
protected
procedure PrepareCursor; override;
publshed
property MaxRowCount: Longint read FMaxRowCount write FMaxRowCount;
end;
implementation
procedure TMyQuery.PrepareCursor;
begin
inherited PrepareCursor;
if FMaxRowCount > 0 then
begin
Check(DbiValidateProp(hDBIObj(Handle), curMAXROWS, True));
Check(DbiSetProp(hDBIObject(Handle), curMAXROWS, FMaxRowCount));
end;
end;
end.
즐푸하세여...^^
경고 : 오타가 있을수도 있습니다.. --
타락천사.. ^________________^