SQLで得たレコードの集合をStringListに入れる方法?

解決


nuclei  2008-11-21 12:36:17  No: 32666  IP: 192.*.*.*

↓のことをやりたいわけですが、逐一処理で非効率の感があります。
StringListに一括して取り込むことは出来るものですか?

var St:TStringList;

St:=TStringList.create;St.clear;
ADOQuery1.SQL.clear;
ADOQuery1.SQL.Add('select Code from Mytable');
ADOQuery1.Open
while not ADOQuery1.eof do begin
  St.add(ADOQuery1.fieldbyname('Code').asstring);
  ADOQuery1.Next;
end;
ADOQuery1.Close;

編集 削除
HOta  2008-11-21 18:16:29  No: 32667  IP: 192.*.*.*

カンマ区切りの文字列を作成して、
TStringListのCammatextプロパティに代入すると出来ます。

編集 削除
nuclei  2008-11-21 19:44:37  No: 32668  IP: 192.*.*.*

HOta様ありがとうございました。
例えば、
'select * from Mytable2 where Code2 in (select Code from Mytable where 〜)';
のようなselect文があるとしますと、
in 以降のselect文で得られるCodeの集合がTString型であれば、
while文で回して1件ずつレコードを取って来ることなく、
St.addstring(Codeの集合)
で出来るんじゃないかと思ったわけです。

編集 削除
igy  2008-11-21 21:26:09  No: 32669  IP: 192.*.*.*

>逐一処理で非効率の感があります。

とのことですが、nuclei さんが最初に書かれたコードが
一番良い方法かと思います。

>while文で回して1件ずつレコードを取って来ることなく、
>St.addstring(Codeの集合)
>で出来るんじゃないかと思ったわけです。

多分、できないと思います。

編集 削除
nuclei  2008-11-22 08:16:33  No: 32670  IP: 192.*.*.*

igy様、ありがとうございました。
Access-jetで似たような機能があった気がしたので、ADOを調べてみます。

編集 削除