1\请问各位高手,怎么样可以将一个table里的所有数据清空?我是这样写的,却总是留下一条数据,请指教:
  Table1.first;
  while not table1.eof do
  begin
   table1.delete;
   table1.next;
 end;
2\我对数据表操作,有<下一条记录>和<上一条记录>两个按钮,明明是最后一条记录,可是要点两次按钮,才会出现提示说下面没有记录,我是这样写的:
  if not table1.eof then
  begin
    showmessage('hello');
    table1.next;
 end
else
  showmessage('bye');

解决方案 »

  1.   

    delete from Table判断是最后一条的时候就可以了
      

  2.   

    1。在循环外在加一句table1.delete
    2.最后一条记录其实table1.eof才为true,你不能这样写代码
      

  3.   


    if not table1.eof then
    改为
    if table1.recordcount<>0 Then
      

  4.   

    用sql语句吧,truncate table table1
    2:是如此!
      

  5.   

    if not table1.eof then
    改为
    if table1.recordcount<>0 Then
    !
      

  6.   

    或者 if not table1.eof and or not table1.bof then
      

  7.   

    上面说的都有道理不过我感觉My_first(小@_@小) 的可行
      

  8.   

    1. Next有点问题。从逻辑上来讲,Next是多余的。Delete后Cursor应该自动移到下一条,再Next一次就又过了一条了。如果是这样子的话(没试过),只要这么写就行了:
      while not (table.eof and table.bof) do table1.Delete.
    当然这并不是最好的解决办法,尤其是但记录比较多的时候,这个效率就极其低下了。推荐使用TQuery, "Delete * from [Table Name]", 一下就搞定了:)2. 理解错误。eof并不是最后一条记录,而是最后一条记录后面那一条(实际上并不存在)。因此,Last() 不会导致eof为真。Last();Next();才会导致eof为真。bof也一样。
      

  9.   

    1.改成这样
    Table1.first;
       table1.delete;
      while not table1.eof do
      begin
       table1.next;
       table1.delete;
     end;
    2.
        table1.next;//这句要放到外边才有效果
    if not table1.eof then
      begin
        showmessage('hello');
     end
    else
      showmessage('bye');
      

  10.   

    我测试了,只要去掉table1.next 即可。
      

  11.   

    谢谢大家,问题解决,准备结帖,对了,请问Delphi里打印可不可以在打印的时候画表格,比方说我打印两个label和两个Edit,但是要求在一个田字的表格里,请问我怎么把那个田字画出来?
      

  12.   

    用Sql: delete from table;
      

  13.   

    1
    Table1.first;
      while not table1.eof do
      begin
       table1.delete;
    //   table1.next;
     end;2
        table1.next;
    if not table1.eof then
      begin
        showmessage('hello');
     end
    else
      showmessage('bye');