本人通过TClientDataSet来更新数据库时,怎么就只能更新一条记录
当我更新两条记录时。出现“Cannot Perform this operation on a closed dataset”
客户端我是采用DCOM来联接RemoteDataModule
客户端代码如下:
procedure TForm1.Button2Click(Sender: TObject);
begin
  ClientDataSet1.Append; //添加记录
end;procedure TForm1.Button3Click(Sender: TObject);
begin  ClientDataSet1.Delete ;//删除记录end;
procedure TForm1.Button4Click(Sender: TObject);
//提交数据更新
begin
  ClientDataSet1.CheckBrowseMode();
  ClientDataSet1.ApplyUpdates(-1);
end;
服务端处理:
procedure TGP40CommData.ProProduceCostBeforeUpdateRecord(Sender: TObject;
  SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
  UpdateKind: TUpdateKind; var Applied: Boolean);
var str1:string;
begin
     //----分为插入、删除、更新改变记录---
     if UpdateKind = ukInsert then
        begin
           str1:='insert into ProduceCost (ProdID,StapID,StapAmount) values(';
           str1:=str1+''''+DeltaDS.FieldByName('ProdID').Text+''',';
           str1:=str1+''''+DeltaDS.FieldByName('StapID').Text+''',';
           str1:=str1+''''+DeltaDS.FieldByName('StapAmount').Text+''')';
        end;
     if UpdateKind=ukDelete then
        begin
           str1:='delete from ProduceCost where pcid='''+SourceDS.FieldByName('PCID').Text+''' ';
        end;
     if UpdateKind=ukModify then
        begin
           str1:='update ProduceCost set stapAmount=';
           str1:=str1+DeltaDS.FieldByName('stapamount').Text;
           str1:=str1+' where pcid = '''+SourceDS.FieldByName('pcid').Text+''' ';
        end;
         //ProduceCost.Close; //这句要不要都出现问题
     ProduceCost.SQL.Clear();
     ProduceCost.SQL.Add(str1);
     ProduceCost.ExecSQL;
         Applied:=true;
end;
不知道这样子用本来就是错的,还是另有原因,还请各位帮帮忙