客户端通过ClientDataSet的CommandText可以向中间层发送SQL语句执行并返回结果
我的语句如下,为什么会出错?
begin
  with ClientDataSet1 do
  begin
    if Active then
      Close;
    CommandText := 'select * from stocktypes 
                              where c_exchange    = :c_exchange';
    Open;
  end;问题是,第一次执行时没有问题,可以返回查询结果;但第二次执行时就出现下面的提示错误:“...出错Bof, Eof有一个为真,或当前记录被删除, ......”
不知是什么原因??

解决方案 »

  1.   

    设定服务端的DataSetProvider的OPtions的poAllowCommandText为True
      

  2.   

    同意redwh(如果我想飞) 的观点
      

  3.   

    同意 redwh(如果我想飞) 的观点
      

  4.   

    更正一下,上面出现的错误提示是“…Could not find object,…”,我很奇怪第一次没有问题,第二次再运行时就出错,是否要清空什么东西??而当我用的是ADO连时,一次都运行不了,就出现“Bof, eof为真,或当前记录已被删除的”提示??我用DataRequest提交查询却没有问题!
      

  5.   

    我以前遇到同样的问题,现在已经解决了
    [email protected]
      

  6.   

    还是不行,第二次执行时报错“ADOQuery: can not perform the operation on an open dataset "
    //程序如下:
      with  ClientDataSet1 do
      begin
        if Active then
          Close;
        CommandText := 'Select * from runbase..funds';
        Open;
      end;想问一下, ClientDataSet的Close对中间层服务器有什么影响,会触发中间层服务器的哪些操作呢??
      

  7.   

    问题已经解决,原因是我自定义的方法动态改变了ADOQuery的SQL语句,并进行了操作,所以再用commandText时出错了!