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

Maxi maximiliano.duarte en gmail.com
Vie Jun 26 17:28:42 CEST 2015


Carlos ahora si le encontré.
Era el codepage, nunca lo toco porque no uso eso y estaba mal ahora si
trae los datos

El día 26 de junio de 2015, 12:07, Carlos Enrique Rodriguez
<cer en racssprg.com.ar> escribió:
> 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
>>
>>
>>
>
>
> _______________________________________________
> 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