Clientdataset1:cann't perform this operation on a close dataset!老是出这个问题!立马给分

一年 2003-11-24 10:44:43
用MIDAS编程,服务器用adoconnection\aqoquery\datasetporvider

客户端用socketconnection\clientdataset

执行一个UPDATA()操作,老出现这个问题,怎么解决啊?
...全文
72 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
一年 2003-11-24
  • 打赏
  • 举报
回复
to: del_c_sharp(武林中传说的啥也不会)

是的,我错了,这一句是多余的,执行前面的操作,后台已经更新!
del_c_sharp 2003-11-24
  • 打赏
  • 举报
回复
datamodulecc.CDStoMaintable.ApplyUpdates (5);
你想用这句做什么?

这句通常是把cds的delta提交服务器
一年 2003-11-24
  • 打赏
  • 举报
回复
老大们,帮一下忙呀!
hiflower 2003-11-24
  • 打赏
  • 举报
回复
CommandText 中是 SELECT 语句时,才能 OPEN,才能提交数据。

(三层中,在 CommandText 中写 SQL 语句不是好的设计,DataSetProvider 应当禁止客户端的 CommandText)
goldvale 2003-11-24
  • 打赏
  • 举报
回复
procedure TForm2.btn3Click(Sender: TObject);
begin
if not datamodulecc.CDStoMaintable.active then
begin
showmessage('找找原因,这里不应该是关闭的');
exit;
end;
atamodulecc.CDStoMaintable.ApplyUpdates (5);



end;
goldvale 2003-11-24
  • 打赏
  • 举报
回复
我想你提交'update maintable set weight=weight+'
+ext8.Text +'where pname='
+#39+cb1.text+#39;
后,服务器端的aqoquery的sql.text已经变这句了。可以输入出看一下。
如果改变了,问题就是这里了
一年 2003-11-24
  • 打赏
  • 举报
回复
上面复制错了,是这样的

procedure TForm2.btn3Click(Sender: TObject);
begin

datamodulecc.CDStoMaintable.ApplyUpdates (5);



end;
一年 2003-11-24
  • 打赏
  • 举报
回复
procedure TForm2.btn2Click(Sender: TObject);
var
sqlstrudmaintable:string;
begin
try
datamodulecc.SC.Connected :=true;
except
showmessage('无法联结服务器,请检查服务器是否开启:-)¤');
end;
datamodulecc.CDStoMaintable.Active :=false;
sqlstrudmaintable:='update maintable set weight=weight+'
+ext8.Text +'where pname='
+#39+cb1.text+#39;

with datamodulecc.CDStoMaintable do
begin
try
close;
commandtext:=sqlstrudmaintable;
execute;
//active:=true;
//open;

except
showmessage('出错了,嘿嘿');
end;



end;

end;

这一段没有什么问题!

但在
procedure TForm2.btn3Click(Sender: TObject);
begin

datamodulecc.CDStoMaintable.ApplyUpdates (5);

begin
active:=true;
ApplyUpdates(5);


end;

时,出以上问题!
hiflower 2003-11-24
  • 打赏
  • 举报
回复
ClientDataSet 未打开
LookFuture 2003-11-24
  • 打赏
  • 举报
回复
不知道你的UPDATA()函数怎么写的。
如果你用datasetporvider的ApplyUpdates(Delta, MaxError, Errors),应该就没有问题的。
Delta就是Clientdataset1.Delta,其他两个参数自己定义,可以看帮助。

还有一点,你的Clientdataset1是否获得过数据集,是否是通过datasetporvider获得的?自己确认一下
del_c_sharp 2003-11-24
  • 打赏
  • 举报
回复
你把服务器端的数据组件的active设为false后,看看效果
outer2000 2003-11-24
  • 打赏
  • 举报
回复
什么问题?
Allanlove 2003-11-24
  • 打赏
  • 举报
回复
是不是,Clientdataset1
已经打开了啊,在程序里动态打开试一试
把它的active 设为false

1,592

社区成员

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

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