Ver Mensaje Individual
  #16  
Antiguo 26-05-2012
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Reputación: 21
AzidRain Va camino a la fama
A reserva de que como casi siempre me caigan a palos por regañón (y otras cosas...):

En primer lugar si prestamos atención (un poquito) al mensaje de la excepción
Cita:
SQL error: You have an error in your sql syntax; check the manual that corresponds to your MySql server version for de right syntax to use near 'LIKE 'usuarios'' at line 1'
Vemos que la excepción NO es generada por Zeos sino por el motor de bd (MySQL en este caso), Zeos lo único que hace es mostrar el error que el motor le devolvió.

Segundo:
El mensaje:
Cita:
"Source File not found: ZDbcMySqlUtils.pas"
Es debido a que el consultante está depurando dentro del IDE por lo que éste trata de encontrar la instrucción que generó el error, pero dado que no se indicó un PATH para el código fuente de Zeos entonces no hay forma de mostrarlo. Recordemos que no es necesario contar con los fuentes para hacer que un paquete funcione. Si fuera un problema de Zeos, simplemente nuestro amigo no hubiera podido instalar los componentes.

Tercero:
Regresando a la excepción arrojada por el programa notamos que el motor se está quejando de una consulta que incluye un "LIKE":
Cita:
'LIKE 'usuarios''
La consulta de que sospecha nuestro amigo no contiene ningun LIKE, ergo, la consulta que provoca el error se encuentra en algún otro lado de su proyecto.

Solución:

Hay que buscar en todos los TZQuery para encontrar cual contiene la instrucción citada, posteriormente hay que verificar que no se haya dejado por error (casi a nadie le pasa [sarcasmo incluído]) con la propiedad "Active=TRUE" en tiempo de diseño ya que en esos casos Delphi abre la consulta de manera automática aunque no hagamos un "Open".

Finalmente, parece que en el query al que nuestro amigo hace un Open, tienen algunas instrucciones en su evento BeforeOpen o bien AfterOpen que abren otra consulta que es la que provoca el error. Por lo que pareciera que el error sucede al hacer "Open" en el query citado.



Finalmente, una aclaración respecto a ExeclSQL y Open:

ExecSQL por definició no devolverá datos ya que está diseñada para ejecutar consultas que no lo hacen como INSERT, DELETE o UPDATE sin que esto quiera decir que no podamos ejecutar un SELECT, salvo que los datos devueltos no son tomados en cuenta pues como ya mencioné, ExecSQL no espera que le devuelvan nada.
Open, por su parte SI es la que se debe utilizar para ejecutar un SELECT.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita