Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Problema Consulta con fecha (https://www.clubdelphi.com/foros/showthread.php?t=17751)

VRO 20-01-2005 12:17:56

Problema Consulta con fecha
 
HOla ,vereis tengo una tabla que es Lecturas(numerocontador,fecha,lectura,consumo con estos campos aqui nombrados) y lo que quiero es que me muestre los contadores, la fecha, el consumo y la lectura de todos los contadores que tengan lectura en una fecha dada y si hay contadores que no tiene lectura en esa fecha saco la inmediatamente anterior a esa fecha.

No se si me he explicado bien, yo he hecho esta consulta, pero claro me saca los datos para esa fecha y para todas las anteriores.

Código Delphi [-]
Query.Close;
Query.SQL.Text:='select numerocontador,fecha,lectura,consumo from lecturas where fecha<='+QuotedStr(fechamask.text)+' group by numerocontador,fecha,lectura,consumo order by fecha desc';
Query.open;

El motor de la base da datos es Firebird 1.5

Gracias de antemano, es una consulta muy importante.

athlontado 20-01-2005 12:35:27

Prueba con esto:

Código Delphi [-]
   Query.Close;
   Query.SQL.Text := 'select numerocontador, fecha, lectura, consumo ' +
    'from lecturas where (fecha = (select first 1 fecha from lecturas where fecha <= ' +
    QuotedStr(fechamask.text) + ' order by fecha desc)) group by ' +
    'numerocontador, fecha, lectura, consumo order by fecha desc';
   Query.open;

Con esto, obtienes la lectura de contadores de la fecha dada ó de la inmediatamente última lectura anterior a la indicada.

Saludos ;)

VRO 20-01-2005 17:19:12

Gracias Athlontado
 
¿Se te ocurre como hacer en vez de el inmediatamente inferior el que más se aproxime ya puede ser por arriba ó por abajo?, por cierto, la respuesta anterior sólo me saca los contadores de igual fecha si hay contadores que no tiene esa fecha no coje la fecha inmediatamente inferior.


Pero de todas formas muchiisiiiimas gracias por tu aportación.Seguiré investigando , espero que con tu ayuda.

Gracias.

athlontado 20-01-2005 17:33:44

En este caso, si quieres hallar la fecha más cercana a la que tú das, lo mejor es crear un procedimiento almacenado que te devuelva la fecha más próxima a la dada y usar ese procedimiento dentro del select que estamos intentando hacer, devolviéndote de esta forma aquellos contadores de la fecha más próxima.

VRO 21-01-2005 09:15:31

Gracias Athlontado
 
Gracias por tu respuesta athlontado, verás estoy estudiando que es un procedimiento alamcenado, como hacerlo etc..., ya que nunca he utilizado uno.

¿Serí mucha molestia ponerme un ejeplillo de como quedaría?.

Eternamente agradecida.


La franja horaria es GMT +2. Ahora son las 04:20:05.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi