• Domingo 19 de Mayo de 2024, 01:43

Autor Tema:  Un problema con DBNull en Visual Studio 2005  (Leído 3237 veces)

jotae

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Un problema con DBNull en Visual Studio 2005
« en: Viernes 14 de Enero de 2011, 02:50 »
0
Amigos: tengo este código que funciona si existen registros que cumplan el select pero de lo contrario me da el siguiente error:

La conversión del tipo DBNULL en el tipo integer no es válida

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

Pero eso es precisamente lo que trato de controlar: que si TOTALP es 0, haga una cosa y si no, otra. Lo peor de todo es que he probado unos diez códigos diferentes pero no hay forma de que funcione. Necesito de su ayuda. Gracias!!!

jotae

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Un problema con DBNull en Visual Studio 2005
« Respuesta #1 en: Viernes 14 de Enero de 2011, 04:21 »
0
Gracias a todos. Por fin logré solucionarlo con este código: Si a alguien le sirve, aquí lo dejo. Funciona OK!!

   
Código: vb.net
  1. Sql = "SELECT SUM(monto) As TOTALP from meses where status='ACTIVO' and mespago= '" & vMes & "' and ano= " & vAno & ""
  2.    cmd = New OleDbCommand(Sql, con)
  3.    dread = cmd.ExecuteReader()
  4.    While dread.Read
  5.     If dread("TOTALP") Is DBNull.Value Then
  6.      txtPendientePagado.Text = "No hay registros"
  7.     Else
  8.      vTotal = dread("TOTALP")
  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
  17.