Q&A

  • 엑셀디비화 시 Error...
//아래는 엑셀파일을 읽어서 파라독스로 디비화 하는 소스입니다.
//잘 되는데요... 마지막 일때 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;
1  COMMENTS
  • Profile
    날라리 2003.10.23 01:38
    ADOQuery를 안써봐서 자세히는 모르겠지만
    에러메시지로 봐서는 eof 일때는 close를 못하겠다는 것 같습니다.
    close를 하기 바로 전에 ADOQuery1.Prior 나 ADOQuery.First 같은 것으로
    에러를 피해보시면 어떨까요... 별로 도움이 안될것 같구요...

    코딩 자체는 원래는 잘 수행돼야 할 것 같습니다...

    --------------------------------------------------------------------