Q&A

  • ㅠ.ㅠ 초보를 긍휼히 여기옵소서
DBcombobox에 관한 이야기임당..

또한 마스터 디테일에 관한것일수도 있죠...

with query2 do

begin

close;

sql.clear;

sql.add('select distinct(공정구분) from 공정구분');

open;

end;

query2.first;

while not query2.Eof do

begin

dbcombobox2.Items.Add(query2.fieldbyname('공정구분').asString);

Query2.Next ;



이런식으로 combobox2를 만들었는디...



dbcombobox1은 콤보박스2의 리스트 값중에서 어떤 값을 받으면



거기에 연결돼어있는 테이블값



예)[ ]<--- 이게 콤보박스2라면

요기에 있는 리스트값들이

1

2

3

4

이런 식으로 공정구분테이블에서 값들을 받아왔슴당..



이값들중 2를 클릭하면



이 2하고 연결돼어있는 테이블2의 작업자들의 이름이



콤보박스1에 나오는 그런것임당...



콤보박스1에서는



예)[ ]<-콤보박스1

김XX

최XX

이XX

이런식임당...

머리가 넘넘 나빠서리.. 어떻게 구현해야 좋을지 감이 안온당... ㅠ.ㅠ



나오는 것은 한숨뿐이고 아픈것은 나쁜 머리뿐이군엽....



지발 도와주시와여......ㅠ.ㅠ



3  COMMENTS
  • Profile
    이쁘니 2000.05.20 20:58
    안냥하세요...



    엄....그럼 마스터 디테일루 엮어보심이 어떨런지요..



    Query1 에는 사람이름이 나오게 하구요

    Query2 에는 공정명이 나오죠?



    그래서 공정명을 선택하면 그공정에 해당하는 사람이름이 콤보박스1에

    나오면 되는거구요? 그럼요..



    Query2 가 마스터구요 Query1이 디테일이 되죠..(이건 다들 아시죠~?)



    엄..전 디자인 모드에서 관계를 걸어서 사용했거든요..



    Object Inspector에 보시면 Query1을 선택하시구요



    DataSource라는 것이 있어요.. <- 여기에다가 Query2와 연결되 있는

    DataSource를 선택해 넣으세요

    이러면 Query1과 Query2이 관계를 맺은게 되구요

    그담에

    Query1.close;

    Query1.sql.Clear;

    Query1.sql.add('select * from 테이블명 ');

    Query1.sql.add('where 공정명 = :공정명'); ##주의사항

    -------- 공정명 파리미터명은

    Query2의 필드명과 같은 것으로 하세요.

    Query1.open; <- 따로 파리미터 값을 넣어주지 않아두 됩니다..



    이렇게하시면 될껍니다..



    도움이 되셔씀 하네요...그럼 행복하세요..





    =================================================================

    사발우성 wrote:

    > DBcombobox에 관한 이야기임당..

    > 또한 마스터 디테일에 관한것일수도 있죠...

    > with query2 do

    > begin

    > close;

    > sql.clear;

    > sql.add('select distinct(공정구분) from 공정구분');

    > open;

    > end;

    > query2.first;

    > while not query2.Eof do

    > begin

    > dbcombobox2.Items.Add(query2.fieldbyname('공정구분').asString);

    > Query2.Next ;

    >

    > 이런식으로 combobox2를 만들었는디...

    >

    > dbcombobox1은 콤보박스2의 리스트 값중에서 어떤 값을 받으면

    >

    > 거기에 연결돼어있는 테이블값

    >

    > 예)[ ]<--- 이게 콤보박스2라면

    > 요기에 있는 리스트값들이

    > 1

    > 2

    > 3

    > 4

    > 이런 식으로 공정구분테이블에서 값들을 받아왔슴당..

    >

    > 이값들중 2를 클릭하면

    >

    > 이 2하고 연결돼어있는 테이블2의 작업자들의 이름이

    >

    > 콤보박스1에 나오는 그런것임당...

    >

    > 콤보박스1에서는

    >

    > 예)[ ]<-콤보박스1

    > 김XX

    > 최XX

    > 이XX

    > 이런식임당...

    > 머리가 넘넘 나빠서리.. 어떻게 구현해야 좋을지 감이 안온당... ㅠ.ㅠ

    >

    > 나오는 것은 한숨뿐이고 아픈것은 나쁜 머리뿐이군엽....

    >

    > 지발 도와주시와여......ㅠ.ㅠ

    >

  • Profile
    이쁘니 2000.05.20 22:20
    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    StdCtrls, DBCtrls, Db, DBTables;



    type

    TForm1 = class(TForm)

    Query1: TQuery;

    DataSource1: TDataSource;

    Query2: TQuery;

    DataSource2: TDataSource;

    DBLookupComboBox1: TDBLookupComboBox;

    DBLookupComboBox2: TDBLookupComboBox;

    procedure FormActivate(Sender: TObject);

    procedure DBLookupComboBox1CloseUp(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation



    {$R *.DFM}



    procedure TForm1.FormActivate(Sender: TObject);

    begin

    Query2.close; // 공정구분 테이블 DataSource2와 연결되어있습니다

    Query2.sql.Clear;

    Query2.sql.Add('select distinct(공정구분) from 공정구분');

    Query2.Open;



    //DBComboBox2 대신 DBLookupComboBox1를 사용하였습니다.

    //꼭 DBComboBox2를 사용하지 않아도 되신다면 DBLookupComboBox1를

    //사용해보심이 어떨런지요..

    //공정명을 선택할수있도록 구성 되었습니다

    DBLookupComboBox1.ListSource := DataSource2;

    DBLookupComboBox1.ListField := '공정명';

    DBLookupComboBox1.KeyField := '공정구분';



    Query1.DataSource := DataSource2; //쿼리2와 쿼리1을 연결합니다



    end;



    procedure TForm1.DBLookupComboBox1CloseUp(Sender: TObject);

    begin

    Query1.close; // 공정구분 테이블 DataSource1과 연결되어있습니다

    Query1.sql.Clear;

    Query1.sql.add('select * from 테이블명 ');

    Query1.sql.add('where 공정구분 = :공정구분');

    Query1.open;



    //사원명을 선택할 수 있도록 구성되었습니다

    DBLookupComboBox2.ListSource := DataSource1;

    DBLookupComboBox2.ListField := '사원명';

    DBLookupComboBox2.KeyField := '공정구분';



    end;



    end.

    ============================================================================

    간단하게 올립니다

    그래두 이해가 안 가시면 멜 주세요..



    dragon078@airspider.com



    꼭 성공하시길...*^^*

  • Profile
    사발우성 2000.05.20 21:24
    이쁘니님 감솨 함당...하지만 어떻게 해야 할지 아직도 감안옴당...



    지금 저두 그쪽으로 연결할려구 노력중이지만.. 말처럼 쉽지 않네요...ㅠ.ㅠ



    죄송 하지만 구체적인 소스부탁드려도 될런지엽..... 지발 초보를 긍휼히여기는



    심의 아니 프로그래머가 돼시길..... ㅠ.ㅠ



    이쁘니 wrote:

    > 안냥하세요...

    >

    > 엄....그럼 마스터 디테일루 엮어보심이 어떨런지요..

    >

    > Query1 에는 사람이름이 나오게 하구요

    > Query2 에는 공정명이 나오죠?

    >

    > 그래서 공정명을 선택하면 그공정에 해당하는 사람이름이 콤보박스1에

    > 나오면 되는거구요? 그럼요..

    >

    > Query2 가 마스터구요 Query1이 디테일이 되죠..(이건 다들 아시죠~?)

    >

    > 엄..전 디자인 모드에서 관계를 걸어서 사용했거든요..

    >

    > Object Inspector에 보시면 Query1을 선택하시구요

    >

    > DataSource라는 것이 있어요.. <- 여기에다가 Query2와 연결되 있는

    > DataSource를 선택해 넣으세요

    > 이러면 Query1과 Query2이 관계를 맺은게 되구요

    > 그담에

    > Query1.close;

    > Query1.sql.Clear;

    > Query1.sql.add('select * from 테이블명 ');

    > Query1.sql.add('where 공정명 = :공정명'); ##주의사항

    > -------- 공정명 파리미터명은

    > Query2의 필드명과 같은 것으로 하세요.

    > Query1.open; <- 따로 파리미터 값을 넣어주지 않아두 됩니다..

    >

    > 이렇게하시면 될껍니다..

    >

    > 도움이 되셔씀 하네요...그럼 행복하세요..

    >

    >

    > =================================================================