4
votes

I'm having this method:

Private Function convertInteger(intInteger As Object) As Integer

    If IsDBNull(intInteger) Then
        convertInteger = 0
    Else
        convertInteger = cInt(intInteger)
    End If

End Function

But it returns this error:

operator '=' is not defined for type 'integer' and type 'dbnull'

Im trying to convert a DBnull value to 0..

But the problem is that the value im trying to convert is not always DBnull.. so how should i handle this?

3
Why don't you use a Nullable(Of Int32)? It has a HasValue. property. - Tim Schmelter
Enable Option Strict in the project settings. Then fix the compile errors. Then come back here. - Konrad Rudolph
Wow - that solved the problem Konrad! thanks a lot! - MMM

3 Answers

3
votes

Try this

Private Function convertInteger(intInteger As Object) As Integer

    If intInteger = DBNull.Value Then
        Return 0
    End If

    Return intInteger

End Function

As suggested by [Tim Schmelter], look into Nullable types

1
votes

Try this

Private Function convertInteger(ByVal intInteger As Object) as Integer
   If IsDBNull(intInteger) Then
       Return 0
   Else
       Return CInt(intInteger)
   End if
End Function
0
votes
Private Sub readValue()
    Dim cSql As String
    Dim oCnn as OleDbConnection
    Dim oCmd as OleDbCommand
    Dim oDataReader as OleDbDataReader
    Dim valor as Integer

    oCnn.open()

    cSql = "SELECT FIELD_NAME FROM TABLE"
    oCmd = New OleDbCommand(cSql, oCnn)
    oReader = oCmd.executeReader

    if oReader.HasRows then
       oReader.read()
       valor = IIf(IsDBNull(oDataReader("FIELD_NAME")), 0, oDataReader("FIELD_NAME"))
    End If
End Sub