Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => 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 (vb) [Seleccionar]

    Private Function Ejecutar() As Boolean
        Debug.Print Time & " - " & Consulta & vbCrLf
               
        If Not cnnDatos.Execute(Consulta) Is Nothing Then
            Set rsDatos = cnnDatos.Execute(Consulta)
            If Not (rsDatos.BOF And rsDatos.EOF) Then rsDatos.MoveFirst
            Ejecutar = True
        Else
            Ejecutar = False
        End If
    End Function


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 (vb) [Seleccionar]


Private Function Ejecutar() As Boolean
    Debug.Print Time & " - " & Consulta & vbCrLf
    If Not cnnDatos Is Nothing Then
        Set rsDatos = cnnDatos.Execute(Consulta)
        If Not rsDatos Is Nothing Then
            Ejecutar = Not (rsDatos.BOF And rsDatos.EOF)
            If Ejecutar Then rsDatos.MoveFirst
        End If
    End If
End Function



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
Cita de: 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.

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 )