Visual Basic.NET - Problemas con DBNull

 
Vista:

Problemas con DBNull

Publicado por David (116 intervenciones) el 07/06/2004 00:22:35
Hola. Mi problema es q al ejecutar este codigo:
Dim Adaptador As SqlDataAdapter = New SqlDataAdapter("SELECT * FROM AlbaranMp", conn)
Dim DataSet As DataSet = New DataSet
Adaptador.Fill(DataSet, "AlbaranMp")
Dim tabla As DataTable = DataSet.Tables("AlbaranMp")
Dim fila As DataRow
For Each fila In tabla.Rows
If fila("IdFacturaMp") = dr("IdFacturaMp") Then
fila("IdFacturaMp") = DBNull.Value
End If
Next
Dim comando As SqlCommandBuilder = New SqlCommandBuilder(Adaptador)
Adaptador.Update(DataSet, "AlbaranMp")

A veces funciona y otras veces me da el siguiente error
Información adicional: El operador no es válido para tipo 'DBNull' y tipo 'Integer'.
Lo que no entiendo es q en algnos albaranes funciona y en otros no. Alguien sabe q puede estar mal?
Gracias y un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas con DBNull

Publicado por Edgar (1501 intervenciones) el 07/06/2004 02:34:47
Hola...

Yo creo que el problema que tienes es que estás intentado comparar un valor nulo con un entero.. es decir, el problema no lo tienes en la asignación sino más bien en la comparación, ya que estas comparando un entero con nulo, los cuales son valores incompatibles

La solución sería comparar primero que el valor no sea nulo o simplemente asignar un valor que no sea válido, digamos cero o un número negativo para que le puedas dar la misma interpretación que el valor nulo...

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 153
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

RE:Problemas con DBNull

Publicado por Yamil Bracho (631 intervenciones) el 07/06/2004 16:08:50
Cada vez que leas algun valor de una tabla en tu BD chequea si el campo no es nulo usando Convert.IsDBNull(Tucampo). Asi te queda

For Each fila In tabla.Rows
If Convert.IsDBNull(fila("IdFacturaMp")) == False And COnvert.IsDBNull( dr("IdFacturaMp")) = False And If fila("IdFacturaMp") = dr("IdFacturaMp") Then
fila("IdFacturaMp") = DBNull.Value
End If

Lo otro que debes cheaquear es si el campo IdFacturaMap acepta nulos y creo que es mejor colocarles un valor centinela como cero o -1 si es un entero
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar