Error al convertir de DBNull a Long

05/08/2004 - 21:08 por OSCAR | Informe spam
Hooola

A ver si me podeis ayudar...

En el If del dr.Read() me devuelve un NULL y me da error al
convertir al tipo Long. Si hay un registro en la base de
datos todo me va ok, pero si no hay ningún registro me peta
y me dice que Error al convertir del tipo DBNull al tipo
Long. Os paso el código, primero del stored procedure y
luego de la consulta...

-
CREATE PROCEDURE sp_obtenerIdArbol AS

select max(IdArbol_Ar) + 1 from Arboles
GO
-
Public Shared Function obtenerNumeroLicencia() As Long
Dim cn As New SqlConnection(cadenaConexión)
Dim cmd As New SqlCommand("sp_obtenerNumLic", cn)
Dim dr As SqlDataReader
Dim numLicencia As Long

Try

cn.Open()

cmd.CommandType = CommandType.StoredProcedure
dr = cmd.ExecuteReader

If dr.Read() Then

numLicencia = dr(0)
Else

numLicencia = 1
End If

Catch ex As Exception

Throw ex
Finally

dr.Close()
If cn.State = ConnectionState.Open Then

cn.Close()
End If
End Try

Return numLicencia
End Function
-

GRACIAS!!

nos vemos

adios adios
 

Leer las respuestas

#1 Cesar Rivera
05/08/2004 - 22:35 | Informe spam
Saludos :),

No pareciera que el código esté mal. Más bien parece que el DataReader trae
un registro cuyo valor es DBNull y es por eso que el dr.Read() funciona. En
tal caso te sugiero que pruebes lo siguiente:

If dr.Read() Then
numLicencia = IIF(IsDBNull(dr(0)),1,dr(0))
Else
numLicencia = 1
End If

o lo mismo:

If dr.Read() Then
If IsDBNull(dr(0)) Then
numLicencia = 1
Else
numLicencia = dr(0)
End If
Else
numLicencia = 1
End If



"OSCAR" wrote:

Hooola

A ver si me podeis ayudar...

En el If del dr.Read() me devuelve un NULL y me da error al
convertir al tipo Long. Si hay un registro en la base de
datos todo me va ok, pero si no hay ningún registro me peta
y me dice que Error al convertir del tipo DBNull al tipo
Long. Os paso el código, primero del stored procedure y
luego de la consulta...

-
CREATE PROCEDURE sp_obtenerIdArbol AS

select max(IdArbol_Ar) + 1 from Arboles
GO
-
Public Shared Function obtenerNumeroLicencia() As Long
Dim cn As New SqlConnection(cadenaConexión)
Dim cmd As New SqlCommand("sp_obtenerNumLic", cn)
Dim dr As SqlDataReader
Dim numLicencia As Long

Try

cn.Open()

cmd.CommandType = CommandType.StoredProcedure
dr = cmd.ExecuteReader

If dr.Read() Then

numLicencia = dr(0)
Else

numLicencia = 1
End If

Catch ex As Exception

Throw ex
Finally

dr.Close()
If cn.State = ConnectionState.Open Then

cn.Close()
End If
End Try

Return numLicencia
End Function
-

GRACIAS!!

nos vemos

adios adios

Preguntas similares