Q&A

  • 콤보박스 사용 (다시 질문드립니다. ^^;;)
우선 답변해 주신 김태균님께 감사 드리구요..

나름대로 따라 해봐도 안 되네요.



급한맘에 다시 질문 드리게 됩니다.



데이터베이스 내에



회사명 부서명 이렇게 있을때 combox1 에는 회사명이 나오도록

A a combox2 에는 부서명이 나오도록

A b 하려합니다.

B c



단, combobox1에서 A를 선택하면 combobox2 에는 a, b 만 나오도록

" B " c " 하고싶습니다.





이렇게 가르쳐 주신대로 해도 안되고 제가 좀 고쳐봐도 안되네요. --;;;



procedure Tfrm.FormActivate(Sender: TObject);

begin

tablename.First;

combobox1.Items.Clear;

while not tablename.EOF do

begin

combobox1.Items.Add(tablename.FieldByName('상호명').AsString);

tblCustomer.Next;

end;

end;





procedure Tfrm.combobox1DblClick(Sender: TObject);

begin



combobox1.Items.Clear;



With query1 do

begin

Close;

SQL.Clear;

SQL.Add(' select distinct 담당부서'

+ ' from tablename'

+ ' where 상호명 = :companyname');

parambyname('companyname').asstring := combobox1.text;

open;



tablename.first;

while not tablename.EOF do

begin

combobox2.items.add(tablename.FieldByName('담당부서').AsString);

tablename.next;

end;

end;



end;





부탁드립니다.~



3  COMMENTS
  • Profile
    권경부 1999.09.10 11:19
    스런(정지혜) 께서 말씀하시기를...

    > 우선 답변해 주신 김태균님께 감사 드리구요..

    > 나름대로 따라 해봐도 안 되네요.

    >

    > 급한맘에 다시 질문 드리게 됩니다.

    >

    > 데이터베이스 내에

    >

    > 회사명 부서명 이렇게 있을때 combox1 에는 회사명이 나오도록

    > A a combox2 에는 부서명이 나오도록

    > A b 하려합니다.

    > B c

    >

    > 단, combobox1에서 A를 선택하면 combobox2 에는 a, b 만 나오도록

    > " B " c " 하고싶습니다.

    >

    >

    > 이렇게 가르쳐 주신대로 해도 안되고 제가 좀 고쳐봐도 안되네요. --;;;

    >

    > procedure Tfrm.FormActivate(Sender: TObject);

    > begin

    > tablename.First;

    > combobox1.Items.Clear;

    > while not tablename.EOF do

    > begin

    > combobox1.Items.Add(tablename.FieldByName('상호명').AsString);

    > tblCustomer.Next;

    > end;

    > end;

    >

    >

    > procedure Tfrm.combobox1DblClick(Sender: TObject);

    > begin

    >

    > combobox1.Items.Clear;

    >

    > With query1 do

    > begin

    > Close;

    > SQL.Clear;

    > SQL.Add(' select distinct 담당부서'

    > + ' from tablename'

    > + ' where 상호명 = :companyname');

    > parambyname('companyname').asstring := combobox1.text;

    > open;

    >

    > tablename.first;

    > while not tablename.EOF do

    > begin

    > combobox2.items.add(tablename.FieldByName('담당부서').AsString);

    > tablename.next;

    > end;

    > end;

    >

    > end;

    >

    >

    > 부탁드립니다.~

    >



    음.. 제가 생각할때는요..

    테스트를 해보지 않고 지금 여기서 막 코딩하는 거라 맞을 지는 모르겠네요..

    코딩의 전체적인 포맷은 위의 것을 그냥 쓸게요.. 안의 내부적인 루틴만 고칠께요..(Query를 쓴 것을 보니깐 지금 TQuery가 있지요.. 폼위에.. 그쵸...)



    > procedure Tfrm.FormActivate(Sender: TObject);

    > begin

    Query1.close;

    Query1.clear;

    Query1.SQL.Add('select distinct 상호명 from tablename');

    Query1.Open;

    combobox1.clear;

    while not Query1.Eof do

    begin

    combobox1.items.Add(Query1.FieldByName('상호명').AsString);

    Query1.next;

    end;

    > end;

    //이렇게 하면 combobox1에 회사명만 나오겠지요..



    > procedure Tfrm.combobox1DblClick(Sender: TObject);//Click이벤트는 안될까

    > begin

    >

    combobox2.Items.Clear;

    >

    > With query1 do

    > begin

    > Close;

    > SQL.Clear;

    SQL.Add('select distinct 담당부서 from tablename'+' where 상호명 = ''' +combobox1.text+'''');

    SQL.Open;

    end;

    while not Query1.Eof do

    begin

    combobox2.items.Add(Query1.FieldByName('담당부서').AsString);

    Query1.next;

    end;

    end;

    이렇게 하시면 될것 같아요... 한번 해보세요.. 하지만 제가 테스트를 해보지 못해서... 죄송합니다. 글구 에러 생기면 다시 질문 올려주세요..

    문제 해결에 도움이 되었으면 좋겠군요...

  • Profile
    김태균 1999.09.10 03:48
    아래 코드를 보면 TTable Component의 이름이 다른거 같은데요.



    > procedure Tfrm.FormActivate(Sender: TObject);

    > begin

    > tablename.First;(여기하고요)

    > combobox1.Items.Clear;

    > while not tablename.EOF do(여기하고)

    > begin

    > combobox1.Items.Add(tablename.FieldByName('상호명').AsString);

    > tblCustomer.Next;(여기요)

    > end;

    > end;

    >

    >

    > procedure Tfrm.combobox1DblClick(Sender: TObject);

    > begin

    >

    > combobox1.Items.Clear;

    >

    > With query1 do

    > begin

    > Close;

    > SQL.Clear;

    > SQL.Add(' select distinct 담당부서'

    > + ' from tablename'

    > + ' where 상호명 = :companyname');

    > parambyname('companyname').asstring := combobox1.text;

    > open;

    >

    > tablename.first;

    > while not tablename.EOF do

    > begin

    > combobox2.items.add(tablename.FieldByName('담당부서').AsString);

    > tablename.next;

    > end;

    > end;

    >

    > end;

    >

    >

    > 부탁드립니다.~

    >





  • Profile
    스런(정지혜) 1999.09.10 04:03
    > 아래 코드를 보면 TTable Component의 이름이 다른거 같은데요.

    >

    > > procedure Tfrm.FormActivate(Sender: TObject);

    > > begin

    > > tablename.First;(여기하고요)

    > > combobox1.Items.Clear;

    > > while not tablename.EOF do(여기하고)

    > > begin

    > > combobox1.Items.Add(tablename.FieldByName('상호명').AsString);

    > > tblCustomer.Next;(여기요)

    > > end;

    > > end;



    제가 질문에 올릴려고 일반화 시키려는 마음에 tblCustomer -> tablename

    으로 바꿔었는데 하나를 빼놓고 바꿔었네요.



    위의 프로그램상에서 에러가 발생하거나 그렇지는 않구요..

    다만 원하는 작업이 이루어 지지 않을 뿐입니다.



    ^_____________^