안녕하세요..
테이블 2개를 조인한 Query의 결과셋중에서 INT(CstmrID field)형을 Edit에 뿌리려고 하는데
에러가 출력됩니다.. 그리고 INT형을 INSERT할때도 변환과정이 필요합니다
소스는 아래에...
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;
end; //CstmrID가 INT형임
Edit2.Text := IntToStr(Query2.FieldByName('CstmrID').Value); //여기서 변환을
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;
ls_cnt := Query2.RecordCount;
if ls_cnt < 1 then
MessageBox(handle, '검색된 내용이 없습니다', '확 인', MB_OK or $0040)
else
PageControl1.ActivePageIndex := 1;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
with Query3 do begin
Close;
SQL.Clear;
SQL.Add(' INSERT INTO Customers_detail (d_Nm,D_Pstn,D_tel,D_E_mail, ');
SQL.Add(' CstrmID) VALUES( :v_d_Nm, :v_D_Pstn, :v_D_tel, ');
SQL.Add(' :v_D_E_mail, :v_CstmrID) ');
ParamByName('v_d_Nm').AsString := Trim(Edit12.Text);
ParamByName('v_D_Pstn').AsString := Trim(Edit13.Text);
ParamByName('v_D_tel').AsString := Trim(Edit14.Text);
ParamByName('v_D_E_mail').AsString := Trim(Edit15.Text);
ParamByName('v_cstmrID').AsString := Trim(Edit2.Text); //여기서 Error가
Open; // 발생할것 같은데?
end;
end;
end.
위의 소스를 어
윗 부분은 다음과 같이 변환하시면 되겠네요.
Edit2.Text := IntToStr(Query2.FieldByName('CstmrID').AsInteger);
또는
Edit2.Text := Query2.FieldByName('CstmrID').AsString;
두 문장이 거의 비슷하지만 필드의 값이 NULL일 때는 아마 차이가 날 겁니다.
첫 번째 문장은 NULL이더라도 0이 에디트 박스에 들어가고 2번째 문장은
에디트 박스에 아무 것도 안들어갈 겁니다.(맞나...)
> ParamByName('v_cstmrID').AsString := Trim(Edit2.Text);
위 문장의 에러는 Edit2.Text의 값이 '' 이거나 숫자가 아닐때 날 것 같은데요.
숫자인지 체크를 먼저 하심이 어떨지.
김대훈 wrote:
> 안녕하세요..
> 테이블 2개를 조인한 Query의 결과셋중에서 INT(CstmrID field)형을 Edit에 뿌리려고 하는데
> 에러가 출력됩니다.. 그리고 INT형을 INSERT할때도 변환과정이 필요합니다
> 소스는 아래에...
>
> 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;
> end; //CstmrID가 INT형임
> Edit2.Text := IntToStr(Query2.FieldByName('CstmrID').Value); //여기서 변환을
> 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;
>
> ls_cnt := Query2.RecordCount;
> if ls_cnt < 1 then
> MessageBox(handle, '검색된 내용이 없습니다', '확 인', MB_OK or $0040)
> else
> PageControl1.ActivePageIndex := 1;
> end;
>
> procedure TForm1.Button2Click(Sender: TObject);
> begin
> with Query3 do begin
> Close;
> SQL.Clear;
> SQL.Add(' INSERT INTO Customers_detail (d_Nm,D_Pstn,D_tel,D_E_mail, ');
> SQL.Add(' CstrmID) VALUES( :v_d_Nm, :v_D_Pstn, :v_D_tel, ');
> SQL.Add(' :v_D_E_mail, :v_CstmrID) ');
> ParamByName('v_d_Nm').AsString := Trim(Edit12.Text);
> ParamByName('v_D_Pstn').AsString := Trim(Edit13.Text);
> ParamByName('v_D_tel').AsString := Trim(Edit14.Text);
> ParamByName('v_D_E_mail').AsString := Trim(Edit15.Text);
> ParamByName('v_cstmrID').AsString := Trim(Edit2.Text); //여기서 Error가
> Open; // 발생할것 같은데?
> end;
> end;
>
> end.
>
> 위의 소스를 어