Página 1 de 1
MySQLQuery
Publicado: Lun Feb 27, 2012 2:37 pm
por Andres Hocevar
Hola Foro
Tengo la version 2.4.4, y cuando compile una aplicacion que funcionaba en versiones anteriores (2.0) ya no lo hace, el problema es el siguiente:
ESTE CODIGO NO FUNCIONA
mSQL := "SELECT * FROM tabla LIMIT 0,20"
WITH OBJECT ::oSQLQuery1
:Close()
:oDataSource := AppData:oCon
:Cargo := oSQL
:cSelect := mSQL
:Open()
IF !:lOpen
CMNJ("Error No Abrio el Query")
ENDIF
IF :RecCount() = 0
MsgInfo("0 Registros ENCONTRADOS")
// ESTA CONECTADO Y NO HAY REGISTROS????
ENDIF
END
ESTE CODIGO SI FUNCIONA
//mSQL := "SELECT * FROM tabla LIMIT 0,20"
//EN EL IDE SE ASIGNO LA PROPIEDAD cSELECT
WITH OBJECT ::oSQLQuery1
:Close()
:oDataSource := AppData:oCon
:Cargo := oSQL
//:cSelect := mSQL
:Open()
IF !:lOpen
CMNJ("Error No Abrio el Query")
ENDIF
IF :RecCount() = 0
MsgInfo("0 Registros ENCONTRADOS")
// ESTA CONECTADO Y NO HAY REGISTROS????
ENDIF
END
En resumen si en tiempo de ejecucion cambio el valor de la propiedad "cSelect" el query abre (Open=.t.) pero siempre devuelve 0 registros!!!
Gracias a Todos y feliz comienzo de semana.
MySQLQuery
Publicado: Mar Feb 28, 2012 10:54 pm
por Andres Hocevar
Bueno nadie se anima a responder
Haciendo pruebas tambien ocurre este comportamiento en el IDE si colocamos por decir
cSelect := "select * from tabla"
y abrimos el query lOpen:=.T.
funciona bien
luego cambiamos
cSelect := "select * from tabla limit 0,20"
y no me trae mas registros..
pareciera que tiene que ver con el "limit"
hay alguien que le pase lo mismo???
Gracias
MySQLQuery
Publicado: Mié Feb 29, 2012 3:41 am
por Martin Del Angel
On 2/28/2012 3:54 PM, Andres Hocevar wrote:
> Bueno nadie se anima a responder
> Haciendo pruebas tambien ocurre este comportamiento en el
> IDE si colocamos por decir
>
> cSelect := "select * from tabla"
>
> y abrimos el query lOpen:=.T.
>
> funciona bien
>
> luego cambiamos cSelect := "select * from tabla limit 0,20"
>
> y no me trae mas registros..
>
>
> pareciera que tiene que ver con el "limit"
>
> hay alguien que le pase lo mismo???
>
> Gracias
>
>
Hola Andres:
Jamas nos ha pasado eso que mencionas.
Mandame un pequeño ejemplo donde se reproduzca ese error.
Saludos....
MySQLQuery
Publicado: Mié Feb 29, 2012 5:20 am
por Andres Hocevar
Gracias por tu respuesta
Aqui tienes un ejemplo con un grid y 2 botones,
el primero cambia cSelect con limite
el segundo lo restaura,
en mi caso cuando uso el boton de limite no devuelve ningun registro, el segundo devuelve todo,
te mande la tabla tambien (demo.sql), funciona mal tanto con mysql como con mariadb.
la version compilada la puedes bajar de
http://dremanva2.hocevar.info/bbb.rar
Espero que podamos establecer cual es el problema,
Muchas Gracias
Attached files bbb.rar (3.9 KB)Â
MySQLQuery
Publicado: Sab Mar 03, 2012 8:02 pm
por jfgimenez
Andrés,
la sintaxis de LIMIT para MySQL no es esta:
LIMIT <from>, <nrecords>
como pareces querer utilizar, sino esta otra:
LIMIT <nrecords> OFFSET <from>
Cambiándolo así sí que funciona. Eso sí, tienes que tener en cuenta que
cuando usas la cláusula LIMIT, Xailer actualiza la propiedad nMaxRecords
del dataset, por lo que si vuelves a abrir el dataset sin LIMIT, seguirá
leyendo sólo unos registros. Para que vuelva a leer todo, tienes que
poner nMaxRecords := 0 antes del :Open()
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
MySQLQuery
Publicado: Dom Mar 04, 2012 3:55 pm
por Andres Hocevar
Gracias por tu respuesta
Efectivamente funciona como tu dices, sin embargo en un post mio anterior habia indicado este detalle y lo corrigieron, sin embargo en las nuevas versiones veo que quitaron el arreglo.
Si revisamos la documentacion de MySQL la sintaxis correcta es:
SELECT ...... LIMIT 0, row_count
que es lo que uso en mis aplicaciones, adicionalmente el manual de MySQL, por compatibilidad, dice lo siguiente:
"For compatibility with PostgreSQL, MySQL also supports the LIMIT row_count OFFSET offset syntax."
En mi humilde opinion considero que si xailer soporta nativamente MySQL, es de esperarse que soporte nativamente su sintaxis primero y luego opcionalmente las variantes de las sintaxis de cualquier otro manejador de BD.
Muchas Gracias por su respuesta y espero que el equipo xailer tome en cuenta mi sugerencia como lo hizo en algunas de las versiones anteriores.
MySQLQuery
Publicado: Dom Mar 04, 2012 4:01 pm
por Andres Hocevar