我建了一個data module ﹐內含一些ado 控件...
然后在我的登入畫面的onshow 中將用戶讀出 ﹐寫入combo 控件內 ﹐代碼如下﹕
procedure Tfrm_login.FormShow(Sender: TObject);
begin
  DMODULE.ADOQuery.SQL.Clear ;{注﹕運行到此處出錯}
  dMODule.ADOQuery.SQL.Add('select use_id from dbo.[user]') ;
  dmodule.ADOQuery.Open ;
  while not dmodule.ADOQuery.Eof do
    begin
        combobox1.AddItem(dmodule.ADOQuery.FieldValues['use_id'],sender);
        dmodule.ADOQuery.MoveBy(1) ;
    end;
end注:dmodule 為數據模板名﹐已加入該表單中.當程序運行到該處理報錯為﹕project myprj.exe raised exception class eaccessviolation with message 'access violation
 as address 00490E53' in module 'myprj.exe' ,read of address '0000005C' process stopped 
use  step or run to continue .不知何故﹐請高手解決附﹕  暫無分﹐﹐﹐明天我會補分的。

解决方案 »

  1.   

    首先:确认你的ADOQuery是否连接到你需要的数据库。DMODULE.ADOQuery.Close;
    DMODULE.ADOQuery.SQL.Clear ;{注﹕運行到此處出錯}
      dMODule.ADOQuery.SQL.Add('select use_id from dbo.[user]') ;
      dmodule.ADOQuery.Open ;
      while not dmodule.ADOQuery.Eof do
        begin
            combobox1.Items.Add(dmodule.ADOQueryFieldByName('use_id').AsString);
            dmodule.ADOQuery.Next ;
        end;
      

  2.   

    回復﹗
    加上dmoule.adoquery.close ;
    后﹐運行到此句也出錯不知何故。thanks!
      

  3.   

    同意 kevin_wzh(kevin) 
    你的DMODULE模块中有 TADOCONNECTION控件吗,设置ADOQUERY 的CONNECTION 到ADOCONNECTION 控件,或者在运行时设置 ADOQUERY.CONNECTION := ADOCONNETION;
    然后在使用查询.
      

  4.   

    回復樓上﹗該adoconnection 控件存在。其余控件共用廬聯接。。
      

  5.   

    可能是某个对象还为空,也就是只定义了但还没有建立实体,可能是DMODULE,也可能是ADOQuery,...
    比如如下的就会出这样的错误的:
    procedure TForm1.FormShow(Sender: TObject);
    var
      quy:TADOquery;
    begin
      quy.close;   //这句必定出错,和楼主的错误提示差不多的.
      ...
    end;
      

  6.   

    回复楼上﹗对于窗体类定义变量后需调用create产生实体﹐难道tadoquery ﹐卖明变量后还需要调用creae语句﹐有点不懂﹐ 应该是定义变量时﹐会自动运行该类的构造造函数来产生变量实体的啊请教 ﹕应如何产生该tadoquery 类的实体﹐ 是不是每个类定义变量后都还需调用create 来产生变量实体﹐﹐如何不是﹐如何来判断一个类定义了变量后﹐还要通过create来产生实例 ..
    急请高手解答....
      

  7.   

    procedure Tfrm_login.FormShow(Sender: TObject);
    begin
      with DMODULE.ADOQuery do
      begin
        Close;
        SQL.Clear;
        SQL.Add('select use_id from dbo.[user]');
        Open;
        while not Eof do
        begin
          combobox1.Items.Add(FieldByName('use_id').AsString);
          Next;
        end 
      end;
    end;
      

  8.   

    有可能并不是那句出错了,有可能是oncreate中某个地方有问题!
    建议你单步执行一下,看看究竟出在哪里!
      

  9.   

    回復樓上﹕確認一下﹐﹐我在數據模板中放了一些ado控件, 在其它表單調用時,是不是只需在uses 中加入即可使用﹐不需求調用creae 吧﹐就像基本變量一樣 。。
      

  10.   

    那你单独放一个在窗体里试下看会不会出现此问题!我也并不是说就一定会是在oncreate中,只是说有时候错误是相关连的