Q&A

  • Query로 join후 Edit에 결과 데이타셋 저장...?
안녕하세요...

2개의 테이블을 조인하여 Query로 질의한 후 결과Set을 Edit에 뿌리려고 하는데

자꾸 에러가 발생합니다..

에러메세지는 Project Project_DS.exe raised exception class EDatabaseError with

Message 'Query2: Field CstmrID' not found'.

소스는..아래...



//테이블의 필드는 CstmrID(int) 외에는 전부 char형입니다..

procedure TForm1.Button1Click(Sender: TObject);

var

ls_cnt : Integer;

begin

with Query2 do begin

Close;

SQL.Clear;

SQL.Add(' SELECT * ');

SQL.Add(' FROM Customers AS a INNER JOIN Customers_Detail AS b ');

SQL.Add(' ON a.CstmrID = b.CstmrID ');

SQL.Add(' WHERE a.CstmrName = :v_nm ');

ParamByName('v_nm').AsString := Trim(Edit1.Text);

Open;



// 아래 부분에서 결과의 필드값이 조인하여 나왔으니 필드를 명확하게 하기위해

// a.CstmrID와 같이 해줘야 되는것 같은데.. 이부분도 설명좀 부탁합니다..

Edit2.Text := IntToStr(Query2.FieldByName('CstmrID').AsInteger); //Error

Edit3.Text := Query2.FieldByName('CstmrP').Value;

Edit4.Text := Query2.FieldByName('CstmrName').Value;

Edit5.Text := Query2.FieldByName('C_No').Value;

Edit6.Text := Query2.FieldByName('Tlphn').Value;

Edit7.Text := Query2.FieldByName('Fx').Value;

Edit8.Text := Query2.FieldByName('ZpCd').Value;

Edit9.Text := Query2.FieldByName('Sub_Adrss').Value;

Edit10.Text := Query2.FieldByName('C_Dscrptn').Value;

Edit11.Text := Query2.FieldByName('E_Mail').Value;

end;

ls_cnt := Query2.RecordCount;

if ls_cnt < 1 then

MessageBox(handle, '검색된 내용이 없습니다', '확 인', MB_OK or $0040)

else

PageControl1.ActivePageIndex := 1;

end;





1  COMMENTS
  • Profile
    j 2001.07.11 19:04


    제 생각엔 정확한 테이블 구조를 몰라서 그런데요



    지금 open시키려는 그 query2를 프로그램을 직접 실행시키지

    마시고, 일단 sql explore나 ms-sql의 query analyzer에서

    먼저 값들을 넣으시고 실행시켜 보시면,

    select문 자체가 바르게 작성이 되었는지 확인이 되시겠