请问,我用下面的语句更改adoquery的一个字段,怎么出现以下的错误呢?
procedure TForm1.Button1Click(Sender: TObject);
begin
adoquery1.Edit;
adoquery1.First;
adoquery1.FieldByName('bzxx').Value:=adoquery1.FieldValues['mc'];
adoquery1.post;
end;错误提示是“adoquery1:dataset not in edit or insert mode” 我前面不是用了aodquery1.edit
了吗。郁闷!!!

解决方案 »

  1.   

    这种方法仅适用于对单张表的操作,楼主这条SQL语句是不是多张表的关联了?
    我建议还是在SQL语句里用update这样来操作比较好,也很灵活通用。
      

  2.   

    笨,你把EDIT语句和FIRST语句的顺序对调一下,应该先FIRST,在EDIT,错误提示的意思是数据集不在插入或者修改模式,因为你EDIT后再FIRST,数据集合已经不在EDIT模式了。给分!!
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    adoquery1.Edit;
    adoquery1.First;
    adoquery1.FieldByName('bzxx').Value:=adoquery1.FieldValues['mc'];
    adoquery1.post;
    end;搂主,adoquery1.First;之后,你可以看看adoquery1.state是什么样的。记录移动操作,记录集状态是浏览。所以应该这样:
    adoquery1.First;
    adoquery1.Edit;
    adoquery1.FieldByName('bzxx').Value:=adoquery1.FieldValues['mc'];
    adoquery1.post;
    不过你的代码还是隐患多多,没有校验之类,也没有异常保护。
      

  4.   

    adoquery1.open了吗?
    adoquery1.Close;
    adoquery1.SQL.Clear;
    adoquery1.SQL.Add('select * from swzzzrave');
    adoquery1.SQL.Add('order by 名称');
    adoquery1.Open;
    adoquery1.ExecSQL不行
      

  5.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    adoquery1.First;
    adoquery1.Edit;
    adoquery1.FieldByName('bzxx').Value:=adoquery1.FieldValues['mc']; //这句有点问题,你想怎样?
    adoquery1.post;
    end;
      

  6.   

    可悲!
    总是说Delphi程序员工资低, 看看这道题目, 能不低吗????楼主初学也就罢了,居然回贴的也有人不着边际!
    楼主问题也不小,随便那本书上应该有对数据集状态的描述吧!
      

  7.   

    先打开表才能用  
    adoquery1.edit;
    adoquery1.insert;等
    你在adoquery1.edit;的前一句加一个   adoquery1.open;
    就可以用了!!!
      

  8.   

    你用的是哪种数据库啊?
    SQL和ACCESS里贴数据的方法是不一样的
      

  9.   

    问题解决了,原来是先edit后first的问题。谢谢大家的支持。小弟弟确实初学者,问的问题有点幼稚,小弟不是做程序员的,这与程序员工资不高没关系。呵呵。