Q&A

  • DB Grid 에서 Locate함수 사용방법에 관한 질문입니다...부탁해요 고수님들..
고수님들 아시다시피, DBGrid에서 특정 필드의 특정값을 검색하여 그 레코드로 커서를 이동시키는 것으로 Locate가 있습니다.



소스를 보면,







procedure TSimpleSqlExp.LctBttnClick(Sender: TObject);

var

LocateSuccess : Boolean;

SearchOptions : TLocateOptions;



begin

SearchOptions := [lopartialKey, loCaseinsensitive];

LocateSuccess := Query1.Locate(edtFld.Text, edtSchwd.Text, SearchOptions);

end;









저는 Edit를 이용해서 edtFld.Text에서 검색할 필드를, edtSchwd.Text에서 검색할 단어를 입력받아서 DBGrid에서 읽어온 테이블에서 원하는 레코드로 커서를 위치시키도록 만들었습니다.







여기서 질문은, edtText에서 입력된 단어, 예를 들어 검색할 단어가 '석'이라 한다면, 테이블의 처음부터 검색하여 제일 처음 나오는 '석'을 검색하여 그 위치로 커서를 위치시키는데, 그다음 나오는 '석'을 검색하기 위해서 어떻게 해야하는 겁니다.



Locate는 항상 처음부터 검색하여 찾는 것 같은데, 현재 커서위치에서 다음 단어가 있는 것으로 커서를 다시 위치시킬 수는 없을까요?



1  COMMENTS
  • Profile
    김광섭 2001.03.09 22:48
    최우석 wrote:

    > 고수님들 아시다시피, DBGrid에서 특정 필드의 특정값을 검색하여 그 레코드로 커서를 이동시키는 것으로 Locate가 있습니다.

    >

    > 소스를 보면,

    >

    >

    >

    > procedure TSimpleSqlExp.LctBttnClick(Sender: TObject);

    > var

    > LocateSuccess : Boolean;

    > SearchOptions : TLocateOptions;

    >

    > begin

    > SearchOptions := [lopartialKey, loCaseinsensitive];

    > LocateSuccess := Query1.Locate(edtFld.Text, edtSchwd.Text, SearchOptions);

    > end;

    >

    >

    >

    >

    > 저는 Edit를 이용해서 edtFld.Text에서 검색할 필드를, edtSchwd.Text에서 검색할 단어를 입력받아서 DBGrid에서 읽어온 테이블에서 원하는 레코드로 커서를 위치시키도록 만들었습니다.

    >

    >

    >

    > 여기서 질문은, edtText에서 입력된 단어, 예를 들어 검색할 단어가 '석'이라 한다면, 테이블의 처음부터 검색하여 제일 처음 나오는 '석'을 검색하여 그 위치로 커서를 위치시키는데, 그다음 나오는 '석'을 검색하기 위해서 어떻게 해야하는 겁니다.

    >

    > Locate는 항상 처음부터 검색하여 찾는 것 같은데, 현재 커서위치에서 다음 단어가 있는 것으로 커서를 다시 위치시킬 수는 없을까요?

    >



    헬프에서 찾아보니 LocateNext란 함수가 있네요.

    이걸 이용해서 해보시죠 ^^



    function LocateNext(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean

    즐코하세요~