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

controlar error de un recordset

Estas en el tema de controlar error de un recordset en el foro de Visual Basic clásico en Foros del Web. Estoy haciendo una consulta a una BBDD SQL (en otros posts se pueden ver) y me gustaria controlar 2 possibles errores: 1.- Si el valor ...
  #1 (permalink)  
Antiguo 01/02/2008, 09:31
 
Fecha de Ingreso: julio-2005
Mensajes: 140
Antigüedad: 18 años, 9 meses
Puntos: 0
controlar error de un recordset

Estoy haciendo una consulta a una BBDD SQL (en otros posts se pueden ver) y me gustaria controlar 2 possibles errores:

1.- Si el valor es NULL me mande un MsgBox y que me salga de la funcion.
2.- Si no encuentra valores (que no sea valido) que me mande un MsgBox y que me salga de la funcion.

El codigo que tengo en el boton es:

Código:
Private Sub Button1_Click()
    Dim cnn As ADODB.Connection
    Dim sql As String
    Dim rs As Recordset
    Dim campo As ADODB.Field
    Set cnn = CreateObject("ADODB.Connection")
    cnn.ConnectionString = "DSN=qsmt;uid=qsmtcons;pwd=qsmtcons;"
    cnn.Open
    sql2 = "select es.DESCRIPCION_ESTADO ESTAT,................"    
    Set rs = cnn.Execute(sql2)
    rs.MoveFirst           
    Do While Not rs.EOF
            list1.AddItem ("DATOSSSSSSSSSSSSS: ") 
            rs.MoveNext
    Loop
End Sub
Cuando falla, siempre se me marca de color amarillo la linea:
sql2 = "select es.DESCRIPCION_ESTADO ESTAT,................"

gracias!

Última edición por guif; 01/02/2008 a las 10:17
  #2 (permalink)  
Antiguo 01/02/2008, 15:01
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: controlar error de un recordset

No indicas el error que marca en esa línea, pero me imagino que será algo como "Variable no definida"
y eso es porque tendrás la instrucción al principio del módule "Option Explicit" y no has declarado la variable "sql2" pero sí la variable "sql"

intenta declarando la variable "sql2" como String o asignas la sentencia a la variable "sql"

Y para controlar los errores lo en vías a una etiqueta:

On Error Goto Etiqueta
....
Etiqueta:
If Err.Number = xxx Then
.. acciones
Else
...otras acciones
End If
  #3 (permalink)  
Antiguo 04/02/2008, 03:56
 
Fecha de Ingreso: julio-2005
Mensajes: 140
Antigüedad: 18 años, 9 meses
Puntos: 0
Re: controlar error de un recordset

He ampliado el codigo un poco pero tampoco me funciona.
Me gustaria poner 3 preguntas sobre esto:

1.- Tengo que poner Exit Function??? Estoy dentro de un boton, por lo tanto creo que no estaria bien...
2.- Si no pongo ningun valor, al hacer un Debug me da el siguiente error: run-time error '13' Type mismatch
3.- Y si el valor no es valido?? Puede ser nullo pero me gustaria tambien detectar que si no existe me lo diga.

Código:

Do While Not rs.EOF
If IsNull(rs("clave")) Then
MsgBox "Dato null"
Exit Function
list1.AddItem (rs("clave"))
inventaris.AddItem (rs("clave"))
rs.MoveNext
Loop
  #4 (permalink)  
Antiguo 04/02/2008, 06:00
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: controlar error de un recordset

Bueno, esto creo que no tiene nada que ver con la pregunta original, pero intentaré contestar a las preguntas

1.- Tienes que poner Exit Sub ya que no estás en una función.
2.- El error que dá es un error de tipos. Si el campo "clave" es de tipo texto, prueba poniéndolo así

If rs("clave") = "" Then
MsgBox "Dato null"
Exit Sub
Else
list1....
....
End If
3.- Faltaban las intrucciones Else y End If
  #5 (permalink)  
Antiguo 04/02/2008, 10:07
 
Fecha de Ingreso: julio-2005
Mensajes: 140
Antigüedad: 18 años, 9 meses
Puntos: 0
Re: controlar error de un recordset

poniendo esto me continua dando el error de antes y aparte no me entra en el MSGBOX

Código:
sql2 = sentencia SQL......

Set rs = cnn.Execute(sql2)
Do While Not rs.EOF
If rs("clave") = "" Then
MsgBox "Dato null"
Exit Sub
Else
        list1.AddItem (rs("clave"))
        inventaris.AddItem (rs("clave"))
        rs.MoveNext
End If
End Sub
  #6 (permalink)  
Antiguo 04/02/2008, 11:10
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: controlar error de un recordset

Pero.... ¿en qué línea dá el error 13?

Qué tipo de control es inventaris?
  #7 (permalink)  
Antiguo 05/02/2008, 04:36
 
Fecha de Ingreso: julio-2005
Mensajes: 140
Antigüedad: 18 años, 9 meses
Puntos: 0
Re: controlar error de un recordset

he modificado un poc oel codigo:

Código:
sql2 = "select p.clave AS clave from QSMTOWN.peticiones p, QSMTOWN.activos a where p.id_inventario=a.id_activo(+) and a.id_inventario = " & CLng(inventario)

Set rs = cnn.Execute(sql2)
Do While Not rs.EOF

If (rs("clave")) = "" Then
MsgBox "Dato null"
Else
        inventaris.AddItem (rs("clave"))
        rs.MoveNext
End If
Loop
en SQL2, al final donde pone "CLng(inventario)" inventario es el TextBox donde recojo el valor.

He cambiado esta linea de SQL2 por:

Código:
sql2 = "select p.clave AS clave from QSMTOWN.peticiones p, QSMTOWN.activos a where p.id_inventario=a.id_activo(+) and a.id_inventario = " & "'" & inventario & "'"
ahora si no pongo nada en el TextBox no me da el error pero no me salta el msgbox!!!!
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 22:12.