Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: raul338 en 9 Junio 2010, 13:51 pm



Título: Capturar / evitar error en caso de recordset vacio
Publicado por: raul338 en 9 Junio 2010, 13:51 pm
Hoolas!!

Estoy programando un sistema de gestion en vb6 y mysql, con ado por codigo
todo va de maravilla, salvo que hay veces que salta error al intentar trabajar con un recordset vacio. Pero.... por mas que evalue si esta vacio me tira el error  :laugh:

Este es el codigo:
Código
  1.    Private Function Ejecutar() As Boolean
  2.        Debug.Print Time & " - " & Consulta & vbCrLf
  3.  
  4.        If Not cnnDatos.Execute(Consulta) Is Nothing Then
  5.            Set rsDatos = cnnDatos.Execute(Consulta)
  6.            If Not (rsDatos.BOF And rsDatos.EOF) Then rsDatos.MoveFirst
  7.            Ejecutar = True
  8.        Else
  9.            Ejecutar = False
  10.        End If
  11.    End Function
  12.  

Siendo cnnDatos la conexion a MySQL y rsDatos un recordset

El if que evalua si el lo que devuelve el cnnDatos.execute lo agregue para tratar de caputrar el error y asi devolver falso (y decir que no hay registro), pero hay veces que el debuger se para ahi, diciendo que no se puede "abrir" el recorset o que EOF = BOF o algo asi....

Alguna ayuda/sugerencia/copy&paste :xD :¬¬?


Título: Re: Capturar / evitar error en caso de recordset vacio
Publicado por: BlackZeroX en 9 Junio 2010, 19:15 pm

Código
  1.  
  2. Private Function Ejecutar() As Boolean
  3.    Debug.Print Time & " - " & Consulta & vbCrLf
  4.    If Not cnnDatos Is Nothing Then
  5.        Set rsDatos = cnnDatos.Execute(Consulta)
  6.        If Not rsDatos Is Nothing Then
  7.            Ejecutar = Not (rsDatos.BOF And rsDatos.EOF)
  8.            If Ejecutar Then rsDatos.MoveFirst
  9.        End If
  10.    End If
  11. End Function
  12.  
  13.  

Dulce Infierno Lunar!¡.


Título: Re: Capturar / evitar error en caso de recordset vacio
Publicado por: karmany en 11 Junio 2010, 20:35 pm
Es posible también también que el error se produzca, no porque un campo esté vacío sino porque el campo sea nulo. Este error es muy común, más cuando se trabaja con fechas. Cuando trabajes con valores nulos, haz lo siguiente:
Text1.Text = "" & textonulo 'evitas el error
valor = val("0" & texto_de_valornulo) 'Val, Csng etc... trabajar con valores numéricos.


Título: Re: Capturar / evitar error en caso de recordset vacio
Publicado por: raul338 en 12 Junio 2010, 00:44 am
Es posible también también que el error se produzca, no porque un campo esté vacío sino porque el campo sea nulo. Este error es muy común, más cuando se trabaja con fechas. Cuando trabajes con valores nulos, haz lo siguiente:
Text1.Text = "" & textonulo 'evitas el error
valor = val("0" & texto_de_valornulo) 'Val, Csng etc... trabajar con valores numéricos.

Muchas gracias por el consejo, aunque el error sucedia exactamente en la linea del execute  :)
De todas formas nunca trabajo con nulls :D (DEFAULT "" es mejor para mi, sino me rompen los triggers :B )