我请问一下,用ADOTable保存数据,正常下没有问题,但当查询出一条记录后再edit,修改了他的id值,后post,时出错,提示" BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录 " ,请问这样要如何解决,急啊,谢谢大家!

解决方案 »

  1.   

    我是先用ADOtblIndex.Filter := ' where id = 1 '; 大概这种写法让用户找到某条记录,然后让用户直接在TDBEdit中修改,修改后直接就Post;就是这样而以,但留意一下,因为修改的是id值,所以修改后ADOtblIndex.Filter 是没办法找到任何一条记录了, 而如果这时候数据库中还存在另一条id值一样的数据让ADOtblIndex.Filter 能找到的话就不会出错.
      

  2.   

    if adotable.locate('id',1,[]) then
    begin
      adotable.edit;
      ......
      adotable.Post;
    end;
      

  3.   

    newfang(传说中的MIC), 这知道这只是查找有没有,有就修改,
    但我现在的情况是能找到,只是如果找到一条记录,修改完后就出错,而如果找到二条数据,修改任何一条就不会错
      

  4.   

    我感觉你这个情况好象是不大好办,因为你把记录修改以后,FILTER就找不了符合条件的记录了,自然为空,所以不要在代码后用POST,直接允许DBGRID可以修改就可以了.这样显示框为空,应该不会报错了
      

  5.   

    我刚才用你说的方法测试,好象没有问题呀?我的FILTER = ID = 1 中间没有WHERE,直接修改记录,然后POST没有你说的那种错误.
      

  6.   

    是有这个问题的!我也不知道怎么解决,以前听人说是ADO的问题!我也想知道是怎么回事
      

  7.   

    李维N年以前写的一本《ADO5。X》的书上详细讲了这个的解决方法。可惜我招进来的人离开公司时把那本书也拿走了,你到盒子里找找电子书吧,没有记错的话,应该在50---70页中的一页
      

  8.   

    我用的是delphi5也出现了这个问题,后来打了3个补丁就好了