TClientDataSet用ApplyUpdates不能保存数据!(100)

  • 主题发起人 主题发起人 々^丫y
  • 开始时间 开始时间

々^丫y

Unregistered / Unconfirmed
GUEST, unregistred user!
问题描述:新增一条数据 DT.ReadOnly:=false;
if not (DT.State in [dsInsert, dsEdit]) then
DT.Insert;保存 DT.ReadOnly:=False;
if DT.State in [dsInsert, dsEdit] then
DT.Post;
Showmessage(IntToStr(DT.ChangeCount));//这里打印出来为1,那就表示数据已经在DT更新了的 DT.ApplyUpdates(0);//但提交服务器后没处理,保存不上 Showmessage(IntToStr(DT.ChangeCount));//这列又显示1,保存尚了这里应该是0 DT.ReadOnly:=true;注:其它地方也是这样操作数据,没有任何影响,就这个模块出现问题。实在不明白。请高手指点,说是在服务器端Provid中的BeforeUpdateRecord要不要加一句,把客户端以及服务器端SQL一致?我也不知道怎么加?因为其他的模块这样使用时好的实在百思不得其解请高手指点
 
这需要看你的clientdataset的设置,以及服务端的设置。先写一个事件,看看错误原因吧。procedure TForm1.ClientDataSet1PostError(DataSet: TDataSet;
E: EDatabaseError;
var Action: TDataAction);
begin
showmessage(E.Message)end;
 
DT.ApplyUpdates(0改为-1试一下)
 
2楼的,没报错!就是没提交到服务器处理保存。3楼的,-1,0只是一个编译时候执行方式-1避免一切的SQL错误继续执行0一旦有错误就立即停止-1,0没任何影响!
 
刚才说错了,应该是OnReconcileError事件中查看。
 
设置有问题
 
我自己已经解决了,呵呵,是一个连接问题,2个DT同时连接同一个数据库提供者。造成冲突。用捕获错误方式能捕获出来
 
后退
顶部