Página 1 de 1

¿Por qué pasan estas BURRADAS con la Select en TSQLiteDataSource y TSQLQuery?

Publicado: Dom Ene 13, 2013 3:22 pm
por jasm.quitaesto
Hola
Esto ya me tiene mosqueado desde hace tiempo, pero con consultas como
esta (Atención al DISTINCT):
SELECT DISTINCT ventacabecera.* FROM ventacabecera LEFT JOIN cursoalumno
ON ventacabecera.id_alumno=cursoalumno.id_alumno LEFT JOIN colegioalumno
ON colegioalumno.id=cursoalumno.id_colegioalumno WHERE
ventacabecera.baja = 0 AND fecha >= "2012.09.01 00:00:00.000" AND fecha
<= "2012.09.30 00:00:00.000" AND serie = "PG.2012/" AND
colegioalumno.id_convocatoria= 3 AND colegioalumno.id_colegio=
1 AND colegioalumno.id_curso= 4 ORDER BY
ventacabecera.fecha ASC, ventacabecera.serie ASC, ventacabecera.numero ASC
Xailer se inventa una consulta que termina largando el error de la imágen.
Alguien, hace tiempo, dijo que "_RowId_ AS _RowId_" lo poní­a SQLite por
no se que cosas. Pienso que si eso lo pusiese SQLite ya habrí­an tenido
cuidado de controlar el no separar el DISTINCT del SELECT, lo que me
hace sospechar a algún tipo de apaño de Xailer.
En fin, que estas cosas son las que al final hacen que uno no pueda
confiar al 100% de los Data.... enlatados POR QUE NO SE SABE QUE HACEN
POR DENTRO Y SI VAN A DARTE ESTE TIPO DE SORPRESAS.
Mis disculpas, pero me altera muchí­simo que por tomar por la calle de en
medio se rompan cosas que deberí­an ser estándar.
Saludos
Alf+.
--

¿Por qué pasan estas BURRADAS con la Select en TSQLiteDataSource y TSQLQuery?

Publicado: Lun Ene 14, 2013 9:44 am
por jfgimenez
José Alfonso,
Cuando se utiliza TSqlQuery o TSqlTable, Xailer añade el campo _RowId_
al principio de la lista de campos, porque lo necesita para poder hacer
los UPDATEs de filas. Lo que ha pasado aquí­ es que Xailer no ha
contemplado el uso de DISTINCT en el SELECT, y de ahí­ el error.
No obstante, cuando se hace una consulta compleja, como ésta, es
conveniente utilizar otros métodos, como QueryArray(), en vez de crear
un TSqlQuery, que entraña mucha más complejidad, debido precí­samente a
la capacidad de grabar datos, no sólo leerlos.
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info

¿Por qué pasan estas BURRADAS con la Select en TSQLiteDataSource y TSQLQuery?

Publicado: Lun Ene 14, 2013 12:06 pm
por jasm.quitaesto
Gracias Jose,
Suponí­a que era por eso.
Disculpad el mosqueo, pero entre que casi no puedo andar con los dos
tobillos estropeados, el cliente metiéndome bulla por teléfono, la
select que no funcionaba bien ..... Todo se juntó en un momento de furia
del que me controlé todo lo que pude.
Gracias por responder.
Saludos,
Alf+.
El 14/01/2013 9:44, Jose F. Gimenez escribió:
> José Alfonso,
>
> Cuando se utiliza TSqlQuery o TSqlTable, Xailer añade el campo _RowId_
> al principio de la lista de campos, porque lo necesita para poder hacer
> los UPDATEs de filas. Lo que ha pasado aquí­ es que Xailer no ha
> contemplado el uso de DISTINCT en el SELECT, y de ahí­ el error.
>
> No obstante, cuando se hace una consulta compleja, como ésta, es
> conveniente utilizar otros métodos, como QueryArray(), en vez de crear
> un TSqlQuery, que entraña mucha más complejidad, debido precí­samente a
> la capacidad de grabar datos, no sólo leerlos.
>
>
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
> http://www.xailer.info