说明:
   本人正在做一个图书管理系统,我想在还书时还书表会增加一条记录,同时在借书表中会删除(与还书表图书标号相同)一条记录,
    发现有错误:adotable1 can not perform this operation on the closed dataset
借书表中我有有记录啊,不知道为什么,请大家看看。
代码如下:
procedure TForm7.BitBtn1Click(Sender: TObject);
begin
   if edit4.Text='' then showmessage('请输入图书编号')
    else
    if not adotable3.Locate('bookid',edit4.Text,[]) then
     showmessage('图书馆没有该书!')
      else if  adotable3.FieldByName('ifexist').Value=1  then
        showmessage('这本书已经被归还!')
                  else
      begin
        
        adotable2.Edit;
        adotable3.Edit;
        adotable2.Append;
        adotable1.Edit;
        adotable1.Locate('bookid',edit4.Text,[]);    这是借书表
        adotable2.FieldByName('bookid').AsString:=edit4.Text;    还书表
        adotable2.FieldByName('studid').AsString:=adotable1.Fields[1].AsString;
        adotable2.FieldByName('time').AsString:=edit6.Text;
        adotable3.FieldValues['ifexist']:=1;   图书表的在馆状态
        adotable1.Delete;
        adotable1.Post;
        adotable3.Post;
        adotable2.Post;
        edit4.Text:='';                    
      end;
end;  

解决方案 »

  1.   

    adotable1.Delete;
    adotable1.Post;//这句去掉,删除后就自动保存了
      

  2.   

    adotable1.Delete; //此时数据集已经不处于编辑状态了
    adotable1.Post;   //这句,在非编辑状态就会出错
      

  3.   

    用SQL语句删除吧,而且用事务进行控制。
      

  4.   

    adotable1.Delete;
    adotable1.Post;//这句去掉,删除后就自动保存了
    成功了,谢谢大家啦!
      

  5.   

    adotable1不能履行使用该在封闭的数据:
    adotable1.Delete;
    adotable1.Post;//这句去掉