Foros del Web » Programación para mayores de 30 ;) » Programación General »

Un problema con DBNull en Visual Studio 2005

Estas en el tema de Un problema con DBNull en Visual Studio 2005 en el foro de Programación General en Foros del Web. Amigos, por favor una ayuda: Tengo el siguiente código: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código vb: Ver original Private Sub btnPendiente_Click( ByVal sender As System. Object , ByVal ...
  #1 (permalink)  
Antiguo 13/01/2011, 11:25
 
Fecha de Ingreso: julio-2010
Mensajes: 8
Antigüedad: 14 años, 4 meses
Puntos: 0
Un problema con DBNull en Visual Studio 2005

Amigos, por favor una ayuda:

Tengo el siguiente código:

Código vb:
Ver original
  1. Private Sub btnPendiente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPendiente.Click
  2.   vTotal = 0
  3.   vMes = cmbMeses.SelectedItem
  4.   vAno = cmbAno.SelectedItem
  5.   Try
  6.    Sql = "SELECT SUM(monto) As TOTAL from meses where status='ACTIVO' and mesactual= '" & vMes & "' and ano= " & vAno & ""
  7.    cmd = New OleDbCommand(Sql, con)
  8.    dread = cmd.ExecuteReader()
  9.    While dread.Read
  10.     vTotal = dread("TOTAL")
  11.     txtPendiente.Text = String.Format("{0:n2}", vTotal)
  12.    End While
  13.    dread.Close()
  14.   Catch ex As Exception
  15.    MessageBox.Show(ex.Message, "", MessageBoxButtons.OK)
  16.   Finally
  17.   End Try
  18.  End Sub

El problema radica en que si hay registros válidos (al menos uno) funciona perfecto pero si no existen registros y el TOTAL es 0, da el siguiente error:

La conversión del tipo "DBNULL" en tipo INTEGER no es válida

Por favor, ¿como puedo prevenir que si TOTAL es Cero se salga de la rutina sin hacer nada?

He intentado varias cosas pero ninguna me funciona.

Gracias por su ayuda. Es muy urgente para mi.
  #2 (permalink)  
Antiguo 13/01/2011, 14:06
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Un problema con DBNull en Visual Studio 2005

Sql = "SELECT isnull(SUM(monto),0) As TOTAL from meses where status='ACTIVO' and mesactual= '" & vMes & "' and ano= " & vAno & ""

Con esto si tu consulta no te regresa nada "dbnull" en vez de tener el null tendrias un 0 y ahora si podrias condicionar tu codigo, si es 0 haz esto si no haz lo otro.

Saludos!
  #3 (permalink)  
Antiguo 13/01/2011, 16:24
 
Fecha de Ingreso: enero-2011
Mensajes: 8
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Un problema con DBNull en Visual Studio 2005

Cita:
Iniciado por Libras Ver Mensaje
Sql = "SELECT isnull(SUM(monto),0) As TOTAL from meses where status='ACTIVO' and mesactual= '" & vMes & "' and ano= " & vAno & ""

Con esto si tu consulta no te regresa nada "dbnull" en vez de tener el null tendrias un 0 y ahora si podrias condicionar tu codigo, si es 0 haz esto si no haz lo otro.

Saludos!
coincido con esta respuesta saludos!
  #4 (permalink)  
Antiguo 13/01/2011, 16:39
Avatar de omar190  
Fecha de Ingreso: septiembre-2008
Mensajes: 191
Antigüedad: 16 años, 2 meses
Puntos: 4
Respuesta: Un problema con DBNull en Visual Studio 2005

Puedes hacer lo que ya te indican o tambien puedes validar desde el mismo visual con la funcion isdbnull(campo), te arroja true o false segun sea el caso.
  #5 (permalink)  
Antiguo 13/01/2011, 18:25
 
Fecha de Ingreso: julio-2010
Mensajes: 8
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Un problema con DBNull en Visual Studio 2005

Gracias amigos pero ahora me genera este error usando esta línea:

Código vb:
Ver original
  1. Sql = "SELECT isnull(SUM(monto),0) As TOTAL from meses where status='ACTIVO' and mesactual= '" & vMes & "' and ano= " & vAno & "

Se utilizó un número incorrecto de argumentos con la función en la expresión de consulta 'isnull(SUM(monto),0)'


Intenté también con esto: (nullcheck es boolean)

Código vb:
Ver original
  1. While dread.Read
  2.     vTotal = dread("TOTAL")
  3.     nullCheck = IsDBNull("TOTAL")
  4.     If nullCheck Then
  5.      txtPendiente.Text = "No hay registros"
  6.     Else
  7.      txtPendiente.Text = String.Format("{0:n2}", vTotal)
  8. End If

Pero da el mismo error de antes:

La conversión del tipo "DBNULL" en tipo INTEGER no es válida

Última edición por alien51; 13/01/2011 a las 18:40
  #6 (permalink)  
Antiguo 13/01/2011, 21:16
 
Fecha de Ingreso: julio-2010
Mensajes: 8
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Un problema con DBNull en Visual Studio 2005

Gracias a todos. Por fin logré solucionarlo con este código: Si a alguien le sirve, aquí lo dejo. Funciona OK!!

Código vb:
Ver original
  1. Sql = "SELECT SUM(monto) As TOTALM from meses where status='ACTIVO' and mesactual= '" & vMes & "' and ano= " & vAno & ""
  2.    cmd = New OleDbCommand(Sql, con)
  3.    dread = cmd.ExecuteReader()
  4.    While dread.Read
  5.     If dread("TOTALM") Is DBNull.Value Then
  6.      txtPendiente.Text = "No hay registros"
  7.     Else
  8.      vTotal = dread("TOTALM")
  9.      txtPendiente.Text = String.Format("{0:n2}", vTotal)
  10.     End If
  11.    End While
  12.    dread.Close()
  13.   Catch ex As Exception
  14.    MessageBox.Show(ex.Message, "", MessageBoxButtons.OK)
  15.   Finally
  16.   End Try

Etiquetas: dbnull, studio, visual
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:14.