为了测试我把这个事件的代码砍去了一大截,好像在BitButton里面操作数据库就好会出现异常。
procedure TloginForm.BitBtn2Click(Sender: TObject);
begin
   with dataModule.DataModule1.ClientDataSet1 do
      begin
        close;//每次在这里就出现异常(use step over)
        //CommandText:='select * from operator where oprtid='+edit1.Text;
      end;
end;
出现的异常:
Project xxxx raised exception class EAccessViolation with message 'zzzzzz'.Process stopped.  Use Step or Run to continue.

解决方案 »

  1.   


    begin       FreeAndNil(FormX); //FormX 为登陆后的主窗体,还不行就多Free几个窗体
           close;//每次在这里就出现异常(use step over)
            //CommandText:='select * from operator where oprtid='+edit1.Text;
    end;
      

  2.   

    还有
    如果在其他非这主窗体关闭程序时用loginForm.close or Application.Terminate;
      

  3.   

    我想楼上的兄台是误会我的意思了。我这段代码是登陆验证的form,是操作数据库的。三层架构中的客户端数据集ClientDataSet1。这段代码在别的页面都可以正常运行,但在这里老出现上述异常。
      

  4.   

    设置cds连的哪个 DataSetProvider1 的Options 的 poAllowCommandText 为true就可
      

  5.   

    还有检查 dataModule 有没有创建???
    if not assigned(dataModule) then
     showMessage('xxx');
      

  6.   

    楼上的,‘设置cds连的哪个 DataSetProvider1 的Options 的 poAllowCommandText 为true就可‘-----这个一直都为true
    '我在FormActivate 里面加入下面代码,出现信息框。if not assigned(dataModule1) then
     showMessage('xxx');‘dataModule已经创建。上面的EAccessViolation异常到底是什么意思?一般什么时候才会出现?50分,究竟花开那家,我们拭目以待!
      

  7.   

    好像只要出现DataModule1.ClientDataSet1就产生此异常。
    我让bitButton事件里面只有这行代码
    DataModule1.ClientDataSet1.Active:=true
    这也出现异常(执行后按此按钮。去掉后就没有异常了。这是怎么回事?
      

  8.   

    dataModule.DataModule1.ClientDataSet1.Active:=true
    这个打点都有东西出现呀,怎么会没有创建或已经释放?
      

  9.   

    你看看主unit里面有没有一些还没打开但已经creat的application。
      

  10.   

    可能有哦,我这个是登录页面,登录后进入主页面。主页面的菜单里面又有很多showmodal出来的页面。
    这个有关系吗?
      

  11.   

    我已经用File->Use Unit用到了datamodule单元呀?我已经创建好了吧。难道非要登录到主页面才能自己创建?
    dataModule单元有控件DComConnection\ClientDataset。它应该比这个登录页先创建吧?否则的话估计就会出现上面的异常。有什么办法吗?
      

  12.   

    为了回报各位CSDN友,本人决定再放100分。到时候我会在这个帖子里通知几个主要回答人去另外一个帖子领分。不过先要解决这个问题先呀。
      

  13.   

    同意aiirii(ari-爱的眼睛) 的看法,你还是先做一下断言再说!
      

  14.   

    初步估计是在创建本登录页面的时候datamodule还没有建立,所以才会出现EAccessViolation异常,用到它但它没有创建,空的。请问这有什么好的解决办法吗?我要在登录页面中判断口令是否正确就必须要用到datamodule来访问数据库呀。
      

  15.   

    加分贴(100分)http://expert.csdn.net/Expert/topic/2958/2958240.xml?temp=.8589594
      

  16.   

    能否先创建主窗口,和数据窗口,然后让主窗口hide,之后弹出验证窗口,校验成功后现实主窗口!