안녕하세요...
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;
제 생각엔 정확한 테이블 구조를 몰라서 그런데요
지금 open시키려는 그 query2를 프로그램을 직접 실행시키지
마시고, 일단 sql explore나 ms-sql의 query analyzer에서
먼저 값들을 넣으시고 실행시켜 보시면,
select문 자체가 바르게 작성이 되었는지 확인이 되시겠