我在两个form中共用一个ADOConnection,两个form同时可以打开数据库,但是在关闭一个form的时候就报错,并且退出程序。
procedure TFrm1.BtnExitClick(Sender: TObject);
begin
  ADODataSet1.Close;
  ADODataSet1.Free;
  Frm1.Close;
  Frm1.Free;
end;

解决方案 »

  1.   

    把ADOConnection 放在DataModule 中.如果放在Frm1中,Frm1.Free之后ADOConnection也就Free了.
      

  2.   

    procedure TFrm1.BtnExitClick(Sender: TObject);
    begin
      if ADODataSet1.Active then
      begin
        ADODataSet1.Close;
        ADODataSet1.Free;
      end;
      Frm1.Close;
      Frm1.Free;
    end;
      

  3.   

    我是在form1中定义了一个ADOConnection ,然后在form2中也定义了一个ADOConnection  
    在form1调用form2的时候
      Form2 := TForm2.Create(self);
      Form2.ADOCnnt := Form1.ADOConnection;
      Form2.Show;
    在关闭form2的时候出错的
      

  4.   

    改为:
      Form2 := TForm2.Create(Application);
      Form2.ADOCnnt := Form1.ADOConnection;
      Form2.Show;
      

  5.   

    为什么要FREE Adodataset 呢?
    你自己FREE一下,又没有他置为NIL;FORM CLOSE时又自动FREE一下,于是就出错了.
    自己想的,可能不是这个原因.