Q&A

  • DBCOMBOBOX 질문입니다.


안녕하세요 델파이를 시작한지 얼마 안된 초보입니다.

그림과 같이 콤보 박스를 선택하면 나머지 에디트박스에 그 레코드를 표시 하려고 합니다;;

책을 봐도 도무지 모르겠습니다 ㅠㅠ

고수님들 제발 가르쳐 주세요 ㅠㅠ
5  COMMENTS
  • Profile
    박지용 2005.03.04 22:38


    TDBComboBox연결된 Dataset과 나머지 컨트롤들의 dataset이 틀릴경우 간단하게 처리할려면

    두 테이블을 Master-Detail관계로 관계를 맺어주면 쉽게 해결 할 것 같내요...

    그럼..
  • Profile
    서해근 2005.03.04 22:55

    소스를 깜빡하고 올리지 않았네요;;

    테이블은 TBLDATA라고 한개를 썼습니다.

    procedure Tmain.FormCreate(Sender: TObject);
    begin
      with ibquery1 do
      begin
        close;
        sql.clear;
        sql.add('select distinct(itemno) from tbldata');
        open;
      end;
      ibquery1.first;

      while not ibquery1.Eof do
      begin
        cbitemno.Items.Add(ibquery1.fieldbyname('itemno').asString) ;
        ibQuery1.Next ;
      end ;
    end;     //여기까지 콤보박스에 데이터를 넣는 부분입니다.

    procedure Tmain.cbitemnoChange(Sender: TObject);
    begin
      with ibquery2 do
      begin
        SQL.Clear;
        sql.add('select * from tbldata');
        sql.add('where itemno = "+cbitemno.Text+" ');
        if not prepared then prepare;
        open;
      end;
      edplant.Text:=ibquery2.fieldByName('plant').asstring;
    // 이밑으로 내용을 표현하려고 합니다.
    end;
    end.

    도와주세요 ㅠㅠ
  • Profile
    무심코 2005.03.05 00:33
    거의 다 만드신것 같은데.... 소스를 보다가 이해가 안되는 부분이 있어 몇자 적습니다.

    1. 내용를 보니 디비콤보박스를 왜 쓰시려구 하는지 모르겠네요!
        저라면 그냥 콤보박스를 쓰고 거기에 아이템을 추가 하겠습니다.
        왜냐하면 디비콤보박스는 데이타셋과 이동을 함께 한다는 것인데....디비콤보박스에서
        보여지는 값 외에 다른것을 선택하실 수가 없을것 같은데요!
        따로 데이타셋 이동 시키는 그 무엇이 있다면 모를까?

    2. 쿼리문에 왜 distinct 를 쓰셨는지 모르겟네요!
        itemno 값이 똑같은것이 여러개 있을수 있다는 건가요?
        그렇다면 나중에 그 값으로 조인을 해서 쿼리를 하면 해당되는 값이 여러개가 발생될테고
        그중에 첫번째 값만 에디트 박스에 보여주신다는 건가요?
        
    이정도로 제 의문사항을 접고요

    제가 한다면 이렇습니다.
    일반 콤보박스에 값을 집어넣고 쿼리도 하나만 쓰겟습니다.
    (체인지 될때마다 쿼리를 계속 한다는 것이 왠지...나름대로 사정이 있으시다면 어쩔수 없지만요)
    그리고 일단 몽땅 쿼리를 한 다음에 해당 값만 Add를 하고
    그런후 콤보박스 Change 이벤트에서
    ibquery1.Locate 함수를 쓰겟습니다.(Locate 는 헬프나 책을 참조 아주 쉬워요)

    procedure Tmain.FormCreate(Sender: TObject);
    begin
      with ibquery1 do
      begin
        close;
        sql.clear;
        sql.add('select * from tbldata');
        open;
      end;
      ibquery1.first;

     while not ibquery1.Eof do
      begin
        cbitemno.Items.Add(ibquery1.fieldbyname('itemno').asString) ;
        ibQuery1.Next ;
      end ;
    end;     //여기까지 콤보박스에 데이터를 넣는 부분입니다.

    procedure Tmain.cbitemnoChange(Sender: TObject);
    begin
      with ibquery1 do
      begin
          Locate(......)  
        //이렇게 되면 해당하는 값으로 데이타셋이 이동됩니다. 그런후
        //각 해당 에디트에 값을 넣는 거지요!
       //또는 해당 값을 쿼리....
      edplant.Text:= fieldByName('plant').asstring;
      .....
      .....
    end;
    end.

    위와 같이 하시면 별 어려움이 없을것으로 사료됩니다.
    각 해당 에디트에 값을 뿌리시기 귀찮으시면
    DBEdit 를 쓰셔도 되겠죠....(DBEdit 의 프라퍼티에 몇개만 설정하시면 되니까요!)
  • Profile
    서해근 2005.03.05 19:01


    가르쳐 주셔서 감사합니다 ^^
  • Profile
    Crazy™ 2005.03.05 19:19
    무심코 님의 내용처럼 locate를 이용해서 찾을 수도 있지만 콤보박스가 dbcombo 인데 그냥 연결만 해도 됩니다.
    코딩으로 dbcombo박스에 넣을필요없이 그냥 dataset과 연결
    • 김길남
    • 2005.03.07 04:49
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 주재환
      2005.03.08 22:09
      adoquery.sql.append 대신에 adoquery.sql.text를 써보세요....
    • 심효기
    • 2005.03.06 21:47
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 착한천사
      2005.03.06 23:36
      착한천사 김경록입니다.. 혹시, MDI의 child form을 최소창으로 만드시는게 아닌지.. 그럼.. 기본적으로 ...
    • 구창민
      2005.03.07 19:03
      안녕하세요.. 혹시 F7 키로 디버깅 하시는건 아니신지요? 함수내부로 진입하지 않으시려면 F8 키를 ...
    • 남경만
    • 2005.03.05 08:17
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이규하
      2005.03.05 12:29
      만약, TQuery  를 더블 클릭 하셔서, 마우스 오른쪽 버튼으로 Add all fields 하신다음에, 해당 ...
    • 남경만
      2005.03.07 04:38
      덕분에 쉽게 해결하였습니다.. ^^ 그리고 또 다른 하나를 배웠네요.. 맨날 배워만가고.. 저도 어여 스...
    • 착한천사
      2005.03.06 23:09
      착한천사 김경록입니다. 제가 알기로는 linked list에는 많은 종료가 있다는걸로 아는데요.. N-Linked li...
    • 박진규
    • 2005.03.05 05:08
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 도깨비
      2005.03.23 21:58
      첨부화일을 작업중인 프로젝트 폴더에 압축해제 하시고, iodll.txt화일을 참조하시어 명령사용법은 ...
    • 델피언
    • 2005.03.05 04:23
    • 2 COMMENTS
    • /
    • 0 LIKES
    • nilriri™
      2005.03.05 08:56
      온라인 도움말의 일부내용입니다. loCaseInsensitive로 도움말을 검색해보세요. ^^; loCaseInsensit...
    • Crazy™
      2005.03.05 19:23
      주로 제가 퀀텀그리드를 쓰는데 그리드 kefield 란 부분이 안맞는 경우 이런증상이 생깁니다. 편법이지만 ...
    • Crazy™
      2005.03.05 19:09
      안녕하세요. 루프문으로 돌릴때처럼 똑같이 CompositeReport에 추가하면 됩니다. 5개의 리포트를 생성 후...
    • 송동규
      2005.03.07 17:38
      먼저 답변 감사드립니다. 하지만 똑같이 루프를 돌려서 CompositeReport를 하면 (내부적으로 reports...
    • 이상호
    • 2005.03.05 00:04
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 서해근
    • 2005.03.04 21:48
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 박지용
      2005.03.04 22:38
      TDBComboBox연결된 Dataset과 나머지 컨트롤들의 dataset이 틀릴경우 간단하게 처리할려면 두 테이...
    • 서해근
      2005.03.04 22:55
      소스를 깜빡하고 올리지 않았네요;; 테이블은 TBLDATA라고 한개를 썼습니다. procedure Tmain.Form...
    • 무심코
      2005.03.05 00:33
      거의 다 만드신것 같은데.... 소스를 보다가 이해가 안되는 부분이 있어 몇자 적습니다. 1. 내용를 보니...
    • 서해근
      2005.03.05 19:01
      가르쳐 주셔서 감사합니다 ^^
    • Crazy™
      2005.03.05 19:19
      무심코 님의 내용처럼 locate를 이용해서 찾을 수도 있지만 콤보박스가 dbcombo 인데 그냥 연결만 해도 됩...
    • 이규하
      2005.03.05 12:50
      메인에서 차일드 폼을 부를 경우 <!--codeS--> with Tchform.create(application) do Try  ...
    • 조운석
      2005.03.04 22:14
      메인폼에서 <!--CodeS--> FPopup = TFPopup.Create(Self); if (FPopup.ModalResult = mrO...
    • 김일근
    • 2005.03.04 18:35
    • 2 COMMENTS
    • /
    • 0 LIKES
    • K모씨
      2005.03.04 23:06
    • nilriri™
      2005.03.05 04:25
      코멘트가 달린거 같은데 안보이네요..^^ 어떤 내용인지 몰라서 저도 한자 적습니다.. 라이센스 부족&...
    • 석주현
      2005.03.04 17:21
    • 이중철
      2005.03.04 19:49
    • 정찬희
      2005.03.04 04:12
      TList에 아이템을 집어넣으면 전부다 Pointer형으로 바뀌어 들어갑니다... 가져나올때도 Pointer로만 인식...
    • 세일러문
      2005.03.04 18:41
      답변감사합니다.. 그런데요... 님께서 말씀하신대로.. TList(TList.Items[i]).Count 이대로 했는데...
    • nilriri™
      2005.03.04 19:55
      <!--CodeS-->     TList(ShapeList .Items[i]).Count; <!--CodeE--> ...
    • 주재환
    • 2005.03.03 20:10
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2005.03.04 00:17
      안녕하세요.. 이런 답변을 원하신게 아니시겠지만, 제가 볼때는 같은 기능을 하는 폼을 하나 만드시...
    • 석주현
      2005.03.04 17:23
    • 유효근
    • 2005.03.03 12:15
    • 7 COMMENTS
    • /
    • 0 LIKES
    • 임형호
      2005.03.03 17:42
    • 무심코
      2005.03.03 18:26
    • 유효근
      2005.03.04 12:28
    • 귀폭
      2005.03.04 03:39
      소스 올립니다... 원하시는데로 고쳐서 쓰세요...
    • 유효근
      2005.03.04 12:28
      정말 감사합니다.^^
    • 유효근
      2005.03.04 02:20
      코멘트 다는 곳이 사라졌네요..^^; 혹시 코멘트 다신분~ 다시 리플로 답변해 주실수 있나요?.^^; 부...
    • 마이크로김
      2005.03.05 03:20
      formatdatetime('YYYY-MM-DD',now + 100)
    • 델피언
    • 2005.03.03 08:33
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 박지용
      2005.03.04 22:43
      sex 필드가 text 타입이기 때문이죠...^^ 필드의 타입이 문자 또는 문자열의 경우는 '   ' 로...
    • nilriri™
      2005.03.04 07:14
      저 쿼리가 맞나요? 희안하네..틀린거 맞는데요..^^;  컴터는 거짓말 안하거든요.. 야근 많...
    • 델피언
      2005.03.04 08:25
      ㅡㅡ; 아이구 내가 미챠~ 컴파일시 오류없이 넘어가길래 아무 생각없이... 예전부터 from 을 form하고...
    • nilriri™
      2005.03.04 10:52
      이것봐요..내 이러실줄 알았습니다..^^; 글쓴 시간이 23시네..ㅋㅋㅋ 하긴 저두 새벽이지만.. 구인/구직...
    • 심재용
      2005.03.03 09:55
      ADODataset1.commandtext := 'select * form people where sex=남'; 위 문장의 sex=남 부분을 sex=''남'...