我点击button, 代码 if adoquery1.state in [dsedit,dsinsert] then
adoquery1.post;
就出错提示adoquery1:dataset not in edit or insert mode。如何才能使得adoquery1处于edit or insert 状态?
单步执行时,看到post 是执行了的,数据也能看出来是保存了的。
问:如何才能使得adoquery1处于edit or insert 状态?又如何知道adoquery1是什么状态?
请高手指点!

解决方案 »

  1.   

    你用的是DB的控件对吗?仔细看看DELPHI帮助。
      

  2.   

    有的地方用的是maskedit combobox 有的地方是 dbedit 。
    不是db的控件我会把值赋给 adoquery1.fieldbyname('id').asstring:=maskedit1.text; 然后再执行  adoquery1.post.
    这样不行吗? 
      

  3.   

    在before post 事件里 写adoquery1.edit;  也试过了。
    可能需要补充一些:我的adoquery1 在  form1  ,对adoquery1的修改和添加操作,在form2里进行的,这样是不是影响了adoquery1的edit状态了呢?( form2是和form1用同一个adoquery1.)
      

  4.   

    adoquery1.exec(true);  怎么用呢?
      

  5.   

    if adoquery1.state in [dsedit,dsinsert] then
    begin
    //你的代码
    adoquery1.post;
    end;
      

  6.   

    可能需要补充一些:我的adoquery1 在  form1  ,对adoquery1的修改和添加操作,在form2里进行的,这样是不是影响了adoquery1的edit状态了呢?( form2是和form1用同一个adoquery1.)
    不会,你就好看看,其它别的控件的change事件
      

  7.   

    也许是其他的事件影响了 post 操作,项目 有的 窗体 post 没有问题 ,有的就是有 这样的错误 ,我仔细对照一下吧。谢谢各位指点!