又一段代码是这样的:
procedure TForm3.BitBtn1Click(Sender: TObject);
begin
   dm.SCK.Connected :=true;
   dm.CDSdelta.Active :=true;   with dm.CDSdelta  do
   begin
   APPEND;
   fieldvalues['number']:=edit1.Text;
   fieldvalues['name']:=edit2.Text;
   post;
   edit1.Text :='';
   edit2.Text :='';
   end;
   dm.CDSdelta.Data:=dm.CDSdelta.Delta;//把DELTA之值传给clientdataseT的DATA
end;
procedure TForm3.BitBtn2Click(Sender: TObject);
begin
dm.CDSdelta.ApplyUpdates(5);
dm.DataSource1.Enabled :=false;
bitbtn2.Enabled :=false;
end;
 
我的BitBtn1只能按一次,按第二次就出错,提示"Operation not application."试了好多的方法,不能解决,我该怎么办?

解决方案 »

  1.   

    你这一句的目的是什么?
    {
    dm.CDSdelta.Data:=dm.CDSdelta.Delta;//把DELTA之值传给clientdataseT的DATA
    }
      

  2.   

    这一句是把DELTA的内容传给DATA,我把一个DBgrid与这个Clientdataset相关联了,让它显示已输入的内容,我可以检查有没有输入错误,好修改之!
      

  3.   

    你这样看看:
    procedure TForm3.BitBtn1Click(Sender: TObject);
    begin
       dm.SCK.Connected :=true;
       with dm.CDSdelta  do
       begin
         open;
         APPEND;
         fieldvalues['number']:=edit1.Text;
         fieldvalues['name']:=edit2.Text;
         post;
         Data:=Delta;
         ApplyUpdates(5);
         close;
       end;
       edit1.Text :='';
       edit2.Text :='';
    end;
      

  4.   

    “我把一个DBgrid与这个Clientdataset相关联了,让它显示已输入的内容,我可以检查有没有输入错误,好修改之!”
    这样你最好另外用一个临时的ClientDataSet(cdsTemp),
    dm.CDSdelta.Data:=dm.CDSdelta.Delta;--》dm.CDSTemp.Data:=dm.CDSdelta.Delta;//
    让cdsTemp与DbGrid相关联,显示完后将cdsTemp关闭。因为我觉得,你的这一句dm.CDSdelta.Data:=dm.CDSdelta.Delta;改变了CDSdelta本来的Data
      

  5.   

    你说的的正确,的确是改了原来的DATA的内容,但是我如果""CDSdelta.Delta传给另外一个数据集"",我虽然能在DBGRID看到我的内容,却达不到修改的目的,是吗?
      

  6.   

    你这本身就是矛盾啊,因为有了
    dm.CDSdelta.Data:=dm.CDSdelta.Delta;
    又post;了,
    后来肯定还要ApplyUpdates();
    又想能在DBGRID看到内容,且修改,你想想这结果,数据库里的数据还能对吗?
      

  7.   

    第二次dm.CDSdelta.Delta为空,出错
      

  8.   

    To: boy2002() 怎么解决之......?