[Lazarus-es] Zeos y SqlQuery no trae datos la consulta pero no tiene errores aparentes

Ismael L. Donis Garcia slibre en citricos.co.cu
Vie Jun 26 17:08:11 CEST 2015


Maxi probaste la consulta última que te mandé? La de hoy.

La verdad Maxi que no te entiendo bien, Si la consulta está bien hecha y no 
trae datos es porque los datos no cumplen la condición del filtro que estás 
planteando. Por lo que el error no está en la consulta SINO en la forma que 
tu has planteado la consulta para los datos que quieres optener.

Por eso lo único que puedo hacerte para ayudarte es que me pases UNA MUESTRA 
pequeña de los datos al pribado y lo que tu necesitas optener producto de la 
consulta para poderte hacer bien la consulta.

Por mi parte no puedo hacer nada más por ayudarte.

Saludos Reiterados
========
| ISMAEL |
========
Only for the small landowners and Cubans companies
Website: www.sisconge.byethost15.com
              www.sisconge.hol.es
----- Original Message ----- 
From: "Maxi" <maximiliano.duarte en gmail.com>
To: "Spanish version of Lazarus List" 
<lazarus-es en lists.lazarus.freepascal.org>
Sent: Friday, June 26, 2015 10:55 AM
Subject: Re: [Lazarus-es] Zeos y SqlQuery no trae datos la consulta pero no 
tiene errores aparentes


Gracias Jose.
La consulta si bien el case es reemplazable, tu consulta hace lo mismo
que la que plantee yo y tarda 1 segundo mas que la mia.
Esta consulta es rebuscada por como almacenana los datos. El que
desarrollo esto hizo que los datos sean dinamicos al momento de cargar
haciendo que en cada registro inserte informacion que despues en
pantalla se convierte en un control, edit,memo,listbox, etc.
Como no registra un ingreso y egreso del paciente en un mismo registro
sino como practicas es que tengo que ir buscando para adelante.


y el problema NO ES LA CONSULTA, ya lo dije varias veces. El error es
en el componente con el =
le cambio el = por <> y si trae datos


El día 26 de junio de 2015, 4:14, Jose antonio Cuello Principal
<jcuello en artextrading.com> escribió:
> Si hace Select x.* from (...)
>
> te puedes ahorrar ese select y poner directamente el contenido del from 
> puesto que te estás trayendo todos los campos de la subselect, por lo que 
> directamente
>
> Select Distinct ....
>
> debe traerte el mismo resultado.
>
> Otra cosa es, "case when R.Practicas = (..) as Ingreso" para traerte el 
> campo R.FECHAPRACTICA, luego haces "where R.Practicas = (...)" por lo que 
> el case siempre se cumple y trae el campo R.FECHAPRACTICA. En este caso 
> sobra el case, directamente traerse el campo R.FECHAPRACTICA.
>
> Este mismo caso se puede aplicar al siguiente case, pudiendo simplificarse 
> en un select first, en vez de un select Min. Será más rápido el first al 
> no tener que procesar todos los registros y ahorrando el Cast de 
> conversión de tipo.
>
> En el segundo subselect, a los campos le faltan los alias de la vista 
> (VW_HISTORIASCLINICAS SE), puede no ser importante, pero en este caso que 
> siempre enlazamos con la misma vista y los campos se repiten podemos 
> evitar problemas de ambigüedad.
>
> Con todo esto me queda la siguiente select, espero sea más sencillo 
> encontrar el problema.
>
>
> select DISTINCT r.CUENTA, R.NOMBRE, R.OBRASOCIAL, R.NROHC, 
> R.FECHAPRACTICA,
>
>                 (Select first 1 E.FECHAPRACTICA
>                    from VW_HISTORIASCLINICAS E
>                   where E.CUENTA = R.CUENTA
>                     and E.FECHAPRACTICA >= R.FECHAPRACTICA
>                     and E.Practicas = 'Egreso de internación'
>                   order by E.FECHAPRACTICA ASC) as Egreso,
>
>                 (Select first 1 (case when SE.CODIGOPRACTICA = 'SEC_CAMA' 
> then SE.DETALLEPRACTICA else null end) as sector
>                    from VW_HISTORIASCLINICAS SE
>                   where SE.CUENTA = R.CUENTA
>                     and SE.FECHAPRACTICA >= R.FECHAPRACTICA
>                     and SE.Practicas = 'Sector'
>                   order by SE.FECHAPRACTICA desc) as Sector
>
>  from VW_HISTORIASCLINICAS R
>
> where R.Practicas = 'Recepción internacion'
>
>
> Un saludo
>
>
>
>
> ----- Mensaje original -----
> De: "Maxi" <maximiliano.duarte en gmail.com>
> Para: "Spanish Version of Lazarus List" 
> <lazarus-es en lists.lazarus.freepascal.org>
> Enviados: Jueves, 25 de Junio 2015 15:51:57
> Asunto: [Lazarus-es] Zeos y SqlQuery no trae datos la consulta pero no 
> tiene errores aparentes
>
> Firebird 2.1.3
> Lazarus 1.4.0 FCP 2.6.4
> ZeosLib 7.1.4 estable
>
> Tengo una consulta medio rara por como esta organizado el
> almacenamiento (no es mi base aclaro) la consulta funciona en otros
> manejadores de datos sin problemas pero en el ide de Lazarus no trae
> datos pero no da error en la consulta
>
> Creo que sobreinterpreta o prepara la consulta y algo no le gusta a
> estos controles porque no trae datos si los nombres de los campos.
> sospecho esto porque en el generador de consultas del componente
> sqlquery al hacer el chequeo de sintaxis dice que espera una , en una
> linea
>
> No me paso antes con este tipo de consultas.
>
> select x.* from
> (select
>   DISTINCT
>   r.CUENTA,
>   R.NOMBRE,
>   R.OBRASOCIAL,
>   case when R.Practicas = 'Recepción internacion' then R.FECHAPRACTICA
> else null end as Ingreso,
>   CAST((Select MIN(case when E.Practicas = 'Egreso de internación'
> then E.FECHAPRACTICA else null end) as Egreso from
>           VW_HISTORIASCLINICAS E
>           where E.CUENTA = R.CUENTA and E.FECHAPRACTICA >= R.FECHAPRACTICA
>           and E.Practicas = 'Egreso de internación'
>           ) as DATE) as Egreso,
>   R.NROHC,
>     (Select first 1 (case when CODIGOPRACTICA = 'SEC_CAMA' then
> DETALLEPRACTICA else null end) as sector from
>           VW_HISTORIASCLINICAS SE
>           where
>           SE.CUENTA = R.CUENTA
>           and
>           SE.FECHAPRACTICA >= R.FECHAPRACTICA
>           and SE.Practicas = 'Sector' order by SE.FECHAPRACTICA desc
>           ) as Sector
>  from
>    VW_HISTORIASCLINICAS R
>  where
>       R.Practicas = 'Recepción internacion') x
>  where x.egreso is null
>
> --
> El que pregunta aprende, y el que contesta aprende a responder.
>
> No a la obsolecencia programada:
> http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml
>
> Linux User #495070
> http://domonetic.com/blog
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
> --
> José Antonio Cuello
> Dpto. Informatica
> Artex Trading sa
> Gold Football sl
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es



-- 
El que pregunta aprende, y el que contesta aprende a responder.

No a la obsolecencia programada:
http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml

Linux User #495070
http://domonetic.com/blog

_______________________________________________
Lazarus-es mailing list
Lazarus-es en lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es






More information about the Lazarus-es mailing list