- 締切済み
文字列検索後にテーブル書き出し処理
VBにて文字列を検索し、必要な情報をテーブルの各々の項目へセットする処理を考えています。 【実際の文字列例】 AAAAA+111,BBB,CCCC+22,DDDD,EEEE,FFFF,GGGG+4444 ・・・ 文字列は1レコードが','(カンマ)で区切られ、 アルファベットが商品番号、数字がバージョンと考えて下さい。 商品番号は必ず存在しますが、バージョンは無い場合もあり、 バージョンが存在する場合は'+'(プラス)で商品番号とセットになる事を表しています。(バージョンが全く存在しない場合もあります) 既に商品番号のみをテーブルへセットする処理があり、その処理は下になります 【商品番号のみの処理】 dim pos1 dim pos2 = 1 dim itemNo LOOP pos1 := INSTR(文字列, ',', pos2); IF pos1 = 0 THEN itemNo := LTRIM(RTRIM(SUBSTR(文字列, pos2))); ELSE itemNo := LTRIM(RTRIM(SUBSTR(文字列, pos2, pos1 - pos2))); END IF; ~itemNoをテーブルへセットする処理~ END IF; EXIT WHEN pos1 = 0 pos2 = pos1 + 1 END LOOP 上記プログラムにバージョンを考慮した場合、どのように変更となるでしょうか?実プログラムをご教授くだされば幸いです。 素人の質問で申し訳ないのですが、宜しくお願い致します。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- redfox63
- ベストアンサー率71% (1325/1856)
データに『,』が含まれないなら Splitで分割したほうが簡単ですよ 項目もxxx+nn を分割するなら 同様に Splitで出来ます VB6.0なら dim sItem() as String, n as Integer dim sData() as String sItem = Split( 文字列, "," ) for n = 0 to UBound( sItem ) sData = Split( sItem(n),"+") if UBound( sData ) > 0 then ' + があった場合 else ' +が無かった場合 end if next といった具合です # VBです := は名前つき引数を使う場合です # 単なる代入なら『=』ですよ # 『:=』を使う代入は (Delphiなどの)Pascal系だと思います