我用ADOquery连接FoxPro表,想将里面的数据全删除
这样写:
 try
    if tbBookQuery.Active=True then
      tbBookQuery.Close;
    tbBookQuery.SQL.Text:='delete from tbbook';
    tbBookQuery.ExecSQL;
    {tbBookQuery.SQL.Text:='select * from tbbook';
    tbBookQuery.open;
    while not tbBookQuery.Eof do
    begin
      tbBookQuery.Delete;
      tbBookQuery.Next;
    end;}
  except
    showmessage('不能上传数据!');
    Exit;
  end;
  showmessage('have been deleted');
{}里面是另外一种写法,结果都是在FoxPro表里还有数据,但再次用ADOquery查询时有查不到数据,不知道怎么办?

解决方案 »

  1.   

    在FOXPRO中删除记录只是做删除标志,物理上没有彻底删除。
      

  2.   

    使用Foxpro的语法.
    全部删除用Zap即可
      

  3.   

    to zfmich
    如果要物理删除该怎样做呢?
    to zxkid
    请告知Zap的用法,最好针对上面的程序写一端源代码
      

  4.   

    不知道。只记得在FOXPRO中是用PACK。
    其实对用户来说是一样的,删除后已经查不到了,这就行了。
      

  5.   

    可以考虑多试试不同的删除方法,另外再加上update,updatebatch之类的。
      

  6.   

    : zfmich() 那样的话,数据冗余就太大了,使用sql 直接删除吧
      delete from table1 where  xxx='xxx' 吧
      

  7.   

    这是FOXPRO的机制问题。你试试删除一条记录后,再新增一条记录,看看是否会覆盖已删除的记录?
      

  8.   

    tbBookQuery.SQL.add('set delete on');
    tbBookQuery.SQL.add('delete from tbbook');试试