2016-03-24 12 views
1

私はVBのdatagridviewでnull値を置き換えようとしています。データはアクセスデータベースから読み込まれています。私がそれを実行するたびに、 "System.NullReferenceException"に関するエラーが発生します。DataGridView null値を置換する

Sub dataGridView1_CellFormatting(ByVal sender As Object, _ 
    ByVal e As DataGridViewCellFormattingEventArgs) _ 
    Handles DataGridView1.CellFormatting 

    If e.ColumnIndex = Me.DataGridView1.Columns(7).Index Then _ 
     ' AndAlso (e.Value IsNot Nothing) Then 


     With Me.DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex) 

      If e.Value.Equals("") Then 
       e.Value = "very bad" 
      End If 
     End With 

    End If 

End Sub 

この問題に関するお手伝いがあれば幸いです!

+0

""はDBNullと同じではなく、空の文字列もDBNullもNREと同じではありません – Plutonix

+0

あなたのデータを返す 'Access'呼び出しのコードを表示してください'DataGridView'に...これは、呼び出しで処理され、*** cellformattingイベントではありません。*** ... – Codexer

+0

これはあなたが探しているものですか? 'Private Sub frmViewAll_Load(送信側オブジェクトとしてEventArgsとして)MyBase.Loadを処理する Me.TblStudentsTableAdapter.Fill(Me.StudentRecords1DataSet.tblStudents)' – Donncha

答えて

0

実際のデータベース呼び出しを確認する必要があります。フィールドのいずれかがNullであるかどうかを確認し、そこに置き換えてください。そして、あなたは...ので、空の文字列に置き換える場合

IIF(ISNULL(yourcolumn),'', yourcolumn) 

これはそれ以外の場合は値を返しますが、列がnullあるかどうかを確認してます...コードでそれらを処理する必要はありません

0

IsDBNull試してみてください:

Dim abc As Integer 

abc= IIf(IsDBNull(DGVInvoice.Rows(max).Cells(3).Value) = True, 0, DGVInvoice.Rows(max).Cells(3).Value) 

DGVInvoiceは、あなたのデータグリッドで、maxは、あなたの最大行数です。

関連する問題