小弟初学DELPHI编程,有劳各位大侠了:ACCESS在输入新数据时会出现错误提示(插入第一个N次并没有出现问题):
'无法为更新行集定位:一些值可能以在最后读取后改变’
过程为:
procedure TForm1.Button1Click(Sender: TObject);
var
  STC,STN: string;
  CT: integer;
begin
  STC:=Edit1.Text;
  STN:=Edit2.Text;
WITH ADOTable1 DO
  BEGIN
    first;
    if locate('StuClass;StuName',VarArrayOf([STC,STN]),[])
       then
         begin
           Edit;
           CT:=FieldByName('count').AsInteger;
           Inc(CT);
           FieldByName('Count').AsInteger:=CT
         end
    else
      begin
        edit;
        append;
        FieldByName('StuClass').asstring:=STC;
        FieldByName('StuName').asstring:=STN;
      end;
    
   end;

解决方案 »

  1.   

    插入后未刷新
    最后一个end;前面加上
    post;
    close;然后在
    WITH ADOTable1 DO
    begin
    加上open;
      

  2.   

    可能是你还没有post又来Edit
    所以出错
      

  3.   

    每次Edit或者Append后都要Post一下,即为更新数据。
      

  4.   

    begin
    .....WITH ADOTable1 DO
      Close;
      Open;
      BEGIN
        first;
        if locate('StuClass;StuName',VarArrayOf([STC,STN]),[])
           then
           .....        FieldByName('StuClass').asstring:=STC;
            FieldByName('StuName').asstring:=STN;
           end; 
        try    
          post;
        except
          .....
        end;
      end; 
    end;
      

  5.   

    参考意见
    procedure TForm1.Button1Click(Sender: TObject);
    var
      STC,STN: string;
      CT: integer;
    begin
      STC:=Edit1.Text;
      STN:=Edit2.Text;
    WITH ADOTable1 DO
      BEGIN
        first;
        if locate('StuClass;StuName',VarArrayOf([STC,STN]),[])
           then
             begin
               Edit;
               CT:=FieldByName('count').AsInteger;
               Inc(CT);
               FieldByName('Count').AsInteger:=CT
               post;
             end
        else
          begin
            append;
            FieldByName('StuClass').asstring:=STC;
            FieldByName('StuName').asstring:=STN;
            post;/////
          end;
        
       end;