こんにちは
今、Delphi6
Paradoxを使用してプログラムを作成しています。
それで、質問なんですが、
Tlsit型であらかじめ作っておいたデータを
テーブルにインサートしているのですが
たった、30件ぐらいなのに
ものすごく時間がかかります。
これを回避させるには、いったいどうすればよいでしょうか?
ちなみに、下記のような感じでループさせています。
with QryMaster do begin
for i := 0 to AList.Count -1 do begin
DtA := AList.Items[i];
Insert;
FieldByName('A').AsInteger := DtA^.A;
FieldByName('B').AsInteger := DtA^.B;
FieldByName('C').AsInteger := DtA^.C;
FieldByName('D').AsInteger := DtA^.D;
FieldByName('E').AsInteger := DtA^.E;
FieldByName('F').AsInteger := DtA^.F;
end;
post;
end;
識者の方、宜しくお願いいたします。
誰もレスしないみたいなので。
このソースだけだとまだ何とも言えないかな。
ちなみに何秒くらいかかってますか?
実行前はレコードは0件の状態ですか?
はじめまして、えびさん。
時間的には、フィールド6列のデータ30件ぐらいだと、30秒ぐらいかかります。
Insertの処理なので、実行前は、0件です。
テーブルは、サーバとか、Lanで繋がった場所にあるわけではなく、
クライアントにあります。
やりたいことは、TList型に入ってるデータを
テーブルにInsertしたいということなのです。
何卒、宜しくお願いいたします。
30件ぐらいのデータなら、テーブルの作り方の良し悪しは
あまり考えなくてヨシとして。
先ずは、クエリーとフィールドオブジェクトに何かイベントは
記述してありますか?
フィールドのOnChangeが他のOnchangeを呼び出して延々...
って言うのがたまに有ります。
先ずは、
DtA := AList.Items[i];
Insert;
FieldByName('A').AsInteger := DtA^.A;
FieldByName('B').AsInteger := DtA^.B;
・
・
の各行でステップ実行して、時間がかかってるところをチェック
してみましょうか。
後、データベースエクスプローラなどで直接入力した場合に
遅く感じたりしますか?
ツイート | ![]() |