Q&A

  • 콤보박스2개를 이용한 값 선택 질문입니다.
델파이를 공부하다보니 막히는 부분이 너무 많네요~
2가지 질문이 있습니다.
고수님들의 조언 부탁드립니다.

만약 디비에 구분,종류 이라는 필드가 있고,

구분 - 종류                 의 예로

게임 - 온라인
게임 - PC
게임 - PLAYSTATION

노래 - 가요
노래 - 트로트
노래 - 팝송

컴퓨터 - 노트북
컴퓨터 - 데스크탑
컴퓨터 - 서버

1. 이렇게 입력이 되어있을시에 콤보박스1에서 나오는 목록이
게임,게임,게임, 노래,노래,노래, 컴퓨터,컴퓨터,컴퓨터 이렇게 나옵니다.
이부분을 중복되지 않고 게임,노래,컴퓨터 이렇게 각각 하나씩만 출력하는 기능과


2. 콤보박스1에서 게임을 선택했을때 콤보박스2에서 온라인,PC,PLAYSTATION 이렇게 3가지 중에서
선택 할 수 있게 하는 기능을 알고 싶습니다.

고수님들의 많은 조언 부탁드릴게요^^
4  COMMENTS
  • Profile
    이강석 2009.09.17 01:07
    1. 쿼리할 때
    select 구분 from 테이블 group by 구분;
    이렇게 쿼리하시면 게임/노래/컴퓨터가 나오겠져..

    2. 쿼리하실때
    select 종류 from 테이블 where 구분 = '게임';

    물론 콤보박스1 이벤트에서 값을 가지고 오셔서 where 조건에 넣으셔서 쿼리하시면 됩니다..

    데이터베이스 연결하는 부분이랑 이벤트 부분은 아실거라 생각하고 생략했습니다.

  • Profile
    돌고래 2009.09.18 23:03
    1. 쿼리할 때
    select distinct(구분) from 테이블 ;
    이렇게 쿼리하셔도 게임/노래/컴퓨터가 나오겠져..
  • Profile
    델파이정복하자 2009.09.18 23:53
    답변 감사합니다.

    또 하나 질문 드릴게요.

    2번질문에서 제가 '게임', '노래', '컴퓨터'등 3가지 구분에 관해서 각각의 종류값을

    얻어오기 위해서

    if 구분.Text = '게임' then
    begin
    query3.Close;
    query3.SQL.Clear;
    query3.SQL.Add('select 구분, 종류 from 테이블1');
    query3.SQL.Add('where 구분= '+'''게임''');
    query3.Open;

    while not query3.Eof do
    begin
    종류.Items.Add(query3.fieldbyname('종류').AsString);
    query3.Next;
    end;
    end;

    이런식으로 '노래', '컴퓨터'까지 쓰게 되었습니다.
    이렇게 하면 잘 되긴 하는데 코드가 너무 길어져서 엉망이되네요;
    혹시 짧게 줄일 수 있는 방법이 있나요??
    있으면 좀 알려주세요~
    항상 고수님들의 답변 감사하게 생각하고 있습니다.(_ _)ㅣ
  • Profile
    이강석 2009.09.19 02:27
    뭐 딱히 줄일건 없습니다만...

    function OpenQuery( query : TQuery ; sSql : String ) : Boolean;
    begin
    Result := True;

    try
    query.Cloase;
    query.SQL.Clear;
    query.SQL.Add( sSql );
    query.Open;
    except
    Result := False;
    end;
    end;


    위와 같은 식으로 매번 오픈 하는 함수들은 함수화시켜서 쓰시면 될거 같고...아래도 많이 사용하신다면 ComboBox와 결과쿼리를 넘겨서 ComboBox를 채우는 함수를 만드시면 될거 같아여

    물론 자주 사용하신다는 가정이고여....딱히 줄일건 없네여...

    다른 분들이 답변해주실꺼예요..