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;
・・・
よろしくお願いします。
最終行ではDeleteしてもEofはTrueにならない?
それが原因かな。
Helpによると、Eof=True になるのは
・空のデータセットを開いた
・Lastを呼んだ
・Nextしたけど、Nextがなくて失敗した
・範囲なしでSetRangeした
つまりDeleteしてもEof=Trueにはならないということでしょう。
ありがとうございました。
原因:Delete では、Eof=True が認識できないことがわかりました。
最初に RecordCount で行数を調べ
for で行数分処理したらうまくいきました。
でも、TTable ではできたよな?
ツイート | ![]() |