안녕하세요. 주소 검색하는 부분에서 에러가 났습니다. ㅡㅡ;
폼 1에서 읍/면/동을 입력 후 검색 버튼 누르면 폼 2에서 like 검색으로 해당 주소들이 그리드에 나오고,
해당 주소를 선택하면 폼 1에 주소가 입력이 됩니다.
이렇게 한번은 성공했는데요..
문제는 폼1을 닫지 않은 상태에서 다시 읍/면/동을 검색하려고 하면
'access violation at address 00405999 in module 'P_Custom.exe'. Read of address 00000000 '
에러가 납니다.
DB는 paradox입니다.
소스를 보자면,,
//이 부분은 폼 1
procedure TForm1.bbt_sel_dongClick(Sender: TObject); //검색
begin
if (ed_dong.text = '') then
begin
showmessage('검색하려는 읍/면/동을 입력하세요!');
exit;
end;
if not(assigned(Form2)) then
Form2 := TForm2Create(nil);
Form2.Show;
end;
// 이 부분은 폼 2에서입니다.
procedure TForm2.FormShow(Sender: TObject);
begin
Query2.Close;
Query2.SQL.Text :=
'select zipcode, sido, gugun, dong, ri, bunji from zipcode where dong like :dong';
Query2.ParamByName('dong').AsString := Form1.ed_dong.Text + '%' ;
Query2.Open;
if( Query2.recordcount = 0 ) then
begin
showmessage('해당하는 읍/면/동이 없습니다.');
Close();
Form2.Free;
end;
end;
procedure TForm2.DBGrid2DblClick(Sender: TObject);
var
address: String;
begin
address := DBGrid2.Fields[1].AsString + ' ' +
DBGrid2.Fields[2].AsString + ' ' +
DBGrid2.Fields[3].AsString + ' ' +
DBGrid2.Fields[4].AsString;
Form1.ed_zipcode.Text := Query2.FieldByName('zipcode').AsString;
Form1.ed_juso1.Text := address;
Form1.ed_dong.Text := '';
Close();
Form2.Free;
end;
어디가 잘못됐는지 좀 봐주세요.. .
그리고 폼 1은 auto-create form이고 폼 2는 available form으로 설정되있습니다.
주소 가져오는 부분에서 더 좋은 방법 있으면 좀 알려주시면 감사하겠습니다.~
도와주세용~~
음...Form2를 닫으실때...
Form2.Free; 요놈뒤에
Form2 := Nil; <-- 요놈을 넣어주세요...
그럼 아마도 HAPPY해지시지 않을까 싶네요..^^