with dmClient.cdsPatientOut do
  begin
    Close;
    Params[0].AsDateTime:=Date;
    Params[1].AsDateTime:=Date;
    Execute;
  end;cdsPatientOut的CommandText:=Select * from Patient where EnterDate>:BeginDateTime and EnterDate<:EndDateTime,运行时说不能在打开的数据集上进行这个操作用Open和Execute都不行。

解决方案 »

  1.   

    服务器端的ADOquery 或者ADOtabel 要始终出于关闭状态。
      

  2.   

    看错- -
    应该是先把ClientDataSet close再操作CommandText
      

  3.   

    dmClient.Filter := '';
    dmClient.Fitered := true;
    这样来控制比较好吧
      

  4.   

    可能服务器端没有开启,也可能cdsPatientOut没有连接上服务器端。
      

  5.   

    CommandText是界面设计的时候写进去的,代码里已经关闭数据集了啊...
      

  6.   

    1、保证服务器端的DataSetProvider的Options设置poAllowCommandText为TRUE;
    2、设置好客户端的控件属性
    3、procedure TForm1.Button1Click(Sender: TObject);
    begin
      ClientDataSet1.Close;
      ClientDataSet1.CommandText:='select * from p1 where p1f1=:t';
      ClientDataSet1.Params.ParamByName('t').Value:=Trim(edit1.text);
      ClientDataSet1.Open;
    end;
      

  7.   

    原因是设计期不小心把Server端对应数据集控件设置成了Active....
    取消就没问题了...