Visual Basic Foro
Programación => Bases de Datos => Mensaje iniciado por: raul338 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:
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?
-
Que version de Mysql estas usando esta en español?
-
Para detectar que no hay registro lo haces simplemente con EOF=True
Solo eso...!
-
Para poder tener una descripcion del error te aconsejo esto
on error goto [variable]
[codigo]
exit sub
[variable]:
msgbox err.description
-
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
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 :)
-
Porque utilizas Execute y no Open?
-
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
-
tenes que postear el codigo de (consulta)
-
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:
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?
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.
-
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