- PR -

DBNullをIntergerに変換したい

1
投稿者投稿内容
chelsea
常連さん
会議室デビュー日: 2007/12/19
投稿数: 48
投稿日時: 2008-02-15 15:14
VB2005です。
2つのDataGridView(dgv1,dgv2)があります。
dgv1とdgv2には同じ列カラム(顧客番号)があり
dgv1のある顧客番号カラムをクリックすると、dgv2が顧客番号カラムの同じ値の箇所までスクロールするようにしています。
下記がそのコードです。
コード:
        Dim y As Integer = dgv1.CurrentCell.RowIndex
        Dim yScl As Integer = dgv1(4, y).Value

        dgv2.FirstDisplayedScrollingRowIndex = yScl
        dgv2.CurrentCell = dgv2(4, yScl)


ですがdgv1の一番下の新規行(値が一切入っていない行)をクリックすると
   「演算子 '=' は 型 'DBNull' と 型 'Integer' に対して定義されていません。」
となりエラーになります。dgv1のValueがNullなら無視すればいいのか?と思い下記のコードを試してみましたが、やはり同じエラーになります。
コード:
       If dgv1(4, y).Value = DBNull.Value Then
		Exit Sub
	End If


DBNull.ValueをNothingに直してみたりもしましたが、今度は実行してdgv1の一番下の新規行(値が一切入っていない行)をクリックすると
   「演算子 '=' は 型 'DBNull' と 型 'Nothing' に対して定義されていません。」
となりまたもエラーになります。

DBNullをどうIntergerに変換すればよいのでしょうか?どなたかよろしくお願いします。
くまっち
大ベテラン
会議室デビュー日: 2008/01/18
投稿数: 169
お住まい・勤務地: 茨城県のどこか。
投稿日時: 2008-02-15 15:18
コード:
If dgv1(4, y).Value Is DBNull.Value Then


インスタンスの比較(Nothingも)はIs演算子を使用してください。

[ メッセージ編集済み 編集者: くまっち 編集日時 2008-02-15 15:19 ]
[ メッセージ編集済み 編集者: くまっち 編集日時 2008-02-15 15:20 ]
[前]Is DBNull
[後]Is DBNull.Value

[ メッセージ編集済み 編集者: くまっち 編集日時 2008-02-15 15:40 ]
chelsea
常連さん
会議室デビュー日: 2007/12/19
投稿数: 48
投稿日時: 2008-02-15 15:37
引用:

くまっちさんの書き込み (2008-02-15 15:18) より:
コード:
If dgv1(4, y).Value Is DBNull Then


インスタンスの比較(Nothingも)はIs演算子を使用してください。



コード:
If dgv1(4, y).Value Is DBNull.Value Then


DBNullだけでは「型が宣言されていません」、となったので
上記の様にIs DBNull.Valueでうまくできました。
Is演算子にするだけだったとは...勉強不足で申し訳ありません。

くまっちさんありがとうございました。
くまっち
大ベテラン
会議室デビュー日: 2008/01/18
投稿数: 169
お住まい・勤務地: 茨城県のどこか。
投稿日時: 2008-02-15 15:39
ぁ!! すみませんでした、DBNull.Valueでしたね。
前投稿記事も修正しておきます。
1

スキルアップ/キャリアアップ(JOB@IT)