In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Error en oSqlQuery

Foro de Xailer profesional en español
Responder
SERCOEMCA
Mensajes: 4
Registrado: Vie Ago 14, 2015 1:42 am

Error en oSqlQuery

Mensaje por SERCOEMCA »

Saludos cordiales, tengo un problema intentando ejecutar una consulta Sql que maneja internamente un par de variables (variables que no son de base de datos) sino de la consulta sql como tal.

Un ejemplo de esta consulta es:
SELECT @var1,@var2,help_keyword_id
FROM (SELECT @var1:='1') AS aa, (SELECT @var2:='1') AS bb,mysql.help_keyword

El error cuanto intento hacer ::oSqlQuery:lOpen:=.T. es el siguiente:

---------------------------
Xailer: DataControls error
---------------------------
MySQL:SHOW INDEX FROM (SELECT

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(SELECT' at line 1 [# 1064]

En procedimiento: TFORM1:BUTTON1CLICK línea: 43
---------------------------
Aceptar
---------------------------
Avatar de Usuario
xhermita
Mensajes: 177
Registrado: Vie Feb 18, 2011 10:05 pm
Ubicación: Las Palmas de Gran Canaria
Contactar:

Re: Error en oSqlQuery

Mensaje por xhermita »

¿Has probado la consulta en alguna herramienta SQL?

Es que me da que las sentencia no esta bien estructurada.

Yo utilizo MYSQL y para probar las consultas el SQLYog y me resuelve muchas dudas.

Saludos
Pedro Amaro
2PC Service

Xailer / Néfele / MySQL-MariaDB / SQLServer
SERCOEMCA
Mensajes: 4
Registrado: Vie Ago 14, 2015 1:42 am

Re: Error en oSqlQuery

Mensaje por SERCOEMCA »

Si , efectivamente, nosotros trabajamos de la misma manera, con MySql y el SQLYog.
Y el SqlYOG corre perfecto, sin novedad.

La consulta que yo deje: SELECT @var1,@var2,help_keyword_id FROM (SELECT @var1:='1') AS aa, (SELECT @var2:='1') AS bb,mysql.help_keyword

es una consulta genérica para mostrar el error que presenta con SqlQuery y el DataSet de Xailer. Si tienes unos minutos para hacer la prueba puedes crear
un oMySQLDataSource con los datos de conexion, luego creas un SQLQuery definidiendo que su DataSource sea el oMySQLDataSource y luego simplemente
defines la consulta introduciendo la consulta en el oSQLQuery1:cSelect y cuando intentas hacer ::oSQLQuery1:lOpen:=.T. da el error.

Error
---------------------------
GPF (Code = c0000005):
Access violation
TMYSQLDATASOURCE:SQLGETROWS (0)
TMYSQLRECORDS:QUERYALL (288)
TMYSQLRECORDS:OPEN (192

El problema me parece es que el metodo SQLGetRows que le pertenece a la clase XMySQLDataSource contenida en MySQL.prg de los fuentes de xailer es un metodo reservado (RESERVED) y no tenemos, nosotros como usuarios, una forma de entender que es lo que aquí adentro sucede y por que revienta el error si en un cliente sql como el SqlYog lográ ejecutar la consulta sin ninguna novedad.
Avatar de Usuario
xhermita
Mensajes: 177
Registrado: Vie Feb 18, 2011 10:05 pm
Ubicación: Las Palmas de Gran Canaria
Contactar:

Re: Error en oSqlQuery

Mensaje por xhermita »

Efectivamente, lo he probado con SQLYog y va bien y siguiendo tus pasos falla estrepitosamente.

Es posible que tenga que ver en como Xailer procesa la cadena del select, pero ni idea de como resolverlo.

Saludos.
Pedro Amaro
2PC Service

Xailer / Néfele / MySQL-MariaDB / SQLServer
SERCOEMCA
Mensajes: 4
Registrado: Vie Ago 14, 2015 1:42 am

Re: Error en oSqlQuery

Mensaje por SERCOEMCA »

Exactamente, pues te comento, las clases que usa xailer están definidas en la carpeta SOURCE del directorio donde se instala xailer.
Los archivos PRG puedes copiarlos en la carpeta Source de tu programa e incluirlo a tu proyecto desde el menú:

Proyecto->Añadir fichero al proyecto

Una vez que compiles, te darás cuenta que se ha compilado un nuevo prg, y podrás ver que sucede internamente,
es decir, la programación que normalmente no vemos, gracias a que este codigo lo manejamos a través de los componentes prácticamente
sin darnos cuenta, pero puede ser muy util si necesitas validar algo en especifico o obtener alguna funcionalidad que no este contemplada
en la clase original de xailer.

Aqui el detalle es que el metodo SQLGetRows (donde da el estrepitoso error) es un metodo reservado (RESERVED) y no tenemos, nosotros como usuarios, una forma de entender ni intentar resolver el error.
Responder