解决方案 »

  1.   

    这个方法运行很奇怪啊,程序中如果第一次调用(连续执行几次不同ASQLStr的调用),能成功执行.
    然后在后面(其它窗口),再执行这个方法时,就提示错误了,
    //----------------------------------------------------------------------------------------------
    如果不是多线程用一个连接的话,应该没问题。另外,客户端代码有问题:try
         if dr <> nil then
         begin
         end;
       finally  //dr=nil 的,也dr.free??
         dr.Free;
       end;
      

  2.   

    另外, server方法 的 dbxcommand没有释放!
      

  3.   


    关于这个释放的问题,也纠结了好久,上次就发过一个贴了.服务端方法如果返回DBXReader的,DBXCommand不能释放,不管是用TComponent,还是TDataModule,还是TDSServerModule,释放了就错.
    客户端的DBXReader也不能释放,如果释放了,当客户端退出程序时,就会造成FreeInstance错误.
      

  4.   

    总算解决了问题,是自己想当然了我在程序初始化时,这样写:
        Application.CreateForm(TfrmClientMain, frmClientMain);
        Application.CreateForm(TdmClientModule, dmClientModule);
        //ProcSystemInit;  //千万别在这里调用服务端方法!!!
        Application.Run;ProcSystemInit里调用了一些存放在数据库里的配置参数,调用了GetDataR(),这里调用本身没错,但是,程序运行后,如果再次调用这个GetDataR(),执行到FGetDataRCommand.ExecuteUpdate时就发生错误........
    纠结的是另一台win8电脑上没有这个问题...........
    最后偶然试下,在frmClientMain的Show事件里调用,OK了,虽然还没搞明白为什么