你最好检查一下,你的ADOConnection连接数据库是否成功.就是‘ADOConnection.Connected := true;’这一句是否执行成功。

解决方案 »

  1.   

    Connection设为DateModule2.ADOConnection???
      

  2.   

    问题是我把代码写到Unit1中,就正确了,我觉得奇怪。不应该是那句出错吧
      

  3.   

    to Snakeguo(楠) (莫等闲&up2myself)就是ADOQuery控件中的Connection属性
      

  4.   

    Unit1中的代码如下:procedure TFrmMain.FormCreate(Sender: TObject);
    begin
    //开始加载树型菜单
      //第一层菜单
      YearQuery.Close;
      YearQuery.SQL.Clear;
      YearQuery.SQL.Text:='select * from diary_year';
      YearQuery.Open;
      while not YearQuery.Eof do
        begin
         OneNode := Treeview1.Items.Add(nil,inttostr(YearQuery.fieldbyname('diary_year').Value));
         YearQuery.Next;
        end;
    end;
      

  5.   

    因为unit中虽然指定了Connection设为DateModule.ADOConnection,但实际上unit2的TDataModule2.DataModuleCreate并没有执行,如果硬是要加入unit2
    ,建议上述代码写到unit2的oncreat()事件中
      

  6.   

    把DataModule2和在启动窗口放在一起
    Option里设置
      

  7.   

    to Black(小熊) 我是写到了Unit2中的oncreate()事件中去了procedure TDataModule2.DataModuleCreate(Sender: TObject);
    to IceXie() 这方法不行啊
      

  8.   

    ADOQuery控件的Connection是自动找到的,还是你自己硬写的?
      

  9.   

    是自动找到的,因为我在Unit1中uses了Unit2
      

  10.   

    自动找到的在Unit1中uses了Unit2
      

  11.   

    你把ADOConnection的联接做成一个函数放到数据模块里,
    使用的时候再用'DM.你编的联接数据源函数'就可以了
      

  12.   

    你把ADOConnection的联接做成一个函数放到数据模块里,
    使用的时候再用'DM.你编的联接数据源函数'就可以了
      

  13.   

    你把ADOConnection的联接做成一个函数放到数据模块里,
    使用的时候再用'DM.你编的联接数据源函数'就可以了
      

  14.   

    问题已经解决,原因是我调用Unit1先于Unit2,这样造成了DateModule里面代码没有执行,结果ADOQuery里面的Connection属性出错。
    改为:  Application.CreateForm(TDataModule2, DataModule2);
      Application.CreateForm(TFrmMain, FrmMain);