我用的是paradox 7
我是这样写的
with table do
begin
    open;
    first;
    while not eof do
    begin
        delete;
        next;
    end;
    close;
end;
这样有什么不对吗,但是表中的最后一条记录删除不了。是不是到了表的最后一行eof就为真了,所以删不了?但是如果表中只有一条记录又能删除,这是怎么回事?

解决方案 »

  1.   

    使用一个Query执行SQL语句。
    Query1.Close;
    Query1.SQL.Text:='delete * from 表名';
    Query1.ExecSQL;
      

  2.   

    以前在什么地方见过,表文件所谓的文件头和文件尾并是不批第一条记录和最生一条记录,而是表文件的一种标记。
    很少用Paradox,因为它和DBF表一样,有好些个使用不方便的特性。建议用别的表试一下, 如Access, Interbase等等。
      

  3.   

    如果是paradox或者其他的独立表,那么可以用table1.emptytable
    如果是sqlserver或者oracle等类似的大型数据库要求处理时间,那么大批量数据最好分批删除,如果小于2万条,那么可以用
    delete from tablename
      

  4.   

    谢谢各位大大,搞清除了,调用delete后,active record跳到下一条记录,相当于调用了一次next;所以有一条删不了。结账了。