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

Carlos Enrique Rodriguez cer en racssprg.com.ar
Vie Jun 26 17:07:24 CEST 2015


Hola,
       No voy a insistir con el null, pero si el problema es el =, 
entonces hace un like y por las dudas un Upper , ej:  WHERE 
Upper(R.Practicas) LIKE UPPER('Recepción internacion'). Lo mismo si 
tenés una versión no muy vieja podés usar TRIM para terminar de limpiar 
el problema. Una cosa final a mirar es que en el TConnection de Zeos 
tengas la misma codificación que la BD.

Nos vemos
Carlos

El 26/06/2015 a las 11:55, Maxi escribió:
> 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
>
>





More information about the Lazarus-es mailing list