名前 題名 ▼ Syakeさん > ▼ Mr.XRAYさん > > でも,掲示板等で,ほんとにたまにですがあるんだもん.もん. > > いずれにしても、アクセス時間で相当の時間がかかると思われますので > 根本的解決はアクセスにかかる時間を減らすことだと思います。 > TStringGridなら先ほどのTDBXReaderで速度アップは可能かと。 > お手軽なTDBGridでも可能ですが、内部処理が二度手間になるので処理時間 > は多少長くなるかもしれません。多分。 > 但し条件としてはdbExpressが使用できる環境で無いとTDBReaderは使用 > できませんので、Enterprise以上が必要です。 > > 少なくとも記載した時間分は早くなるかな!?(43秒→4.4秒) > > uses > Data.DB, Data.SqlExpr, Data.DBXCommon; > > procedure XXXXXX.LoadData(); > var > Comm :TDBXCommand; > Reader :TDBXReader;//前方向専用リーダーです。 > begin > //TSQLConnection(SQLConnection1)貼付け!?済として > Comm := SQLConnection1.DBXConnection.CreateCommand; > try > Comm.Text := 'SELECT文'; > Reader := Comm.ExecuteQuery; > if Assigned(Reader) then > begin > try > //レコードが空だと最初からループしませんので、レコード有無の判定は不要です. > //TStringGridへの書込みは以下の処理をどうぞ > while Reader.Next do > begin > { > フィールドデータを呼出すにはValueを使う。 > Reader.Value[].AsString; 等 > []内はフィールド名か配列値でフィールドを指定 > するが、当然配列値を指定した方が早いです。 > キャストするときInteger型はDataSet時と指定が > 若干異なりますが問題なしです。 > なので、後はDataSetと同じ感覚でどうぞ。 > } > end; > > //CopyReaderToClientDataSet(Reader,ClientDataSet); > {このメソッドで、TDBXReaderからClaientDataSetへ > データを一括して渡す事もできます。 > なので、こちらでTDBGridも使えます。 > もちろん呼出すレコードに比してそのメソッドの > 処理時間はかかりますけど。} > finally > Reader.Free; > end; > end; > finally > Comm.Free; > end; > end; > > これで、とっても早く処理ができます。多分。 > 但しDB2ではUnicodeが使えません。 GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link