//아래는 엑셀파일을 읽어서 파라독스로 디비화 하는 소스입니다.
//잘 되는데요... 마지막 일때 Except 로 빠지지 않고에러 멧세지를 뿌립니다.
"Either BoF or EoF is True, or the Current Record has been Deleted.
Requested Operation Requires a Current Record"
이런 에러가 납니다. 어찌하면 마지막 레코드 처리하고 에러없이 잘 끝낼수 있을까요?
참고로 컴에 있는 Excel은 Excel 2000 입니다.
begin
fname := '';
fname := ac_fname.Text+ '$';
try
Excel := CreateOleObject('Excel.Application');
Except
on EOleError do Exit;
end;
try
with ADOQuery1 do begin
Close;
ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' +
OpenDialog1.FileName +
';Extended Properties=Excel 8.0;Persist Security Info=False';
SQL.Clear;
SQL.Text := 'Select * From ['+fname+']';
Open;
end;
Except
Excel.Quit;
Excel := unassigned;
RuningF.Close;
Showmessage('Excel 파일을 찿을 수 없습니다.');
Exit;
end;
with ADOQuery1 do begin
First;
while not Eof do begin
RuningF.ProgressBar1.Position := RuningF.ProgressBar1.Position + sizeof(1);
clcd := Trim(Fields[0].DisplayText);
with TABLE1 do begin
Insert;
FieldByName('ad_clcd').asstring := clcd;
FieldByName('ad_clnm').asString := Trim(ADOQuery1.Fields[1].DisplayText);
Post;
end;
try
ADOQuery1.Next;
except
end;
end;
end;
Excel.Quit;
Excel := unassigned;
ADOQuery1.Close; ==============>요기서 에러납니다.
end;
에러메시지로 봐서는 eof 일때는 close를 못하겠다는 것 같습니다.
close를 하기 바로 전에 ADOQuery1.Prior 나 ADOQuery.First 같은 것으로
에러를 피해보시면 어떨까요... 별로 도움이 안될것 같구요...
코딩 자체는 원래는 잘 수행돼야 할 것 같습니다...
--------------------------------------------------------------------