Q&A

  • TTable 을 이용한 필드 검색에 의문에 있습니다.
현재 TTable을 이용하여 DB에서 검색을 하도록 해놓고 있습니다.

필터링 옵션을 통하여 의외로 쉽게 구현가능 하더군요.

근데 다음과 같은 필드내용을 어떻게 검색해야 할지 난감하네요.

예를들어 아래와 같은 데이터가 있을경우

필드 1
21, 22, 23
22, 27, 500
24, 27, 100


위의 데이터들 중에서 22가 들어가 있는 것들만 보여줄려면 어떻게 해야 하나요?

나름 머리를 써서

table1.Filter := '필드1 = '22*' ';

이렇게 했더니 22, 27, 500에 해당하는 데이터만 보이네요.
저는 22로 검색하면

21, 22, 23
22, 27, 500

이렇게 보여지도록 구성하고 싶거든요.

델파이를 시작한지 오늘로서 딱 한달 채웠네요.

볼수록 나름대로 재미있어서 요즘에는 조금씩 즐기는 중입니다.

좋은 답변 부탁드려요~~
2  COMMENTS
  • Profile
    김병윤 2008.05.01 02:05
    TTable의 필터의 경우
    필드 = '22*'  이런식으로는 사용이 가능하지만
    필드 = '*22' 이렇게는 사용되지 않습니다.
    물론 필드 = '*22*' 이것도 필터가 되지 않습니다.
    그래서 첫문자 필터만 가능하죠...
    이 문제 때문에 TTable을 사용하지 않고 TQuery를 사용합니다.

    TQuery사용하면 다양한 검색을 하실 수 있습니다.
    TQuery사용법을 간단히 말하자면
    컨포넌트를 폼에 올려두시고(DB가 paradox라고 가정할때)
    <!--CodeS-->
    1. 기본적인 테이블 전체조회
      Query1.Close;
      Query1.DataBaseName := 'C:\테이블이 있는 위치';
      Query1.SQL.Text := 'SELECT * FROM [테이블명]';
      Query1.Open;

    2. 원하는 조건의 데이터만 불러오기
      Query1.Close;
      Query1.DataBaseName := 'C:\테이블이 있는 위치';
      Query1.SQL.Text := 'SELECT * FROM [테이블명]'
                                   + ' WHERE [필드1] like "22%"';
      Query1.Open;

    3. 질문하신 형태의 데이터만 불러오기
      Query1.Close;
      Query1.DataBaseName := 'C:\테이블이 있는 위치';
      Query1.SQL.Text := 'SELECT * FROM [테이블명]'
                                   + ' WHERE [필드1] like "%22%"';
      Query1.Open;
    <!--CodeE-->

    데이터베이스를 지정하고 데이터 소스와 연결하고 하는 부분은 TTable과 같으므로
    사용하시는데 크게 어려움은 없으시리라 생각합니다. ^^ 그럼



  • Profile
    강태원 2008.05.01 02:25
    흠 사실 TTable의 함수목록 찾아보고 TQuery도 알아보고 하면서 혹시나 하는 예상은 하였지만 역시 TTable의 한계군요.
    그렇다고 현장 설치가 얼마 안남은 시점에서 코드자체를 뒤엎기는 좀....
    다른 방법 생각해 놓은것이 있긴 한데 그방법으로 하거나 TQuery를 이용해야 겠네요.
    답변 감사합니다.