假如建立了data module窗体,名为DM,加入了数据访问组件。
然后我在其它窗体中作调用:
如:  DM.Query1.close;
等,系统就报错,为何?
报错内容:
‘access violation at adress 004a2803 in modules 'datamodule.exe'peocess stoped’

解决方案 »

  1.   

    可能是类没有被实例化,检查一下 DM 中的是否全部都 Create 了,包括 DM 自己。
      

  2.   

    ---------------------------
    以下是完整的报错内容---------------------------
    Project datamodules.exe raised exception class EAccessViolation with message 'Access violation at address 004A2803 in module 'datamodules.exe'. Read of address 0000005C'. Process stopped. Use Step or Run to continue.
    ---------------------------
    另外,怎样检查是否create?谢谢!!
      

  3.   

    DM.Query1给了Connection 了吗?
      

  4.   

    我知道你这个错误的原因了,用菜单project->view source打开工程的代码,把如下代码改一改:
    begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.CreateForm(TDataModule2, DataModule2);
      Application.Run;
    end.改成:
    begin
      Application.Initialize;
      Application.CreateForm(TDataModule2, DataModule2);  
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end.
    注:也就是说,在一个工程中,尽量把datamodule的create放到第一个位置,因为只有这样,才会使写在如form1的create事件的DM.Query1.close;语句不会出错,否则的话,对象还没有创建,就去调用它,能不出错吗?