controlla associato datatable per valore null vb.net

Attualmente sto lavorando in vb.net windows form con un back-end SQL. Ho due datatables che sono vincolati a due istruzioni SQL indipendenti e restituiscono entrambi due data-base molto semplici. Devo solo verificare se c’è un valore nullo in una delle due tabelle, indipendentemente. La prima query restituisce un singolo valore, letteralmente una singola cella. Ho sempre usato il seguente codice in un dgv per verificare la presenza di null

Dim Check As Integer = dt.Rows(1).cells(1).value 

Tuttavia questo non funziona qui, sembra essere perché il tipo di dati è un numero intero. Di solito con un DGV sto facendo un evento click e sto tirando da un dgv che un utente finale può vedere.

La seconda query sql è solo 2 celle. Dato che ha 2 righe e una colonna, ho bisogno di controllare entrambe le celle per assicurarmi che nessuna di esse sia nullo.

Mi sono guardato in giro online ma non trovo nulla che sembra funzionare per me.

————————aggiornare————————- —

  Public Shared Function ToInt32(Value As Object) As Integer If DBNull.Value.Equals(Value) Then Return 0 Else Return Convert.ToInt32(Value) End If End Function Dim ncheck As Integer ncheck = SafeConvert.ToInt32(dt.Rows(1)(1)) 

Come userò questo ncheck in un’istruzione if per eseguire un sottotitolo di uscita e una finestra di messaggio? Mi sembra che ncheck non sia un numero intero, ma si bloccherà su di me.

usa DbNull.Value :

  If Not DbNull.Value.Equals(dt.Rows(1).Item(1).value) Then ' do something Else ' do something else End If 

o usare

 If dt.Rows(1).Item(1).value=DbNull.Value 

Ecco una serie di metodi di conversione sicura che puoi utilizzare come metodi condivisi o convertirli in estensioni:

 Class SafeConvert Public Shared Function ToInt32(Value As Object) As Integer If DBNull.Value.Equals(Value) Then Return 0 Else Return Convert.ToInt32(Value) End If End Function Public Shared Function ToInt64(Value As Object) As Int64 If DBNull.Value.Equals(Value) Then Return 0 Else Return Convert.ToInt64(Value) End If End Function Public Shared Function ToDecimal(Value As Object) As Decimal If DBNull.Value.Equals(Value) Then Return 0 Else Return Convert.ToDecimal(Value) End If End Function Public Shared Shadows Function ToString(Value As Object) As String If DBNull.Value.Equals(Value) Then Return String.Empty Else Return Convert.ToString(Value) End If End Function End Class 

Esempio:

 Dim nCheck As Integer nCheck = SafeConvert.ToInt32(dt.Rows(1)(1)) ' or nCheck = SafeConvert.ToInt32(dt.Rows(0).Item(1)) 

Ovviamente, la riga deve essere valida e avere una cella in quell’indice, questo è solo un test per DBNull , non un NullReference .