在用TClientDataset更新多条数据时,超过2条的更新就出现等待的死机现象
求解。

解决方案 »

  1.   

    在FORM.show时,就调出要修改的数据,代码如下:
        if Frm_SYSL_RLPF_BRN.Tbl.State in [dsedit,dsbrowse] then
        begin
          with CDS do
            begin
              close;
              commandtext:='select * from dmRationFeedDT where cRationID='''+Frm_SYSL_RLPF_BRN.Tbl.FieldByName('cRationID').AsString+''' and cclass=''¾«ÁÏ''';
              open;
            end;//end with
    在修改完后。
    就applyupdate(0);
    然后就到这步就死在那里不动了。
      

  2.   

    {...}
    在修改完后
    Post;    //加上試試
    ApplyUpdate(0);
      

  3.   

    你的代码里有更新语句吗?只是一个 Select 而已呀。
    你这种情况我以前也碰到过,我不知道你的的服务端是怎么写的,上次我就通过改服务端来解决这个问题的。
      

  4.   

    如果是 Select 语句用Open
    如果是 Update ,Insert等语句就要用 ExecSql 来执行...
      

  5.   

    TO:wychero(高天) 
    我用的是TBDEClientDataset.
    先用Select语句将要修改的记录都调出来(多条),然后在修改其中多条的数据
    最后用TBDEClientDataset.ApplyUpdate()提交修改。当然是多条记录同时提交。
    但只修改一条记录,就可以提交成功,但多条就不行。
    你怎样通过修改服务器端就解决了。
    望提示。
      

  6.   

    if Frm_SYSL_RLPF_BRN.Tbl.State in [dsedit,dsbrowse] then
    改为:
    if Frm_SYSL_RLPF_BRN.Tbl.State in [dsedit,dsInsert] then另外你的表是否设置了主键?
      

  7.   

    to:longtusoft(神灯之主) 
    Frm_SYSL_RLPF_BRN.Tbl这个是另外一个表的,我的表是主从结构
    CDS是从表,Tbl是主表,有主键,也就是说CDS是多条记录一起更新,同时也更新Tbl表。
    上面的代码只是更新CDS的记录。
      

  8.   

    你的服务端应该是用的 TQuery 和 TDataSetProvider 吧,说到这我要问一句你更新的表有没有 Trigger ,如果有你要考虑可能是 Trigger 原因。
    解决方法如下:TDataSetProvider.ResolveToDataSet:=True; 一般这样就可以解决你的问题了,如果还不行的话,那就改用 TUpdateSQL 方式来更新,自已写SQL语句。