Не удается выяснить, куда добавить IsDBNull vb.net

#vb.net #datagridview

#vb.net #datagridview

Вопрос:

Я продолжаю получать эту ошибку:

Дополнительная информация: Оператор ‘=’ не определен для типа ‘DBNull’ и строки

Я попытался добавить проверку IsDBNull в код и не могу заставить ее работать. Вот мой код без моего понимания добавления IsDBNull:

 If EquationVariable = "=" Then  
        For Each R0w In Sorter.DataGridView1.Rows 
            Dim ColumnName As String = ListBox1.SelectedItem
            Sorter.DataGridView1.CurrentCell = Sorter.DataGridView1.Item(ColumnName, R0w.index)
                If Sorter.DataGridView1.CurrentCell.Value = SearchVariable Then
                    Sorter.DataGridView1.CurrentRow.DefaultCellStyle.ForeColor = Color.Red
                Else
                End If
        Next
    Else
        MsgBox(ListBox1.SelectedItem.ToString amp; " Doest not = " amp; SearchVariable)
    End If
  

Именно в этой строке я получаю ошибку:

 If PostalSorter.DataGridView1.CurrentCell.Value = SearchVariable Then
  

Вот как я пытался это исправить:

  If IsDBNull(PostalSorter.DataGridView1.CurrentCell.Value) Then
            Else
                If PostalSorter.DataGridView1.CurrentCell.Value = SearchVariable Then

                    PostalSorter.DataGridView1.CurrentRow.DefaultCellStyle.ForeColor = Color.Red
                Else

                End If
            End If
  

Комментарии:

1. если текущее значение ячейки равно DBNull, вы не можете сравнить его с чем-либо. Покажите, как вы пытались это исправить

Ответ №1:

Вы можете попробовать следующее:

 If Not IsDBNull(Sorter.DataGridView1.CurrentCell.Value) AndAlso Sorter.DataGridView1.CurrentCell.Value = SearchVariable Then
      Sorter.DataGridView1.CurrentRow.DefaultCellStyle.ForeColor = Color.Red
  

AndAlso Оператор удобен в этом случае, потому что, в отличие от обычного And , если он сталкивается с условием, которое оценивается как false , он не читает дальше. Выполняя наше первое условие Not isDBNull и используя AndAlso , мы гарантируем, что сравнение, вызывающее проблему, происходит только в том случае, если на самом деле CurrentCell.Value не DBNull .