• 締切済み

文字列検索後にテーブル書き出し処理

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 上記プログラムにバージョンを考慮した場合、どのように変更となるでしょうか?実プログラムをご教授くだされば幸いです。 素人の質問で申し訳ないのですが、宜しくお願い致します。

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

データに『,』が含まれないなら 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系だと思います

関連するQ&A