请教DatasetProvider

suton 2003-09-09 04:59:01
在无状态模式下,设置DatasetProvider的allowcommandtext=true
然后在客户端动态改变ClientDataSet的commandText,使用不同的sql语句取得数据。

问题是:为什么第一次赋给一条语句,可以执行得到结果,第二次就不行了?
错误提示是:Can not perform this operation on an open dataset!

如果我在第二次的时候,也是先close,然后,把和第一次同样的语句赋给clientdataset的commandtext去open,没有任何错误。

thanks a lot 先!
...全文
140 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
michaelpeng7799 2003-09-11
  • 打赏
  • 举报
回复
Kao又是把sql写到cds.CommandText。
samcrm 2003-09-10
  • 打赏
  • 举报
回复
if ClientDataSet1.Active then ClientDataSet1.Active:=False;
ClientDataSet1.CommandText:='select * from xxxx';
ClientDataSet1.Active:=True;

屡试屡爽,某问题的啦。
leapmars 2003-09-09
  • 打赏
  • 举报
回复
要关闭中间层中和 DataSetProvider 相连的 DataSet。
vchoushen6 2003-09-09
  • 打赏
  • 举报
回复
你这是前台报的错,还是后台报的错啊。
无论是前台还是后台改变CommandText时,都必须先关闭它所在的记录集.
suton 2003-09-09
  • 打赏
  • 举报
回复
呵呵,再次active:=true之前,按习惯肯定会close的,所以问题不在此。

我的代码如下:
procedure TpurchaseCo.dspDs1BeforeGetRecords(Sender: TObject;
var OwnerData: OleVariant);
begin

with Sender as TDataSetProvider do
begin
if not DataSet.Active then
DataSet.Active:=True;
if not (VarIsEmpty(OwnerData) or VarIsNull(OwnerData)) then
DataSet.Locate(DataSet.Fields[0].FieldName,OwnerData,[])
else DataSet.First ;
end;



end;

procedure TForm1.cdsMasBeforeGetRecords(Sender: TObject;
var OwnerData: OleVariant);
var
LastValue: OleVariant;
CDSClone:TClientDataSet;
begin
if cdsMas.Active then
begin
CDSClone := TClientDataSet.Create(nil);
try
CDSClone.CloneCursor(cdsMas, True);
CDSClone.FetchOnDemand := False;
CDSClone.Last;
LastValue := CDSClone.Fields[0].AsString;
CDSClone.Close;
finally
CDSClone.Free;
end;
end else
LastValue:=null;

OwnerData := LastValue;

end;
tiexinliu 2003-09-09
  • 打赏
  • 举报
回复
ClientDataSet的commandtext变动前先关闭,是必须做的.
rwdx 2003-09-09
  • 打赏
  • 举报
回复
给commandText赋值前一定要先执行close 或是确定已经关闭
rwdx 2003-09-09
  • 打赏
  • 举报
回复
给commandText赋值前一定要先执行close
  • 打赏
  • 举报
回复
不可能把
把你的代码贴出来看看
  • 打赏
  • 举报
回复
不可能把
把你的代码贴出来看看
suton 2003-09-09
  • 打赏
  • 举报
回复
痛苦了一天了,在线等待!!!
suton 2003-09-09
  • 打赏
  • 举报
回复
此错误提示是在中间层出现的异常,所以怀疑是DataSetProvider的问题。

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧