Q&A

  • [질문] 검색시 필드 전채를 검색하려면 어떻게 해야 하나요?
안녕하세요.

그리드에서 검색 후 불려온 데이터에 대해서
전체 검색을 하려고 하는데....

필드 하나에서는 검색이 가능 하지만
전체 필드에 대해서 검색을 하려면... 어떻게 해야 하는지??

그렇다구 각 필드 마다 전부다 검색을 할 수는 없자나요.
찾아 보니 시간이 오래걸린다고 하는데...

예를 들면 성명, 나이, 사번, 지역 등등 각각의 Edit 를 만들어 검색시 사용한다고 보시면 되요.

이걸 통합해서 검색 된 그리드의 내용 중(DB에서 검색한 데이터)에서
내가 32라는 값을 입력 하여 그리드의 내용을 조회 하면 성명, 나이, 사번, 지역에 상관없이
그리드의 모든 필드 값을 검색 하려고 합니다.

검색관련 함수나 좋은 방법이 있으시면 알려주세요.
(그리드에 뿌려진, 그리드가 가지고 있는 데이터를 가지고 검색을 하는 겁니다,)

현재는 검색을 할때는 필드 별로 따로 입력을 받아 검색을 합니다. 아래 소스 입니다.

<!--CodeS-->
  for I := Position + 1 to grd.RowCount - 1 do begin
    if POS(UpperCase(SearchData), UpperCase(grd.Cells[AColumn,I].AsString)) <> 0 then begin
      grd.Row := I;
      exit;
    end;
  end;
<!--CodeE-->
2  COMMENTS
  • Profile
    구창민 2008.06.18 21:54
    안녕하세요...

    전부다 검색을 하셔야 하구요.. 많은 양의 레코드를 그리드에 뿌리셨다면 검색속도는 느려짐을 감수하셔야 할듯..

    아래 코드를 참고 하세요...

    function FindTextForStringGrid(StringGrid: TStringGrid; const Text: string): Integer;

    function FindText(StringGrid: TStringGrid; const Text: string): Integer;
    // Result: if found Text returns RowIndex, else returns -1
    var
    ColIndex, RowIndex: Integer;
    begin
    Result := -1;
    for RowIndex := 0 to StringGrid.RowCount - 1 do
    begin
    for ColIndex := 0 to StringGrid.ColCount - 1 do
    begin
    if Pos(StringGrid.Cells[ColIndex, RowIndex], Text) <> 0 then // Found
    begin
    Result := RowIndex;
    Exit;
    end;
    end;
    end;
    end;

    var
    RowIndex: Integer;
    TopRowIndex: Integer;
    SelRect: TGridRect;
    begin
    RowIndex := FindText(StringGrid, Text);
    if RowIndex <> -1 then
    begin
    TopRowIndex := RowIndex - StringGrid.VisibleRowCount + StringGrid.FixedRows;
    if TopRowIndex < StringGrid.FixedRows then
    TopRowIndex := StringGrid.FixedRows;
    StringGrid.TopRow := TopRowIndex;
    SelRect.Left := 0;
    SelRect.Top := RowIndex;
    SelRect.Right := StringGrid.ColCount;
    SelRect.Bottom := RowIndex;
    StringGrid.Selection := SelRect;
    end;
    end;


    procedure TForm1.Button1Click(Sender: TObject);
    begin
    FindTextForStringGrid(StringGrid1, '홍길동');
    end;

  • Profile
    김원기 2008.06.27 19:37
    어쩔수가 없네요 ㅠ
    DB에서 불러 오면 좋은데.. 출력된 데이터에서 다시 검색을 하려니... ㅠ

    MIN님 감사합니다. ^^
    • 화이팅
    • 2008.06.22 06:26
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 정병선
    • 2008.06.23 08:05
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 화이팅
      2008.07.06 19:45
      감사합니다.. 많은 도움 되었습니다^^
    • 플루토
    • 2008.06.21 04:39
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.06.21 03:12
      MSConnection이면 코어랩사의 MSDAC를 뜻하는 것이 맞는지요? 맞다면, 최신버전을 사용하시면 됩니다....
    • 이정욱
      2008.06.21 03:13
      하지만 ADO에서 왜 결과값이 나왔다 안나왔다 하는지는 잘 이해가 가질 않네요 ^^; qryTemp 한개를 가...
    • 신철우
      2008.06.21 03:51
      [자답] MSConnection에 MSQuery에서는 parameter를 1개 전달하여 sql문에서 복수조건에 사용가능하였는데...
    • cell
    • 2008.06.20 00:47
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 누룽지
    • 2008.06.19 20:12
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2008.06.19 20:31
      TEmbeddedWB.SaveToFile 을 쓰시면 될꺼 같은데요. ㅡ_ㅡ;; 모양도 그럭저럭 잘 나오는거 같습니다. ^^
    • 누룽지
      2008.06.19 22:28
      TEmbeddedWB.SaveToFile 로 해도 똑같네요 TEmbeddedWB.SaveDialog 로 하는것처럼 들여쓰기 내어쓰기가 ...
    • steps
      2008.06.20 20:33
      html파일을 메모장에서 보면 줄이 안맞아도 ultra edit나 edit plus 로 보면 줄이 잘 맞는데 혹 그런 경...
    • 정은철
    • 2008.06.19 18:14
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 신철우
      2008.06.21 01:27
      자답 : MSConnection을 ADOConnection으로 바꾸니까 되네요.
    • 장성호
      2008.06.19 12:01
      "실사용자는 사용하지 못하고 설치자나 개발자만은 암호를 입력받아서 암호가 맞으면 설정을 변경할 수...
    • 석주현
      2008.06.19 20:13
      위에 방법을 이용하여 타이머로 하는 방법도 있겠고요. Additional 탭에 ApplicationEvent 컴포넌트를...
    • steps
    • 2008.06.19 02:55
    • 1 COMMENTS
    • /
    • 0 LIKES
    • steps
      2008.06.20 03:42
      여기 팁란에 있는 전역핫키설정코드를 ActiveX Form에 적용하여 해결했습니다. procedure TaxBlockPri...
    • 강주현
    • 2008.06.18 21:48
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2008.06.18 22:11
      안녕하세요.. 뭘 비교하시려는지 모르겠지만... TComboBox 의 Items 는 TStrings 입니다. 즉, I...
    • steps
      2008.06.19 00:53
      combobox.items itemindex| Names | Strings = values ________________________...
    • 석주현
      2008.06.19 02:29
      단순히 ComboBox 의 현재 값을 비교하려면 그냥 combobox1.text = 'all' 이렇게 하면 되겠죠. 지...
    • 김원기
    • 2008.06.18 20:28
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2008.06.18 21:54
      안녕하세요... 전부다 검색을 하셔야 하구요.. 많은 양의 레코드를 그리드에 뿌리셨다면 검색속도는 ...
    • 김원기
      2008.06.27 19:37
      어쩔수가 없네요 ㅠ DB에서 불러 오면 좋은데.. 출력된 데이터에서 다시 검색을 하려니... ㅠ MIN님 ...
    • 안인섭
    • 2008.06.17 22:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 양용성
      2008.06.17 23:33
      Fastreport 에서 그림을 그릴때 잘 그려야 합니다. 픽셜의 위치도 정확하게 구성해야 합니다. TEXT ...
    • steps
    • 2008.06.17 21:19
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2008.06.17 21:28
      안녕하세요.. 아래코드를 참고하세요.. procedure TForm1.edit1KeyPress(Sender: TObject; var Key: ...
    • steps
      2008.06.17 21:47
      구창민님 정말 감사합니다. 지금 중문 윈도우xp에서 작업중인데요 그냥 editbox에서는 중문이 아닌 한글...
    • 구창민
      2008.06.17 21:45
      안녕하세요.. RichEdit 의 Lines.BeginUpdate 와 EndUpdate 를 사용하시면 조금은 향상이 있을거 같...
    • 누룽지
      2008.06.18 01:15
      KDDG_MIN님 말씀대로 Lines.BeginUpdate 와 EndUpdate를 사용하니까 속도향상이 있었습니다만 아직도 매...
    • 이정욱
      2008.06.17 02:10
      어떻게 하셨는지는 알수 없지만 아마도 MySQL의 에러처리로 델파이에 전달되는것 같습니다. 조금 더 ...
    • 초보임당
      2008.06.17 02:38
      --유효성 검증을 위한 로직 select * from master where mastercd = @mastercd --...
    • 이정욱
      2008.06.17 08:44
      -- -- Raise an error. -- CREATE PROCEDURE raise_error ( p_msg VARCHAR(128) ) BEGIN DEC...
    • 석주현
      2008.06.15 17:18
      리소스 파일 만들때 추가한 리소스의 이름을 FileName 부분에 넣어 주시면 됩니다.. WAVEFILE1 c:soun...
    • 오매가
      2008.06.16 00:05
      감사합니다^^
    • 오매가
      2008.06.17 20:54
      말씀하신뜻을 이해를 못해서 고생을 했습니다. ^^ [SOUND.rc] SOUND1 Wave sound.wav 로 만들고요 여...
    • 석주현
      2008.06.18 17:25
      ^^ 잘되셨다니 기쁘네요. 즐거운 프로그램 개발 하시길 빕니다.
    • 조영선
    • 2008.06.14 19:28
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.06.17 02:11
      제 생각에는... 프린터가 고장났거나..ㅡㅡ; 또는 프린터 드라이버가 윈도우에 제데로 설치 안되어있거나...
    • 돌고래
      2008.06.19 23:37
      제가 알기로는 없습니다. 밴드가 가로로 배열이 된다면 가능하겠지만 그런 기능이 없거든요... 그래서 ...