Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Error en ejecucion

Estas en el tema de Error en ejecucion en el foro de Visual Basic clásico en Foros del Web. Hola a todos. Tengo un peroblema con una aplicacion que se conecta a una base de datos en access. Yo hago una consulta y muestro ...
  #1 (permalink)  
Antiguo 10/02/2009, 14:54
 
Fecha de Ingreso: febrero-2009
Mensajes: 10
Antigüedad: 15 años, 2 meses
Puntos: 0
Error en ejecucion

Hola a todos.
Tengo un peroblema con una aplicacion que se conecta a una base de datos en access.
Yo hago una consulta y muestro en textbox's, cada uno de los campos del registro que me devuelve la bd.
Al correrlo funciona bien, el problema es que si uno de los campos del registro que estoy buscando no tiene nada, truena la aplicacion y me da un mensaje de error en el cual dice que no se puede convertir el dbnull en el tipo string.
El problema es que solo lo hace cuando a alguno de los registros les falta un campo y cuando todos los campos tienen un valor los muestra bien.
Algien me podria ayudar para saber como manejar las excepciones para este caso o como valido el valor de cada columna que me devuelve la db?
Por su ayuda Gracias

Este es le codigo:


Dim intFila As Integer = 0
Dim StrFila As String

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dt As New DataTable
Dim intCve = TextBox1.Text
Dim strConexion As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=inventarioXP.mdb"
Dim strSQL As String = "SELECT * FROM prueba where [id]=" & intCve & ";"

Dim dataAdapter As New OleDb.OleDbDataAdapter(strSQL, strConexion)
dataAdapter.Fill(dt)
dataAdapter.Dispose()

TextBox1.Text = CStr(dt.Rows(intFila)("id"))
TextBox2.Text = CStr(dt.Rows(intFila)("nombre"))
If IsDBNull(dt.Rows(intFila)("nombre")) Then
TextBox3.Text = ""
Else
TextBox3.Text = CStr(dt.Rows(intFila)("apellido"))
End If

dt = Nothing

End Sub
  #2 (permalink)  
Antiguo 10/02/2009, 15:54
Avatar de ginitofl  
Fecha de Ingreso: diciembre-2006
Ubicación: Lima Perú
Mensajes: 349
Antigüedad: 17 años, 5 meses
Puntos: 22
Respuesta: Error en ejecucion

Cambia esto:

Código PHP:
TextBox1.Text CStr(dt.Rows(intFila)("id"))
TextBox2.Text CStr(dt.Rows(intFila)("nombre"))
If 
IsDBNull(dt.Rows(intFila)("nombre")) Then
TextBox3
.Text ""
Else
TextBox3.Text CStr(dt.Rows(intFila)("apellido")) 
por esto:

Código PHP:
TextBox1.Text "" CStr(dt.Rows(intFila)("id"))
TextBox2.Text "" CStr(dt.Rows(intFila)("nombre"))
If 
IsDBNull(dt.Rows(intFila)("nombre")) Then
TextBox3
.Text ""
Else
TextBox3.Text "" CStr(dt.Rows(intFila)("apellido")) 

Saludos.
  #3 (permalink)  
Antiguo 10/02/2009, 16:23
 
Fecha de Ingreso: febrero-2009
Mensajes: 10
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Error en ejecucion

Hola ginitofl:
Antes que nada... Gracias por tu respuesta.
Ya intente lo que me dijiste pero me sigue marcando error al hacer la busqueda de un registro que tiene campos vacios.
Cuando el registro esta completo los muestra bien.
Asi quedo mi codigo:

Dim intFila As Integer = 0
Dim StrFila As String

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dt As New DataTable
Dim intCve = TextBox1.Text
Dim strConexion As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=inventarioXP.mdb"
Dim strSQL As String = "SELECT * FROM prueba where [id]=" & intCve & ";"

Dim dataAdapter As New OleDb.OleDbDataAdapter(strSQL, strConexion)
dataAdapter.Fill(dt)
dataAdapter.Dispose()
TextBox1.Text = "" & CStr(dt.Rows(intFila)("id"))
TextBox2.Text = "" & CStr(dt.Rows(intFila)("nombre"))
TextBox3.Text = "" & CStr(dt.Rows(intFila)("apellido"))
dt = Nothing
Esta bien?


De antemano gracias por tu ayuda y tiempo
Saludos.....
  #4 (permalink)  
Antiguo 10/02/2009, 16:49
 
Fecha de Ingreso: febrero-2009
Mensajes: 10
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Error en ejecucion

Hola ginitofl:

Gracias por tu ayuda
Ya resolvi el problema... jejeje
La solucion.
Quitar la funcion CStr jijiji
Gracias por tu apoyo
Saludos
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 08:18.