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

Maxi maximiliano.duarte en gmail.com
Vie Jun 26 20:41:29 CEST 2015


Gracias Ismael, y a todos. Como siempre la comunidad presente.

La consulta debo optimizarla seguro. Como tengo acceso a la BD puedo
agregarle indices y mas cosas.

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




More information about the Lazarus-es mailing list