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.

Registros devueltos en TSQLiteDataSource:Query()

Foro de Xailer profesional en español
Responder
Angel
Mensajes: 135
Registrado: Mié Mar 21, 2007 1:11 pm

Registros devueltos en TSQLiteDataSource:Query()

Mensaje por Angel »

Al utilizar este método, con una consulta clásica (SELECT * FROM tabla),
me retorna un TDataset que deberí­a contener todos los registros de los
que conste la consulta, pero en cambio, me retorna un dataset que
contiene únicamente, un registro.
Lo extraño, es que que el metodo RecCount() del Dataset devuelto, me
retorna el número de registros que contiene. ¿El metodo Query() retorna
únicamente un Dataset con un solo registro o deberí­a retornar un dataset
con todos los registros que devuelva la consulta?
En cambio, si en vez de llamar a TSQLiteDataSource:Query(), llamo a
TSQLiteDataSource:QueryArray(), este SI retorna un array con todos los
registros que devuelve la consulta.
¿ Es este el comportamiento de TSQLiteDataSource:Query() ?
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9459
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Registros devueltos en TSQLiteDataSource:Query()

Mensaje por ignacio »

Angel,
Realmente extraño. Nos podría indicar exactamente la sentencia SQL que está
usando.
Si la BD no fuese muy grande me la podría mandar por Email o indicarme un
FTP donde descargarla para hacer pruebas.
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Ángel Fernández" <angel@agelso.com> escribió en el mensaje
news:473b0353$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Al utilizar este método, con una consulta clásica (SELECT * FROM tabla),
> me retorna un TDataset que debería contener todos los registros de los que
> conste la consulta, pero en cambio, me retorna un dataset que contiene
> únicamente, un registro.
>
> Lo extraño, es que que el metodo RecCount() del Dataset devuelto, me
> retorna el número de registros que contiene. ¿El metodo Query() retorna
> únicamente un Dataset con un solo registro o debería retornar un dataset
> con todos los registros que devuelva la consulta?
>
> En cambio, si en vez de llamar a TSQLiteDataSource:Query(), llamo a
> TSQLiteDataSource:QueryArray(), este SI retorna un array con todos los
> registros que devuelve la consulta.
>
> ¿ Es este el comportamiento de TSQLiteDataSource:Query() ?
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Angel
Mensajes: 135
Registrado: Mié Mar 21, 2007 1:11 pm

Registros devueltos en TSQLiteDataSource:Query()

Mensaje por Angel »

Ignacio Ortiz de Zúñiga escribió:
> Angel,
>
> Realmente extraño. Nos podrí­a indicar exactamente la sentencia SQL que está
> usando.
>
> Si la BD no fuese muy grande me la podrí­a mandar por Email o indicarme un
> FTP donde descargarla para hacer pruebas.
>
> Un saludo,
>
Si que resulta extraño. Creo que alguna de las propiedades de TSQLQuery,
se está ocultando en el debugger. En aFields, solo me muestra las filas
del ¡registro activo! pero sin embargo, puedo recorrer el dataset
correctamente (ya sea con Skip, con GoTop, GoBottom) y viendolo así­, no
me parece un comportamiento extraño pues si tuviera 40.000 registros
serí­a ilógico crear un TDataset de ese tamaño.
He subido la base de datos a:
http://www.agelso.com/basedatos/VehiculosOcasion.s3db
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Registros devueltos en TSQLiteDataSource:Query()

Mensaje por jfgimenez »

Ángel,
> Al utilizar este método, con una consulta clásica (SELECT * FROM tabla),
> me retorna un TDataset que debería contener todos los registros de los que
> conste la consulta, pero en cambio, me retorna un dataset que contiene
> únicamente, un registro.
>
> Lo extraño, es que que el metodo RecCount() del Dataset devuelto, me
> retorna el número de registros que contiene. ¿El metodo Query() retorna
> únicamente un Dataset con un solo registro o debería retornar un dataset
> con todos los registros que devuelva la consulta?
>
> En cambio, si en vez de llamar a TSQLiteDataSource:Query(), llamo a
> TSQLiteDataSource:QueryArray(), este SI retorna un array con todos los
> registros que devuelve la consulta.
>
> ¿ Es este el comportamiento de TSQLiteDataSource:Query() ?
Creo que el problema es que estás confundiendo los conceptos.
El método QueryArray() devuelve un array con los datos de la consulta, pero
el método Query() devuelve un dataset con los datos, no un array. Si llamas
al método GetRows() del dataset sí te devuelve un array con todos los datos.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Angel
Mensajes: 135
Registrado: Mié Mar 21, 2007 1:11 pm

Registros devueltos en TSQLiteDataSource:Query()

Mensaje por Angel »

> Creo que el problema es que estás confundiendo los conceptos.
>
> El método QueryArray() devuelve un array con los datos de la consulta, pero
> el método Query() devuelve un dataset con los datos, no un array. Si llamas
> al método GetRows() del dataset sí­ te devuelve un array con todos los datos.
>
Efectivamente, estaba confundiendo los conceptos. Entonces:
Query() Devuelve un dataset, con los datos de la consulta.
¿Si la consulta contiene por ejemplo, 25 registros? ¿Cual deberí­a ser la
longitud del campo aFields del TSQLQuery creado? Supuse en un primer
momento que deberí­a ser de 25, pero muestra únicamente los campos del
registro activo.. a esto me referí­a en anteriores posts con el 'extraño
comportamiento' aunque no es problema ninguno pues puedo navegar por el
dataset y utilizar todos sus metodos.
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Registros devueltos en TSQLiteDataSource:Query()

Mensaje por jfgimenez »

Ángel,
> ¿Si la consulta contiene por ejemplo, 25 registros? ¿Cual debería ser la
> longitud del campo aFields del TSQLQuery creado?
Siempre será el número de campos (columnas) de la consulta. Ten en cuenta
que aFields es un array de objetos TDataField, uno de cuyas propiedades es
el valor del registro actual, pero no es un array de los datos de la
consulta. Para eso está el método GetRows().
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Responder