ExcelファイルをASP.NETDataTableにインポートしました。特にインデックス2と3では、一部の値が空白になっています。これらの空白のフィールドをに設定したいと思います0
。
デバッグ時には、との値row.item(2)
はrow.item(3)
両方ともSystem.DBNull
です。興味深いことに、プログラムはステートメントを入力して値を0にIf
設定しますが、ステートメントを入力することはありません。何が起こっている?これが私のコードです:row.item(2)
ElseIf
If row.Item(2) Is Nothing OrElse row.Item(2).ToString = "" OrElse IsDBNull(row.Item(2)) Then
dt.Rows.Item(i).SetField(2, 0)
ElseIf row.Item(3) Is Nothing OrElse row.Item(3).ToString = "" OrElse IsDBNull(row.Item(3)) Then
dt.Rows.Item(i).SetField(3, 0)
End If
編集:
ティムの提案に従って、私は自分のコードを次のように修正しました。
If Not row.Field(Of Int32?)(2).HasValue Then
dt.Rows.Item(i).SetField(2, 0)
End If
If Not row.Field(Of Int32?)(3).HasValue Then
dt.Rows.Item(i).SetField(3, 0)
End If
ただし、これはエラーをスローしています-Object cannot be cast from DBNull to other types
デバッグ時、最初のループで:
row.Item(2) = 17
row.Item(3) = 1
理論的には、この反復をスキップして次の反復に進む必要があります。しかし、私のプログラムは上記のエラーですぐに例外をキャッチします。