[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 20:22:59 CEST 2015


Pues si era así el problema no era la consulta como te has dado ya cuenta.

La verdad que me pusiste a analizar la consulta por gusto.

De todos modos creo que la debes optimizar, aunque ya se que has trabajado 
en eso. Los  inner join te dan mucha velocidad en el acceso a los datos 
siempre y cuando las tablas o consultas tengan los índices bien sobre las 
relaciones que vas a realizar. Pero si el diseño no es tuyo medio que estás 
enredado.

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 11:25 AM
Subject: Re: [Lazarus-es] Zeos y SqlQuery no trae datos la consulta pero no 
tiene errores aparentes


Ismael, como te explico para que entiendas!!!

Si uso un gestor como SQL manager for interbase & firebird, flamerobin
o cualquiera. Si trae datos y si se cumplen las condiciones.

El control de sqlquery de lazarus NO trae datos, de otro entorno si trae


El día 26 de junio de 2015, 12:08, Ismael L. Donis Garcia
<slibre en citricos.co.cu> escribió:
> 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
>
>
>
> _______________________________________________
> 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