请教大虾:
  我用ADO访问oracle9i,退出后出现异常;而改成访问access却没有异常。
当我执行ButtonAccess后,关闭FORM,则正常退出。当我执行ButtonOra时,关闭FORM,则报异常。请高手指教。原码如下:unit UnitFormMain;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,adodb, StdCtrls, DB,ADOInt, Grids, DBGrids,ComObj;type
  TForm1 = class(TForm)
    ButtonOra: TButton;
    ButtonAccess: TButton;
    procedure ButtonOraClick(Sender: TObject);
    procedure ButtonAccessClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.ButtonOraClick(Sender: TObject);
var
  objRec : adodb._recordset;
  objConn : adodb._Connection;
  strSql : string;
begin
  objConn := adodb._connection(CreateOleObject('ADODB.CONNECTION'));
  objRec := AdoDb._Recordset(CreateOleObject('ADODB.RECORDSET'));
  objConn.Open('Provider=MSDAORA.1;Password=tiger;User ID=scott;
      Data  Source=ora;Persist Security Info=True','','',
      adConnectUnspecified);
  objRec.LockType := adLockReadOnly;
  objRec.CursorLocation := adOpenStatic;  strSql := 'select * from tab';  objrec.Open(strSql,objConn,adOpenStatic,adLockReadOnly,0);  AdoDataset1.Recordset := objRec;
  AdoDataset1.Active := true;  objConn := nil;
  objRec := nil;
end;procedure TForm1.ButtonAccessClick(Sender: TObject);
var
  objRec : adodb._recordset;
  objConn : adodb._Connection;
  strSql : string;
begin
  objConn := adodb._connection(CreateOleObject('ADODB.CONNECTION'));
  objRec := AdoDb._Recordset(CreateOleObject('ADODB.RECORDSET'));
  objConn.Open('Driver={Microsoft Access Driver     
       (*.mdb)};DBQ=c:\visualtopo\xian','','',
       adConnectUnspecified);  strSql := 'select * from sbb';  objrec.Open(strSql,objConn,adOpenStatic,adLockOptimistic,MB_OKCANCEL);
/// ......
  objConn := nil;
  objRec := nil;
end;end.

解决方案 »

  1.   

    objconn.close;
    objrec.close;
    freeandnil(objConn);
    freeandnil(objRec);
    看看这样可以吗?
      

  2.   

    先关闭两个原生对象
    objrec.close;
    objconn.close;
    然后再释放!!
      

  3.   

    也可以成(你出错的代码:)
      objRec := nil;
      objConn := nil;
      

  4.   

    To outer2000(天外流星)  and  Erice(白雪公猪) :
       执行FreeAndNil 时,就出错!
       另:我拷上代码时,弄错了,原代码是:
          objRec := nil;
          objConn := nil;请高手指教!