请问在三层中,更新一个表用如下方法出现错误,如何解决?

lpc444 2006-04-09 10:01:14
请问在三层中,更新一个表用如下方法出现错误,如何解决?
DM.CDS_update.Edit;
//DM.CDS_update.IndexName := '';
DM.CDS_update.Close;
DM.CDS_update.CommandText:=k:='update fenbu set 人数=55';
//DM.CDS_random.Post;
DM.CDS_update.ApplyUpdates(0);

运行时错误提示:
CDS_update Cannot perform this operation on a closed dataset.

服务器端的P_update: TDataSetProvider是否需要设置什么属性?
...全文
175 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
msdzwd 2006-04-10
  • 打赏
  • 举报
回复
哦!楼上说的对!
DM.CDS_update.Close;
DM.CDS_update.CommandText:='update fenbu set 人数=55';
DM.CDS_update.Execute;
lpc444 2006-04-10
  • 打赏
  • 举报
回复
多谢msdzwd(东东) cncharles(旺仔) Tensionli()
但你们的方法还是不行,

解决了---在服务器端写
Tensionli 2006-04-10
  • 打赏
  • 举报
回复
方法有问题吧,对于insert,update,delete等不返回数据集的SQL语句应该使用execute,对于需要返回数据集的SQL语句,select ...才使用open;
lpc444 2006-04-09
  • 打赏
  • 举报
回复
而这个能通过:
DM.CDS_update.Close;
DM.CDS_update.CommandText:='select * from fenbu';
DM.CDS_update.Open;
lpc444 2006-04-09
  • 打赏
  • 举报
回复
刚才错了一行
这句DM.CDS_update.CommandText:=k:='update fenbu set 人数=55';
应为:DM.CDS_update.CommandText:='update fenbu set 人数=55';

但是这样
DM.CDS_update.Close;
DM.CDS_update.CommandText:='update fenbu set 人数=55';
DM.CDS_update.Open;
//DM.CDS_random.Post;
DM.CDS_update.ApplyUpdates(0);
也不行,它提示:CommandText does not return a reasult set.
msdzwd 2006-04-09
  • 打赏
  • 举报
回复
DM.CDS_update.Close;
DM.CDS_update.CommandText:=k:='update fenbu set 人数=55';
DM.CDS_update.Open;
//DM.CDS_random.Post;
DM.CDS_update.ApplyUpdates(0);
楼主这样改下看行吗?
cncharles 2006-04-09
  • 打赏
  • 举报
回复
有UPDATE,INSERT, DELETE语句只能用ClientDataSet的Excute方法.

lpc444 2006-04-09
  • 打赏
  • 举报
回复
请指教,多谢!

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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