私は何年も前に開発したDelphi 4プログラムを持っていました。これはOpus DirectAccessを使用して、Microsoft Accessデータベースを順次検索し、必要なレコードを取得しました。 Delphi 4にはADOがないため、DirectAccessを使用していました。なぜADOの次のレコード処理がDelphiで遅くなるのですか?
しかし、私は今Delphi 2009にアップグレードし、ADOを使用するようにプログラムを変換しました。私が見つけたのは、DirectAccessのように(10万レコードの)テーブルのループが始まりましたが、テーブルを通過するにつれて速度が遅くなり、速度が遅くなり、遅くなります。基本ループは次のとおりです。
ArticlesTable.First;
while not Cancel and not ArticlesTable.Eof do begin
(See if the current record has criteria desired)
(If so, process the record)
ArticlesTable.Next;
end;
したがって、基本的には、.Nextメソッドを使用してレコードを順番に処理しています。
なぜそれが減速し、どのように私はそれが減速しないようにこれをコード化できますか?
「ArticlesTable.DisableControls;」を追加する「ArticlesTable.First;」の前に問題を修正しました。完璧!どうもありがとうございます! – lkessler