Autor Tema: Problema en Consulta al utilizar el MySql  (Leído 12708 veces)

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

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Problema en Consulta al utilizar el MySql
« en: Enero 06, 2015, 10:08:09 am »
Hola amigos estoy haciendo una app que funciona tanto en Access como en Mysql (de forma localhost).
Y la cuestion es que tengo una consulta que en Access me funciona correctamente pero no así en el MySql..
esta es la consulta

 STRSQL = "SELECT t_Usuarios.Admin From t_Usuarios Where (((t_Usuarios.UserName) = 'Admin') And ((t_Usuarios.Password) = '123'))GROUP BY t_Usuarios.Admin;"

Y esta es la funcion a la que llamo y me devuelve  -1 rs.RecordCount

Código: [Seleccionar]
Public Function isRecordExist(STRSQL As String) As Boolean
    Call AbrirBase
   
    rs.Open STRSQL, DB, adOpenStatic, adLockOptimistic
       
        If rs.RecordCount < 1 Then
            isRecordExist = False
        Else
            isRecordExist = True
        End If
       
    rs.Close
    Set rs = Nothing
   
End Function

ACLARO QUE EL REGISTRO EXISTE CON ESOS DATOS QUE SE ESTAN BUSCANDO

Que es lo que pasa ?
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Problema en Consulta al utilizar el MySql
« Respuesta #1 en: Enero 06, 2015, 12:49:17 pm »
Antes de rs.open... agrega esta linea:

rs.CursorLocation = adUseClient

y prueba.

Para que no la repitas la puedes poner dentro de AbrirBase

Saludos
Me encuentras en YAcosta.com

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Problema en Consulta al utilizar el MySql
« Respuesta #2 en: Enero 06, 2015, 02:24:12 pm »
Antes de rs.open... agrega esta linea:

rs.CursorLocation = adUseClient

y prueba.

Para que no la repitas la puedes poner dentro de AbrirBase

Saludos


Ok lo pruebo y te digo!!

 Imagino que eso quiere decir que se ejecute la consulra en el lado del cliente verdad?
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Luffy

  • Kilobyte
  • **
  • Mensajes: 90
  • Reputación: +4/-2
  • Desarrollar es el arte de crecer no de crear.
    • Ver Perfil
Re:Problema en Consulta al utilizar el MySql
« Respuesta #3 en: Enero 06, 2015, 04:13:16 pm »
Creo que es un pequeño problema de sintaxis, si copiaste literalmente la cadena de STRSQ el GROUP BY debe de ir separado del parentesis. Otra cosa que creo que es el problema es que en mysql con código nunca he puesto el nombre de la tabla.campo solamente campo osea

Código: [Seleccionar]


 STRSQL = "SELECT Admin From t_Usuarios Where UserName = 'Admin' And Password = '123' GROUP BY Admin"


Tambien quite el exceso de parentesis y el ; del final que en mysql no es necesario. prueba y me dicen alguna de las dos respuestas te puede servir.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Problema en Consulta al utilizar el MySql
« Respuesta #4 en: Enero 06, 2015, 04:38:08 pm »
Un punto para Yvan y un punto para Luffy al final eran las 2 cosas por que luego de hacer varias pruebas le quite todos los nombre de las tablas.campo como sugirió luffy y no andaba y le coloque la linea de Yvan y BINGO!!!!

GRACIAS AMIGOS
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Problema en Consulta al utilizar el MySql
« Respuesta #5 en: Enero 06, 2015, 05:16:27 pm »
solucione un problema y me aparecio otro miren chicos dentro del mismo programa ahora al querer chequear si un usuario existe obtengo este error



y esta es la senctencia con que llamo a la función



STRSQL = "SELECT t_Usuarios.* From t_Usuarios WHERE ((Username)='" & txtInput(1).Text & "');"
If isRecordExist(STRSQL) = False Then
....


Código: [Seleccionar]
Public Function isRecordExist(STRSQL As String) As Boolean
    If DB = "" Then Call AbrirBase
   
    rs.CursorLocation = adUseClient
    rs.Open STRSQL, DB, adOpenStatic, adLockOptimistic
       
        If rs.RecordCount < 1 Then
            isRecordExist = False
        Else
            isRecordExist = True
        End If
       
    rs.Close
    Set rs = Nothing
   
End Function
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Jeronimo

  • Gigabyte
  • ****
  • Mensajes: 402
  • Reputación: +33/-2
    • Ver Perfil
Re:Problema en Consulta al utilizar el MySql
« Respuesta #6 en: Enero 06, 2015, 05:41:27 pm »
En principio no veo nada fuera de lugar.
¿Las variables DB y rs están creadas a nivel global?
¿Probaste llamando a la función "AbrirBase" sin verificar el valor de "DB"?

Jerónimo


Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Problema en Consulta al utilizar el MySql
« Respuesta #7 en: Enero 06, 2015, 06:47:45 pm »
SI he provado !! y a veces anda y a veces no.!!

Creo que el problema lo estoy teniendo en la apertura y cierre de las base de datos.

SI ESTOY TRABAJANDO CON ACCESS ME CONVIENE ABRIRLA SOLO AL INICIO Y NO VOLVER A CERRARLA HASTA SALIR DEL PROGRAMA ES ASI?

Ahora en MySql es igual si trabajo en MODO local ? No se cierra la conexion cada xx tiempo ? digo por si el soft queda un tiempo inactivo ..
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Problema en Consulta al utilizar el MySql
« Respuesta #8 en: Enero 06, 2015, 07:17:21 pm »
Buena pregunta lo de saber que pasa con el MySQL local, no te sabria decir porque nunca tuve experiencia de usar MySQL de forma local, no se como se comporta o donde hay que configurar.

Con Access si estas en local abre una sola vez y no lo cierres hasta que cierres el programa y solo maneja los rs.

Y lo que sucede con el error es que estas cerrando el recordset siendo que aun en algún punto aun lo estas usando.

Mayormente me curaba de espanto no cerrando el recordset y sino antes de volverlo abrir lo cierro de esta forma:

if rs.state then rs.close
rs.open etc etc.

Me encuentras en YAcosta.com

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Problema en Consulta al utilizar el MySql
« Respuesta #9 en: Enero 06, 2015, 07:27:53 pm »
También creo que rs.CursorLocation = adUseClient no debería estar en esa función que lo que hace es dar verdadero o falso si existe o no registros, esa inicializacion debiera estar donde declaras la variable rs.

Luego tengo una duda, nada importante, pero... ¿que es mas rapido? preguntar si "algo es menor a" o "algo es igual a". Quiza da lo mismo pero finalmente para evitar error de ojo yo preferiria cambiar esto:

Código: (VB) [Seleccionar]
If rs.RecordCount < 1 Then
   isRecordExist = False
Else
   isRecordExist = True
End If

por esto:

Código: (VB) [Seleccionar]
       
If rs.RecordCount = 0 Then
   isRecordExist = False
Else
   isRecordExist = True
End If

Saludos
Me encuentras en YAcosta.com

Jeronimo

  • Gigabyte
  • ****
  • Mensajes: 402
  • Reputación: +33/-2
    • Ver Perfil
Re:Problema en Consulta al utilizar el MySql
« Respuesta #10 en: Enero 06, 2015, 08:01:17 pm »
Yo lo uso en red local y cierro la conexión cuando se cierra el sistema y nunca tuve problemas.

Jerónimo

Luffy

  • Kilobyte
  • **
  • Mensajes: 90
  • Reputación: +4/-2
  • Desarrollar es el arte de crecer no de crear.
    • Ver Perfil
Re:Problema en Consulta al utilizar el MySql
« Respuesta #11 en: Enero 06, 2015, 11:01:28 pm »
En efecto en MySQL tienes que abrir y cerrar la conexión cada vez que haces una transacción. En Access pues puedes mantenerlo abierto o de esta misma forma.

Yo en lo personal hago esto.

Creo una clase donde manejo todo lo que es data osea un sub dentro de la clase que se llame conectar y es de forma privada, otro sub público donde le tiro la cadena sql pero aqui abro la conexión, ejecuto el sql y cierro la conexión si hay algún error cierro la conexión y tiro un mensaje de error.

Jeronimo

  • Gigabyte
  • ****
  • Mensajes: 402
  • Reputación: +33/-2
    • Ver Perfil
Re:Problema en Consulta al utilizar el MySql
« Respuesta #12 en: Enero 06, 2015, 11:39:42 pm »
Si embarro el tema del hilo con este mensaje, les pido disculpas y que, por favor, lo ignoren.

Luffi: como dije antes, yo abro la conexión cuando se inicia el aplicativo, se hacen todas las transacciones necesarias durante todo el día y, al cerrar el aplicativo, cierro la conexión. Hasta ahora no he tenido ningún problema. ¿Cuáles puedo tener trabajando de esta manera?
Muchas gracias.

Jerónimo

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Problema en Consulta al utilizar el MySql
« Respuesta #13 en: Enero 07, 2015, 12:23:11 am »
Estoy de acuerdo que en un entorno local (red local) se abra la conexión una vez y no se cierre hasta que muera el aplicativo, en realidad así lo hago desde hace años en varios sitios y sin problemas, sin embargo en una conexión por internet si considero que hay que conectarse y desconectarse por cada transacción.
Recuerdo que cuando probé conectar mi aplicativo a un MySQL en hosting abrí la transacción una sola vez y al cabo de unos segundos ya estaba desconectado sin yo haberlo hecho y esto porque en la configuración del MySQL (no recuerdo en que parte hace mucho que no veo eso) estaba especificado el tiempo de conexión, asi que mi aplicativo que se conecta a una BD en hosting si la conecto y desconecto por cada transacción, iba lenta hasta que optimicé las consultas para web y ademas las paginé.
Nunca usé un MySQL en mi PC o red local, entiendo que el amigo Jeronimo lo está haciendo y abriendo la conexión una sola vez... mi pregunta a él es ¿manipulaste o configuraste el tiempo de conexión en alguna parte del MySQL o con algún code desde VB6?.

SAludos
Me encuentras en YAcosta.com

Jeronimo

  • Gigabyte
  • ****
  • Mensajes: 402
  • Reputación: +33/-2
    • Ver Perfil
Re:Problema en Consulta al utilizar el MySql
« Respuesta #14 en: Enero 07, 2015, 01:16:52 am »
Nunca configuré ni manipulé el tiempo de conexión. De hecho, me enteré de que eso se configuraba cuando aquí se planteó lo que comenta Yván acerca del cierre automático de la conexión en servidores web.
Hasta ahora nunca he tocado nada de eso. Y mis aplicativos abren la conexión cuando van a validar el usuario de ingreso y la cierran cuando se sale de ellos.
Pregunté a Luffy acerca de su punto de vista porque a lo mejor nunca me pasó nada de casualidad y estoy con algún riesgo latente de que algo salga mal.
Muchas gracias.

Jerónimo