Q&A

  • DBGrid 에서 locate 로 데이타 검색할때?
ClientDataSet 으로 불러온 데이타를

DBGrid 에 뿌려줍니다. 그리고 난후 특정값을 입력해서

조건검색(locate 함수사용)을 하면

DBGrid 의 데이타위치로 이동합니다.

아래와 같은 방법으로 했습니다.

CilentDataSet.Locate('필드명','필드값',[loPartialKey]);

그런데 위의 방법은 데이타를 한번밖에 찾지를 못하더군요

notepad 의 F1 기능처럼 "다음찾기" 부분이 안되는데...

"다음찾기" 기능을 구현할수는 없을까요?
2  COMMENTS
  • Profile
    이희진 2004.01.10 06:38
    BookMark 기능을 사용해서 간단히 구현하실 수도 있을거 같습니다만..
    다음은 제가 테스트 해본 겁니다. 참고해보시길..

    var
      bm: TBookMark;
    begin
      if Key = vk_Return then
      begin
        with ClientDataSet1 do
        begin

          bm := getBookMark;
          DisableControls;
          if FieldByName('CITY').AsString = Edit1.Text then
          begin
            Next;
          end
          else
          begin
            First;
          end;

          while Not(EOF) do
          begin
            if FieldByName('CITY').AsString = Edit1.Text then Break;
            Next;
          end;

          if Eof then
          begin
            First;
            while Not(EOF) do
            begin
              if FieldByName('CITY').AsString = Edit1.Text then Break;
              Next;
            end;
          end;


          if FieldByName('CITY').AsString <> Edit1.Text then GotoBookMark(bm);

          EnableControls;
        end;
      end;
    end;
  • Profile
    오병주 2004.01.09 23:42
    님께서 하신걸로 하면 세션을 Close 했다가 다시 Open해야만
    되실겁니다.

    그리고 한꺼번에 Table을 읽어서 찾아오기 때문에 시스템에 부하도
    많이들구여.. 별로 권장할만한 건 아닌것같습니다.

    그냥 쿼리로 원하시는 값을 찾아오는게 어떠할런지여...

    원래 DBGrid는 Table전체를 Open하기 때문에 시간도 많이 걸리고
    EndUser입장에서 보면 좀 기다리는 시간에 짜증이 날수도 있습니다.
    그럼 즐코 ~