4

私はこの方法を持っています:

Private Function convertInteger(intInteger As Object) As Integer

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

End Function

ただし、次のエラーが返されます。

演算子「=」はタイプ「整数」およびタイプ「dbnull」に対して定義されていません

DBnull値を0に変換しようとしています。

しかし、問題は、変換しようとしている値が常にDBnullであるとは限らないことです。それで、これをどのように処理する必要がありますか?

4

3 に答える 3

3

これを試して

Private Function convertInteger(intInteger As Object) As Integer

    If intInteger = DBNull.Value Then
        Return 0
    End If

    Return intInteger

End Function

[Tim Schmelter]が提案しているように、Nullable型を調べてください

于 2012-09-17T11:01:00.047 に答える
1

これを試して

Private Function convertInteger(ByVal intInteger As Object) as Integer
   If IsDBNull(intInteger) Then
       Return 0
   Else
       Return CInt(intInteger)
   End if
End Function
于 2015-03-30T10:27:43.683 に答える
1
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
于 2019-10-08T19:44:19.133 に答える