Autor Tema: Evitar error si el recordset esta vacio (0 filas devueltas)  (Leído 13324 veces)

0 Usuarios y 1 Visitante están viendo este tema.

raul338

  • Terabyte
  • *****
  • Mensajes: 894
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Evitar error si el recordset esta vacio (0 filas devueltas)
« en: Junio 09, 2010, 08:52:58 am »
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  ;D :-X?

k_arlytos

  • Megabyte
  • ***
  • Mensajes: 211
  • Reputación: +2/-4
    • Ver Perfil
Re:Evitar error si el recordset esta vacio (0 filas devueltas)
« Respuesta #1 en: Junio 09, 2010, 12:20:12 pm »
Que version de Mysql estas usando esta en español?
"Comentar el código es como limpiar el cuarto de baño; nadie quiere hacerlo, pero el resultado es siempre una experiencia más agradable para uno mismo y sus invitados"

ssccaann43

  • Moderador
  • Terabyte
  • *****
  • Mensajes: 970
  • Reputación: +97/-58
    • Ver Perfil
    • Sistemas Nuñez, Consultores y Soporte, C.A.
Re:Evitar error si el recordset esta vacio (0 filas devueltas)
« Respuesta #2 en: Junio 09, 2010, 01:18:29 pm »
Para detectar que no hay registro lo haces simplemente con EOF=True

Solo eso...!
Miguel Núñez.

wolf_kof

  • Visitante
Re:Evitar error si el recordset esta vacio (0 filas devueltas)
« Respuesta #3 en: Junio 09, 2010, 02:36:24 pm »
Para poder tener una descripcion del error te aconsejo esto

Código: (vb) [Seleccionar]

on error goto [variable]

    [codigo]

exit sub
[variable]:
                 msgbox err.description




raul338

  • Terabyte
  • *****
  • Mensajes: 894
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:Evitar error si el recordset esta vacio (0 filas devueltas)
« Respuesta #4 en: Junio 09, 2010, 08:50:37 pm »
Que version de Mysql estas usando esta en español?
Nop, ingles, ese no es el problema, la aplicacion funciona todo bien, solo que hay veces en las que la consulta no devuelve registros (ej: cliente nuevo no tiene facturas) tira error de comparar un objeto no asignado

Para detectar que no hay registro lo haces simplemente con EOF=True

Tira mismo error de arriba :S

Para poder tener una descripcion del error te aconsejo esto

Código: (vb) [Seleccionar]

on error goto [variable]

    [codigo]

exit sub
[variable]:
                 msgbox err.description

la descripcion me lo tira el debugger, y ..... no me gustan usar los gotos :)

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Evitar error si el recordset esta vacio (0 filas devueltas)
« Respuesta #5 en: Junio 10, 2010, 03:12:21 am »
Porque utilizas Execute y no Open?

Me encuentras en YAcosta.com

raul338

  • Terabyte
  • *****
  • Mensajes: 894
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:Evitar error si el recordset esta vacio (0 filas devueltas)
« Respuesta #6 en: Junio 10, 2010, 10:19:18 am »
Porque utilizas Execute y no Open?

Usaba open del recordset pero tira el mismo error, buscando un poco vi que Execute devuelve un recordset y para probar lo deje ahi :E

wolf_kof

  • Visitante
Re:Evitar error si el recordset esta vacio (0 filas devueltas)
« Respuesta #7 en: Junio 10, 2010, 12:45:01 pm »
tenes que postear el codigo de (consulta)

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Re:Evitar error si el recordset esta vacio (0 filas devueltas)
« Respuesta #8 en: Junio 11, 2010, 02:46:58 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  ;D :-X?

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) And (rsDatos.RecordCount > 0) Then
                rsDatos.MoveFirst
                Ejecutar = True
            End If
        End If
    End Function

Ahi?

PD: borre lo de Ejecutar = False porque no es necesario, ya que por defecto es False.
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion

raul338

  • Terabyte
  • *****
  • Mensajes: 894
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:Evitar error si el recordset esta vacio (0 filas devueltas)
« Respuesta #9 en: Junio 11, 2010, 08:58:05 pm »
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) And (rsDatos.RecordCount > 0) Then
                rsDatos.MoveFirst
                Ejecutar = True
            End If
        End If
    End Function

Ahi?

PD: borre lo de Ejecutar = False porque no es necesario, ya que por defecto es False.

Parece funcionar :) gracias

En cuando lo de ejecutar = false, cuando uno busca soluciones a un problema no le interesa la forma, primero es arreglarlo y luego ordenar lo demas xDDDD