,喂!你的Tadoconnection在那个模块上,是不是在TDataModule上!TForm是不是主窗口,他比你的TDataModule先创建,当然那时还没有创建Tadoconnection,当然要报错了!

解决方案 »

  1.   

    同意bluetrees的
    用ado的时候注意另外一点
    你不要用adoconnection.connectionString:=adoconnection.connectionString+...的方式,而是直接这么写adoconnection.connectionString:=...;
    下面是一个例子,它使用程序目录下的一个access数据库(和和,不要odbc,只要.exe和.mdb就行了),希望对一有帮助
    procedure TMainForm.FormCreate(Sender: TObject);
    var
     S:String;
    begin
    with ADOConnection do
    Begin
    Connected:=false;
    S:='Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data Source="'+ExtractFilePath(Application.ExeName);
    S:=S+'Student.mdb";Mode=Share Deny None;Extended Properties="";';
    S:=S+'Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;';
    S:=S+'Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;';
    S:=S+'Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don''t Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False';
    ConnectionString:=S;Connected:=true;
    End;
    ADODataSet.Active:=true;
    end;
      

  2.   

    可以在project中,改变启动的顺序。
    多谢BlueTrees(蜗牛),InsideDelphi(ID) 二位热心人了