DOBON.NET DOBON.NETプログラミング掲示板過去ログ

未入力項目のIF文について

環境/言語:[XP VB.NET ]
分類:[.NET]

お世話になります。

IF文で、未入力の項目について内容の参照を行いたいのですが、
下記のように未入力の項目をチェックした途端にエラーが出てしまいます。
エラーで落ちないようにするためにはどうすれば良いでしょうか?
やはりレングスチェックを行って、下記のIF文に入らないようにした方が良いのでしょうか?

If (rowq.Item(3).SUBString(0, 1) = "3") And (rowq.Item(5).ToString = "121") Then

エラー内容
ArgmentOutOfRangeException
"インデックスおよび長さは文字列内の場所を参照しなければなりません"
パラメータ名:length
そのエラーチェックをする前に文字列の長さのチェック、null チェックが必要です。
■No23138に返信(KYOUさんの記事)
> If (rowq.Item(3).SUBString(0, 1) = "3")

rowq.Item(3) の型が String なのだとすれば…

案1) If rowq.Item(3) Like "3*"

案2) If Left(rowq.Item(3), 1) = "3"

案3) If (Not String.IsNullOrEmpty(rowq.Item(3)) AndAlso rowq.Item(3).SubString(0, 1) = "3")
■No23140に返信(じゃんぬねっとさんの記事)
> そのエラーチェックをする前に文字列の長さのチェック、null チェックが必要です。

じゃんぬねっとさんアドバイスありがとうございます。

やはり文字列のプレチェックは必要ですね。
■No23141に返信(魔界の仮面弁士さんの記事)
> ■No23138に返信(KYOUさんの記事)
>>If (rowq.Item(3).SUBString(0, 1) = "3")
>
> rowq.Item(3) の型が String なのだとすれば…
>
> 案1) If rowq.Item(3) Like "3*"
>
> 案2) If Left(rowq.Item(3), 1) = "3"
>
> 案3) If (Not String.IsNullOrEmpty(rowq.Item(3)) AndAlso rowq.Item(3).SubString(0, 1) = "3")

魔界の仮面弁士さんアドバイスありがとうございます。
上記の方法でエラーは回避できました。やはり項目のプレチェックのような
ものは必要ですね
■No23146に返信(KYOUさんの記事)
> ■No23141に返信(魔界の仮面弁士さんの記事)
>>■No23138に返信(KYOUさんの記事)
> >>If (rowq.Item(3).SUBString(0, 1) = "3")
>>
>>rowq.Item(3) の型が String なのだとすれば…
>>
>>案1) If rowq.Item(3) Like "3*"
>>
>>案2) If Left(rowq.Item(3), 1) = "3"
>>
>>案3) If (Not String.IsNullOrEmpty(rowq.Item(3)) AndAlso rowq.Item(3).SubString(0, 1) = "3")
>
> 魔界の仮面弁士さんアドバイスありがとうございます。
> 上記の方法でエラーは回避できました。やはり項目のプレチェックのような
> ものは必要ですね
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板