[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