csv形式でデータが
1,不二,東京
2,アサヒ,新潟
3,読売,北海道
の場合、edit1.text に 最初の文字(1とか2とか)を入れて該当すれば
その行をstringglidに入れたいのですが検索がどうすればいいのかわかりません
var
SL:TStringList;
index:integer;
begin
SL:=TStringList.Create;
try
List1.Items.LoadFromFile('顧客データ.csv');
//これでListBoxに表示出来ますが検索がわかりません
SL.LoadFromFile('顧客データ.csv');
SL.CommaText:=SL.Text;
index:=SL.indexof('2);とか
edit1.text:=SL[2]とかとかやってみたのですが・・全然だめです。
むちゃくちゃで先に進めません。よろしくお願いします。
ちゃん
pos
データの行頭の数字が1,2,3…と必ず順序通りに並んでいるのなら、検索する必要ないんじゃないの?
Edit1.Textが'2'なら、StringGridに入れるのは SL[2-1]の文字列でイイと思うけど。
>SL.LoadFromFile('顧客データ.csv');
>SL.CommaText:=SL.Text;
は何をやろとしているのでしょうか?
もしかして
CSVファイルをTStringListに全件読み込んで、1レコードずつカンマで分割しようとしているのであれば、もうひとつTStringListを用意して
try
SL1 := TStringList.Create;
SL1.LoadFromFile('顧客データ.csv');
try
SL2 := TStringList.Create;
for I := 0 to SL1.Count - 1 do
begin
SL2.CommmaText := SL1[I]; //CommmaTextはスペースも区切り文字とするので注意が必要
if SL[0] = '1' then
begin
StringGrid1.Row[0].Assign(SL1);
Break;
end;
end;
finally
SL2.Free;
end;
finally
SL2.Free;
end;
てな感じでやれば考えていることができると思いますです。
おっと間違えた
if SL[0] = '1' then
begin
StringGrid1.Row[0].Assign(SL1);
Break;
end;
じゃなくて
if SL[0] = Edit1.Text then
begin
StringGrid1.Row[0].Assign(SL1[I]);
Break;
end;
でした。
質問の意味がわかりにくかったですか申し訳ありません。
データが5,000件くらいあります。そのデータは会社名や部署、住所です。
そしてに顧客コードが振ってあります。プログラムはaccess(?)です。
そのデータをCSVに変換できますので、とりあえずやりたいことは
「顧客コード」を打つとそれコードが該当すれば stringgridに 会社名とか
部署とか住所を入れて数件印刷したいのです。
以前データベースではSQLで検索できたんですけれど、データベースを使わなくても
できればいいかなと思い、
まず、ListBoxに表示することでどうにかできるかなと思ったのですが、
それ以降進みません。
次にTString で読み込み検索してそれをstrinnggridに表示できるかなと思ったのですが
それぞれ使い方もいまいちわからず困っている状態です。
方法はどんな形でもいいのですが今は
今は顧客画面を呼び出して、エクセルで数件手入力して体裁を作り印刷しています。
AVAさんのコードはどうにかわかりました、2つのTString でこのような方法でやるんでしょうね。
でも
StringGrid1.Row[0].Assign(SL1[I])のところで
TPersistentとstringには互換性がありませんのブレークがでています。
Assign を Add に変えても反応がありませんでした。
ちゃん
>データが5,000件くらいあります。そのデータは会社名や部署、住所です。
>まず、ListBoxに表示することでどうにかできるかなと思ったのですが、
ListBoxに5000件表示すると、探すのが大変です。Accessにデーターがあるのなら、素直に使えばどうでしょう。ADOを使えば簡単に接続できますよ。
StringGrid1.Rows[0].Assign(SL1[I]);を
StringGrid1.Rows[0].Assign(SL2);
に変えてください。
AVA さん stringgrid に表示できました。ありがとうございます。
他人様のプログラムを切り貼りで使っている身分では、思い通りに動かないことが多々あります。でもこれからも自分なりに頑張っていきますのでヨロシクお願いします。
HOtaさんのおっしゃるようにできればいいのですが。。
ちょっと気になったので...
>HOtaさんのおっしゃるようにできればいいのですが。。
この意味がもし、どうしてもCSVファイルにする必要があるというのであれば別ですが、
そうでなければ、HOtaさんが言われるように、ADOによるmdbへの接続は非常に
簡単です。余計なお世話で記事を書いてみましたので、もしよろしかったら参考にして
下さい。
http://homepage2.nifty.com/Mr_XRAY/Delphi/plSamples/T_ADO_BASIC.htm
(できたてホヤホヤの記事です)
ツイート | ![]() |