新建了一DataModule,放ADOConnection1和ADOQuery1
属性设置都正确但在别单元引用时
        DataModuleform.ADOQuery1.Close;
       DataModuleform.ADOQuery1.SQL.text:='Select id,name from product_class where len(id)=3';
        DataModuleform.ADOQuery1.Open;总出现如下错误
access viloation at adress 004acc53 in module 'ic_system.exe'.read of address 0000005c.

解决方案 »

  1.   

    DataModuleform 有没有做create操作啊..datamoduleform := TDataModuleForm.create(nil);
      

  2.   

    说明你在程序运行前也许DataModule都还没有创建,你可打开project->options->form标签,看看outo-createform 里是不是有DataModuleform你上面的错误是内存读写错误,
    说明你调用了没有创建的对象,或者对象在使用完毕后没有释放内存,然后下次又访问到了该地址。
    等等错误。
      

  3.   

    有啊!
    在project1 里面有
    Application.CreateForm(TDataModule2, DataModule2);
    project->options->form标签,outo-createform 里有DataModule2
      

  4.   

    DataModuleform 有没有做create操作啊..datamoduleform := TDataModuleForm.create(nil);
    --------------------------------------------------
    请问在哪个文件做create操作呢. 
    是在Datamobule里面还是在引用它的那个文件里面
      

  5.   

    来晚了,楼上的哥们都说了,我再罗嗦一下
    当form创建的时候,datamodule还没有创建,这就会产生错误,有几种解决办法
    1、像sf说的一样
    2、初始化代码写在onshow里面不要写在oncreate里面
      

  6.   

    改一下project1文件就OK啦! 把Application.CreateForm(TDataModule2, DataModule2);放在最前面
      

  7.   

    gas_lb521(一无所有) 说得对,我也是有这个现象,改了顺序就好了
      

  8.   

    datamodule要放在frmLogin或frmMain的前面创建就OK了