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

解決


nuclei  2008-11-21 21:36:17  No: 32666

↓のことをやりたいわけですが、逐一処理で非効率の感があります。
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-22 03:16:29  No: 32667

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


nuclei  2008-11-22 04:44:37  No: 32668

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-22 06:26:09  No: 32669

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

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

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

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


nuclei  2008-11-22 17:16:33  No: 32670

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加