我的TTable已经调用了append方法了,仍然不能修改记录,什么原因啊,运行时提示错误“Score:DataSet not in edit or insert mode”
while not data.qryScore.Eof do
  with  data.qryScore do
  begin
    data.Score.Open;
    if  not data.Score.Locate('bh;kcdm',VarArrayOf([FieldValues['bh'],FieldValues['kcdm']]),[loPartialKey]) then
    begin
      data.Score.Append;   //改用insert方法或在下面加data.score.edit都提示同样的错误
      data.Score.FieldValues['id']:=id;
      data.Score.FieldValues['bh']:=FieldValues['bh'];
      data.Score.FieldValues['bmc']:=FieldValues['bmc'];
      data.Score.FieldByName('kcdm').Value:=FieldByName('kcdm').Value;
      data.Score.FieldByName('kcmc').Value:=FieldByName('kcmc').Value;
      data.Score.FieldByName('xh').Value:=FieldByName('xh').Value;
      data.Score.FieldByName('ksh').Value:=FieldByName('ksh').Value;
      data.Score.FieldByName('xm').Value:=FieldByName('xm').Value;
      data.Score.FieldByName('xss').Value:=FieldByName('xss').Value;
      data.Score.FieldByName('xq').Value:=FieldByName('xq').Value;
      data.Score.FieldByName('ksfsdm').Value:=FieldByName('ksfsdm').Value;
      data.Score.FieldByName('ksfs').Value:=FieldByName('ksfs').Value;
      data.Score.FieldByName('txdz').Value:=FieldByName('txdz').Value;
      data.Score.FieldByName('yzbm').Value:=FieldByName('yzbm').Value;
      data.Score.FieldByName('rxrq').AsDateTime:=FieldByName('rxrq').AsDateTime ;
      data.Score.Post;
      Next;
    end;
  end;

解决方案 »

  1.   

    修改之前先加上一句
    data.Score.Edit;即可...
    data.Score.Append;   
    data.Score.Edit;
    ...
      

  2.   

    to daniel007(添)
    不行,一样的错误
      

  3.   

    1、代码错误,应该改为
      with  data.qryScore do
      begin
        data.Score.Open;
        data.Score.First;
        while not data.qryScore.Eof do
     ............数据集没有打开之前使用while not data.qryScore.Eof do是导致错误的最大原因。   
    2、TTable组件连接错误
    3、修改之前先加上一句
    data.Score.Edit;
      

  4.   

    要在前面添加Edit方法,不可以在后面添加的。