Feliz y prospero 2011 a todos
En la version 1.9 escribi la clase TDBnavigator
CLASS TDBNavigator FROM XDBNavigator
..
..
ENDCLASS
para usar tablas desde MySQL que son muy grandes y asi traerme lotes de
registros pequeños, por ejemplo, de 20 en 20 , modifique el "metodo
command" para que cuando llegaba al final o al inicio del dataset se
trajera la siguiente o la anterior pagina segun el caso, para lograrlo
cerraba el dataset cambiaba la instruccion select y lo volvia a abrir
para el evento ::OnClickNext() cuando llega al registro 20
mDesde := mDesde+20
::oDataSet:lOpen := .F.
::oDataSet:cSelect := "SELECT * FROM tabla LIMIT "+str(mDesde)", 20"
::oDataSet:lOpen := .T.
::oDataSet:GoTop()
Esto funciona perfecto con 1.9, ahora que cambie a la nueva version
parece que no le hace caso al cambio en el dataset y deja siempre el
primero (en el ejemplo siempre trae "SELECT * FROM tabla LIMIT 0,20").
Gracias
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.
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.
Duda con Dataset en Xailer 2
-
- Mensajes: 141
- Registrado: Mar Sep 18, 2007 3:30 pm
-
- Mensajes: 141
- Registrado: Mar Sep 18, 2007 3:30 pm
Duda con Dataset en Xailer 2
Hola a Todos
Me parece que no hace caso al LIMIT en el Select, de alguna manera se
come el segundo parametro del LIMIT por ejemplo LIMIT 720, 20 en lugar
de traer 20 registros del 720 al 740 se trae los primero 720 como lo
haria con LIMIT 720.
Para ilustrar este fenomeno les adjunte un proyecto donde pueden ver lo
que pasa y si el problema es que yo estoy haciendo algo mal.
--
Me parece que no hace caso al LIMIT en el Select, de alguna manera se
come el segundo parametro del LIMIT por ejemplo LIMIT 720, 20 en lugar
de traer 20 registros del 720 al 740 se trae los primero 720 como lo
haria con LIMIT 720.
Para ilustrar este fenomeno les adjunte un proyecto donde pueden ver lo
que pasa y si el problema es que yo estoy haciendo algo mal.
--
-
- Mensajes: 141
- Registrado: Mar Sep 18, 2007 3:30 pm
Duda con Dataset en Xailer 2
Hola
Como hago para colocar algo como esto:
SELECT * FROM
(
SELECT a.codigo, grupo, descrip, pond, precio1 FROM sinv a
WHERE a.grupo IN (SELECT grupo b FROM grup WHERE MID(grupo,1,2)='00')
) mmmm LIMIT 0, 20
en el cSelect de un SQLQuery?
(supongamos que no quiero crear un view)
Gracias
Como hago para colocar algo como esto:
SELECT * FROM
(
SELECT a.codigo, grupo, descrip, pond, precio1 FROM sinv a
WHERE a.grupo IN (SELECT grupo b FROM grup WHERE MID(grupo,1,2)='00')
) mmmm LIMIT 0, 20
en el cSelect de un SQLQuery?
(supongamos que no quiero crear un view)
Gracias
- Carlos Ortiz
- Mensajes: 873
- Registrado: Mié Jul 01, 2009 5:44 pm
- Ubicación: Argentina - Córdoba
- Contactar:
Duda con Dataset en Xailer 2
Andrés así lo usamos nosotros y va bien, que motor usas?.
SELECT IDPROFESION, DESCRIPCION, CODIGO
FROM PROFESIONES
ORDER BY DESCRIPCION
LIMIT 100 OFFSET 0
Atte. Carlos Ortiz,
SELECT IDPROFESION, DESCRIPCION, CODIGO
FROM PROFESIONES
ORDER BY DESCRIPCION
LIMIT 100 OFFSET 0
Atte. Carlos Ortiz,
@dbfarma
www.dbfarma.com.ar
www.dbfarma.com.ar
-
- Mensajes: 141
- Registrado: Mar Sep 18, 2007 3:30 pm
Duda con Dataset en Xailer 2
Hola Carlos
Gracias por tu respuesta.
Si es cierto no funciona bien con la sintaxis MySQL LIMIT 0,100 la de
Postgres es la que usa OFFSET, de todos modos con sobrecargar la clase y
comentar las lineas siguientes en el metodo open() funciona de las 2 formas
/*
IF ( n := RAt( " OFFSET ", cSql ) ) > 0
::cOffset := LTrim( Substr( cName, n + 8 ) )
cSql := Left( cSql, n - 1 )
ENDIF
IF ( n := RAt( " LIMIT ", cSql ) ) > 0
::cLimit := LTrim( Substr( cName, n + 7, Len( cSql ) - n - 6 ) )
cSql := Left( cSql, n - 1 )
::oDataset:nMaxRecords := Val( ::cLimit )
ENDIF
*/
de todos modos creo que a esta clase falta trabajarla un poco mas para
funcionar con los ejemplos que coloque en los correos siguientes.
Gracias de nuevo
Gracias por tu respuesta.
Si es cierto no funciona bien con la sintaxis MySQL LIMIT 0,100 la de
Postgres es la que usa OFFSET, de todos modos con sobrecargar la clase y
comentar las lineas siguientes en el metodo open() funciona de las 2 formas
/*
IF ( n := RAt( " OFFSET ", cSql ) ) > 0
::cOffset := LTrim( Substr( cName, n + 8 ) )
cSql := Left( cSql, n - 1 )
ENDIF
IF ( n := RAt( " LIMIT ", cSql ) ) > 0
::cLimit := LTrim( Substr( cName, n + 7, Len( cSql ) - n - 6 ) )
cSql := Left( cSql, n - 1 )
::oDataset:nMaxRecords := Val( ::cLimit )
ENDIF
*/
de todos modos creo que a esta clase falta trabajarla un poco mas para
funcionar con los ejemplos que coloque en los correos siguientes.
Gracias de nuevo