Q&A

  • [질문:DB]조인시키는건데 꼭 봐주시고 답변 부탁드립니다. (__)
안녕하세요 하다가 하다가 안되는게 있어서 질문 합니다..



먼저 gun_me와 code1 이라는 두개의 DB화일이 있습니다.. paradox 구여..



gun_me에서는

시코드, 구코드, 동코드 등이 있구요

(s_siid)(s_guid) (s_doid)



code1에서는

시코드, 구코드, 동코드, 이름이 있습니다..

(siid) (guid) (dogid) (s_name)



제가 하고 싶은건 두 테이블에서 시,구,동을 조인시켜서 에디트칸에 이름을 넣고 싶습니다.



그래서 쿼리(Qry_Coord)의 SQL란에는

Select B.s_name as si_name, A.s_siid,

C.s_name as gu_name, A.s_guid,

D.s_name as dong_name, A.s_doid

From gun_me A, code1 B, code1 C, code1 D

Where (A.s_siid = B.siid and B.guid = '00' and B.dogid = '00') and

(A.s_guid = C.guid and A.s_siid = C.siid and C.dogid = '00') and

(A.s_siid = D.siid and A.s_guid = D.guid and A.s_doid = D.dogid)

이렇게 했구요





소스내용의 일부는....



//========================================================

// 정보를 select한다

//========================================================

Procedure TCoordFrm.Selectinfo;

begin



with Qry_Coord do begin

Close;

SQL.Clear;



SQL.Add('Select s_no, s_sp1, s_sp2, s_sp3, s_name, s_siid, s_guid, s_doid, s_bungi, ');

SQL.Add(' s_bungi1, s_phone, s_x, s_y ');

SQL.Add(' from gun_me ');



Open;

end; // with..

end;



//========================================================

// 바뀔때마다 데이터값을 화면에 보여준다...

//========================================================

procedure TCoordFrm.DataSource1DataChange(Sender: TObject; Field: TField);

begin

with Qry_Coord do begin

edt_me.text := FieldByName('s_no').AsString;

edt_name.text := FieldByName('s_name').AsString;

edt_gubncode1.text := FieldByName('s_sp1').AsString;

edt_gubncode2.text := FieldByName('s_sp2').AsString;

edt_gubncode3.text := FieldByName('s_sp3').AsString;

edt_sido.Text := FieldByName('si_name').AsString;

edt_gubn.Text := FieldByName('gu_name').AsString;

edt_dong.Text := FieldByName('dong_name').AsString;

edt_bungi1.text := FieldByName('s_bungi').AsString;

edt_bungi2.text := FieldByName('s_bungi1').AsString;

edt_phone.text := FieldByName('s_phone').AsString;

edt_coordX.text := InttoStr(FieldByName('s_x').AsInteger);

edt_coordY.text := InttoStr(FieldByName('s_y').AsInteger);

end;

end;

이렇게 했습니다.



근데 문제는

EDatabaseError with message 'Qry_Coord:Field 'si_name' not found.

라는 문구나 뜨네요..



그렇다고 DataSource1DataChange에 있는

si_name, gu_name, dong_name을 위에 select처럼 s_siid, s_guid, s_doid라고 하니깐

그냥 코드번호가 나오네요...



어떻게 해야할지 막막합니다...



아시는분 답변 부탁드려요.. 꼭... ㅜ.ㅜ;;

1  COMMENTS
  • Profile
    최혜룡 2001.05.22 08:37
    -> EDatabaseError with message 'Qry_Coord:Field 'si_name' not found.

    이에러의 원인은

    -> edt_sido.Text := FieldByName('si_name').AsString;

    이줄에 si_name이라는 칼럼이 기술되어 있는데

    실제 쿼리의 SELECT절에는 해당칼럼이 없다보니 발생하는 에러입니다.

    edt_sido.Text := FieldByName('s_name').AsString;

    으로 고쳐보세요











    허접초보 wrote:

    > 안녕하세요 하다가 하다가 안되는게 있어서 질문 합니다..

    >

    > 먼저 gun_me와 code1 이라는 두개의 DB화일이 있습니다.. paradox 구여..

    >

    > gun_me에서는

    > 시코드, 구코드, 동코드 등이 있구요

    > (s_siid)(s_guid) (s_doid)

    >

    > code1에서는

    > 시코드, 구코드, 동코드, 이름이 있습니다..

    > (siid) (guid) (dogid) (s_name)

    >

    > 제가 하고 싶은건 두 테이블에서 시,구,동을 조인시켜서 에디트칸에 이름을 넣고 싶습니다.

    >

    > 그래서 쿼리(Qry_Coord)의 SQL란에는

    > Select B.s_name as si_name, A.s_siid,

    > C.s_name as gu_name, A.s_guid,

    > D.s_name as dong_name, A.s_doid

    > From gun_me A, code1 B, code1 C, code1 D

    > Where (A.s_siid = B.siid and B.guid = '00' and B.dogid = '00') and

    > (A.s_guid = C.guid and A.s_siid = C.siid and C.dogid = '00') and

    > (A.s_siid = D.siid and A.s_guid = D.guid and A.s_doid = D.dogid)

    > 이렇게 했구요

    >

    >

    > 소스내용의 일부는....

    >

    > //========================================================

    > // 정보를 select한다

    > //========================================================

    > Procedure TCoordFrm.Selectinfo;

    > begin

    >

    > with Qry_Coord do begin

    > Close;

    > SQL.Clear;

    >

    > SQL.Add('Select s_no, s_sp1, s_sp2, s_sp3, s_name, s_siid, s_guid, s_doid, s_bungi, ');

    > SQL.Add(' s_bungi1, s_phone, s_x, s_y ');

    > SQL.Add(' from gun_me ');

    >

    > Open;

    > end; // with..

    > end;

    >

    > //========================================================

    > // 바뀔때마다 데이터값을 화면에 보여준다...

    > //========================================================

    > procedure TCoordFrm.DataSource1DataChange(Sender: TObject; Field: TField);

    > begin

    > with Qry_Coord do begin

    > edt_me.text := FieldByName('s_no').AsString;

    > edt_name.text := FieldByName('s_name').AsString;

    > edt_gubncode1.text := FieldByName('s_sp1').AsString;

    > edt_gubncode2.text := FieldByName('s_sp2').AsString;

    > edt_gubncode3.text := FieldByName('s_sp3').AsString;

    > edt_sido.Text := FieldByName('si_name').AsString;

    > edt_gubn.Text := FieldByName('gu_name').AsString;

    > edt_dong.Text := FieldByName('dong_name').AsString;

    > edt_bungi1.text := FieldByName('s_bungi').AsString;

    > edt_bungi2.text := FieldByName('s_bungi1').AsString;

    > edt_phone.text := FieldByName('s_phone').AsString;

    > edt_coordX.text := InttoStr(FieldByName('s_x').AsInteger);

    > edt_coordY.text := InttoStr(FieldByName('s_y').AsInteger);

    > end;

    > end;

    > 이렇게 했습니다.

    >

    > 근데 문제는

    > EDatabaseError with message 'Qry_Coord:Field 'si_name' not found.

    > 라는 문구나 뜨네요..

    >

    > 그렇다고 DataSource1DataChange에 있는

    > si_name, gu_name, dong_name을 위에 select처럼 s_siid, s_guid, s_doid라고 하니깐

    > 그냥 코드번호가 나오네요...

    >

    > 어떻게 해야할지 막막합니다...

    >

    > 아시는분 답변 부탁드려요.. 꼭... ㅜ.ㅜ;;