MyBaseで不可解?

解決


ぷれんど  2007-07-12 10:02:01  No: 27049

MyBaseで100件を超えるデータを削除したいのですが
以下のコードを実行すると、全てのデータ削除されてしまいます。
データは1000件登録済みです。

var
  i: integer;
begin
  i:= 0;
  ClientDataSet1.first;
  while (not ClientDataSet1.Eof) do begin
    i:= i + 1;
    if i > 100 then
      ClientDataSet1.Delete
    else
      ClientDataSet1.Next;
  end;
  ・・・

よろしくお願いします。


Ru  2007-07-12 18:21:40  No: 27050

最終行ではDeleteしてもEofはTrueにならない?
それが原因かな。


orz  2007-07-12 19:12:37  No: 27051

Helpによると、Eof=True になるのは

・空のデータセットを開いた
・Lastを呼んだ
・Nextしたけど、Nextがなくて失敗した
・範囲なしでSetRangeした

つまりDeleteしてもEof=Trueにはならないということでしょう。


ぷれんど  2007-07-12 20:08:41  No: 27052

ありがとうございました。
原因:Delete  では、Eof=True が認識できないことがわかりました。
最初に RecordCount で行数を調べ
for で行数分処理したらうまくいきました。
でも、TTable ではできたよな?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加