代码如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
  adotable1.Open;
  adotable1.Edit;
  if edit1.Text = '' then
  begin
    messagedlg('请输入用户名',mtinformation,[mbok],0);
    exit;
  end;  adotable1.Locate('name',edit1.Text,[]);
  adotable1.FieldByName('pass').AsString := '123';
  try   adotable1.Post;
   messagedlg('成功!',mtinformation,[mbok],0);
  except
   adotable1.Cancel;
   messagedlg('错误!',mtinformation,[mbok],0);
  end;
end;
出错提示:ADOTable1 : Dataset not in edit or insert mode.我不知道adotable1.edit 为什么没有效果,还需要在哪里设置吗?请不吝赐教,在线等待!.......

解决方案 »

  1.   

    应该在Locate后面Edit,否则,当表指针移动后,Edit状态会改变。
      adotable1.Locate('name',edit1.Text,[]);
      adotable1.Edit;
      adotable1.FieldByName('pass').AsString := '123';
      try
      

  2.   

    把语句修改成如下或许就可以了
      adotable1.Open;  adotable1.Locate('name',edit1.Text,[]);  adotable1.Edit;
      if edit1.Text = '' then
      begin
        messagedlg('请输入用户名',mtinformation,[mbok],0);
        exit;
      end;我想可以你在调用Locate方法时,数据库的状态发生了变化,可能变成了浏览状态,所以你在修改数据时,就会报相应的错误,试试  adotable1.FieldByName('pass').AsString := '123';
      try