我要增加一条图书记录,但老出现
ADOQuery:Dataset not in edit or insert mode的错误,大家帮忙啊!
with ADOQuery_Book do
  begin
    Append;
    DBEdit_BookID.SetFocus;
    DBEdit_BookID.Text:= IntToStr(PublicFunction_Form.GetFitNum('BookID',
          'Select BookID from Lab_Book_Manage where BookID<>-1 Order By BookID ASC'));
    DBEdit_BookName.SetFocus;
    FieldByName('BookStatus').AsString:='未借';
    Post;
  end;

解决方案 »

  1.   

    Append前加个Open试下
    ,SetFocus也别调了,没啥用吧
      

  2.   

    ADOQuery:Dataset not in edit or insert mode这类错误一般是哪些地方出错了?
      

  3.   

    我不明白你的两个SetFocus是做什么用的?
    应该不需要吧。直接用对象名.AsString就可以了吧。另外,你的ID数据类新应该是uniqueidentifier吧?
      

  4.   

    如果不是记录集的问题,请改成以下格式试试:
    with ADOQuery_Book do
      begin
        Append;
        FieldByName('BookID'").AsString:= IntToStr(PublicFunction_Form.GetFitNum('BookID','Select BookID from Lab_Book_Manage where BookID<>-1 Order By BookID ASC'));
         FieldByName('BookStatus').AsString:='未借';
        Post;
      end;
      

  5.   

    你把'BookID','Select BookID from Lab_Book_Manage where BookID<>-1 Order By BookID ASC'));
    单独用个adoQuery_book.sql.text来存,
    adoquery_book.close;
    adoquery_book.sql.clear;
    adoquery_book.sql.text :=''Select BookID from Lab_Book_Manage where BookID<>-1 Order By BookID ASC';
    adoQuery_book.open;
    ...继续下面的给FieldByName('BookID')赋值
      

  6.   

    在进行插入之前首先判断一下结果集的状态,如果不是插入状态的话,将其改为insert状态既可。
    if not (datasource1.state in [dsinsert])
     adoquery_book.insert;