Q&A

  • 테이블에서 필터 문제입니다 고수님만 봐주세요~
또 막히는 부분이 있습니다
테이블 컴포넌트로 필터를 해볼려고 합니다
그런데 만약에 필터의 갯수를 여러개로 유동적으로 할때에
필터문을 어떻게 해야 하는지 모르겠습니다
이건 진짜 저혼자서는 절대로 해결이 안될거 같습니다
예를 들어서

종류           이름               개수
떡볶이        개똥이               1
오뎅          소똥이               2
김치          말똥이               1
라면          새똥이               1
오뎅          호빵맨               3
떡볶이        수다맨               1
떡볶이        김치맨               2

이런 디비가 있다고 할때(실제로는 수천개이상의 데이타)
테이블에서 떡볶이를 필터하면 Filter:=(종류=떡볶이);
이렇게 하면

종류          이름               개수
떡볶이        개똥이              1
떡볶이        수다맨              1
떡볶이        김치맨              2

이렇게 나옵니다

그러나 경우에 따라서는 Filter:=(종류=떡볶이) and (종류=오뎅) and (종류 = 라면); 처럼 3가지를 한꺼번에 요구 할때도 있고

종류         이름             개수
떡볶이        개똥이           1
떡볶이        수타맨           1
떡볶이        김치맨           2
오뎅          소똥이           2
오뎅          호빵맨           1
라면          새똥이           1

아니면 Filter:=(종류=김치) and (종류=오뎅);
처럼 두가지를 요구 할수도 있습니다

종류       이름          개수
김치       말똥이        1
오뎅       소똥이        2
오뎅       호빵맨        1

여기서 '종류' 필더의 값이 보통 수십가지 있어야 합니다 다시 말하면 김치 오뎅 이런게 수십가지.... 그리고 레코드 갯수는 수천개 이상입니다 변수로 받아야 하기 때문에 (1) Filter:=(종류=변수1) and (종류=변수2); 이런 형식으로 해야 하는데 이거는 사용자가 두개만 불러들일때만 가능한 형식이고 3개를 불러온다면 (2) Filter:=(종류=변수1)and(종류=변수2)and(종류=변수3);
이렇게 되야 되잖아요 이걸 case를 써서 변수가 두개일때는 위의 (1)번문장을 쓰고 변수가 3개일때는 아래의 (2)번 문장을 실행하도록 짤수도 없는노릇이구요(수십가지이기 때문에...) 어떻게 해야 하나요? 리스트 박스를 이용해 변칙적으로 하는거 한가지만 떠오르는데 그 외에는 방법이 없는건가요?
제가 이렇게 질문을 무식하게 표를 모두 만들면서 쓴것은 꼭 답변을 받고 싶어서 성의를 표시한 겁니다 이렇게라도 안하면 답변을 받기가 힘들것 같군요
하지만 전 꼭 필요합니다 저한테 구체적으로 정말 자세하게 길을 가르쳐 주셨으면 좋겠습니다 고수님들 부탁드립니다
3  COMMENTS
  • Profile
    blackjewel 2002.02.16 10:59
    이런 방법은 어떨런지...
    제가 여러개의 filter 줄때 사용하는 방법인데여..

    cFiltGetChe, cFiltCode1.cFiltDate..등 사용할 변수를 전역으로 선언하고
    값을 미리 넣는거죠.

    예를 들어
    cFiltGetChe := ' 종류 = '+''''+edit1.text+'''';   //요건 어느곳이나 해당되는 것을 넣어주시고요...
    cFiltCode1 := 'and 종류 = '+''''+edit2.text+'''';  //다음부터는 and를 넣어서
    cFiltDate := 'and 종류 = '+''''+edit3.text+'''';
    edit1,2,3은 들어가야 할 말이 들어가면 되겠지요.
    혹시나 입력을 받는다면 그대로 사용하면 되구여.
    조건이 없다면 editbox를 비워두시면 됩니다.

    filter를 줘야하는 곳에서 한번만 주면 됩니다.
    query(table).filter := cFiltGetChe + cFiltCode1 + cFiltDate + cFiltDanga+.....;

    요롷게 하면 잘됩니다.
    아참 query나 table의 filtered는 True로 설정하셔야 합니다.


  • Profile
    김정선 2002.02.10 23:25
    CheckBox 를 쓰시면 될거 같습니다.
    각 종류별 체크박스를 만든 후 체크박스를 선택된것만
    Filter 에 넣으면 될거 같습니다.

    GstrFilter := GstrFilter + TCheckBox(Sender).Hint;

    위의 변수값을 조건문에 넣으시면 되겠네요
    체크박스에 힌트를 사용한건 각 체크박스에 해당하는 디비 필드명을
    넣으면 될듯 합니다.

    꽁수가 도움이 되시길...
  • Profile
    황선웅 2002.02.09 22:50
    Filter는 String 값을 받습니니다.
    그러니까
    각 조건일때 String변수를 정의해서 대입한후
    그변수를 Table의 Filter에 대입하면 되겠죠.

    질문하신 내용이 맞는지 모르겠습니다.


    • Cos Consulting
      2002.02.13 13:29
      텍스트파일 엑세스는 여러방법이 있겠지만.. 가장 쉬운방법은... TStringList 를 이용하는겁니다... ...
    • 강환춘
      2002.02.15 09:51
      답변 정말 고맙습니다. 그런데 읽기 할때요 만약에 첫재줄에 11120 이라고 둘째줄에 11290 이라고 있을...
    • Cos Consulting
      2002.02.15 15:44
      숙제하고 계십니까 ? -_- 답은..당연히 가능합니다. Input text file 이 Fixed length 면 copy 루틴으...
    • 강환춘
      2002.02.15 18:54
      네 ^^ 숙제 하고 있습니다... 답변 해주신것 감사드립니다.
    • 박정훈
    • 2002.02.12 20:03
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 황선웅
      2002.02.14 17:52
      혹시 user table에 user를 추가 하실때 host필드란에 '%'로 입력하셨는지요...... 위의 값은 모든 호스트...
    • Cos Consulting
      2002.02.13 13:47
      Database1 이 TDatabase 일경우.. Alias 를 안쓰는 설정은 TQuery 에서 TDatabase 의 설정을 사용할수...
    • 델파이 초보
      2002.02.13 16:00
      답변 감사합니다 하지만 안되네요 ^^;
    • Cos Consulting
      2002.02.15 15:42
      프로젝트 옵션에서 Output directory 를 지정하지 않으면 델파이에서 Project Run 시에 application.exen...
    • Coolguy
    • 2002.02.12 15:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • Cos Consulting
      2002.02.12 19:09
      Process 가 폼어베잇할시간이 없이.. 반복계산에만 집중돼서 그래요... application.processmessages ...
    • 정성훈
    • 2002.02.12 10:44
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이병훈
      2002.02.13 05:02
      안녕하세요. ^^ 훔. 서브쿼리를 사용하시면 될것 같은데요. select * from aaa where kk in (selec...
    • 원동희
    • 2002.02.12 10:15
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 허일학
      2002.02.12 19:43
      이렇게 해보시는게 어떨지.....^^ Query1.ExecSQL;   --> Query1.Open;
    • 이준희
      2002.02.13 23:32
      uses math;    // 요기에 파이가 3.141592 procedure TForm1.Button1Click(Sende...
    • 정성훈
    • 2002.02.12 01:23
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 허일학
      2002.02.12 03:03
      음... 정확하게 무엇과 무엇이 조인되는 건지는잘 모르겠습니다만... ANSI문법상 조인되는 문법은 다음...
    • 정성훈
    • 2002.02.11 22:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 허일학
      2002.02.15 00:46
      도움말에 그와 비슷한 부분이 있어서 올려드립니다 원하시는 답변이 아닐지라도 참고하시면 도움이 되리...
    • 김현희
    • 2002.02.10 01:44
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 허일학
      2002.02.10 01:51
      음....저의 다순한 생각도 델파이 버젼이 맞지않아서 그런것 같군요.. 저확한 답변이 아니고 추측하는...
    • 박성훈
    • 2002.02.10 01:19
    • 1 COMMENTS
    • /
    • 0 LIKES
    • gudwhrla
      2002.02.11 20:33
      New -> Project 탭을선택하고 상속받을 폼을 선택하고 확인을 누르면 똑같은 자식폼이 생깁니다. Inhe...
    • 정두진
    • 2002.02.10 00:53
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 황보창
    • 2002.02.09 22:21
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김상호
    • 2002.02.09 22:08
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 허일학
      2002.02.10 10:01
      음... 좀 어렵네요... 원하시는 방법은 아닙니다만.. 이방법은 어떨지 몰겠군요... 다음과 같이 하시...
    • 김상조
    • 2002.02.09 20:57
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 허일학
      2002.02.10 01:32
      날짜 계산함수입니다.... function DateAdd(interval:TDateAdd_interval; Number:integer; DateTime:T...
    • Tk
      2002.02.09 23:55
      그냥 엘셀 파일메뉴보면 다른이름으로 저장 에서 dbf 파일루 저장하세요 ^^; 그담엔 sql 쭈쭉 하시면 ...
    • 황선웅
      2002.02.09 22:59
      ADO 콤포를 쓰시면 안되는건가요? 엑셀 화일 불러들여서 루프를 돌리던가 하셔서 각각의 원하시는 테이...
    • sjHwang
    • 2002.02.09 18:54
    • 0 COMMENTS
    • /
    • 0 LIKES
    • blackjewel
      2002.02.16 10:59
      이런 방법은 어떨런지... 제가 여러개의 filter 줄때 사용하는 방법인데여.. cFiltGetChe, cFiltCode1....
    • 김정선
      2002.02.10 23:25
      CheckBox 를 쓰시면 될거 같습니다. 각 종류별 체크박스를 만든 후 체크박스를 선택된것만 Filter 에 넣...
    • 황선웅
      2002.02.09 22:50
      Filter는 String 값을 받습니니다. 그러니까 각 조건일때 String변수를 정의해서 대입한후 그변수를 Ta...