Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-12-2003
Ricsato Ricsato is offline
Miembro
 
Registrado: oct 2003
Ubicación: Mexicali, Mexico
Posts: 72
Poder: 21
Ricsato Va por buen camino
Como hacer un filtro con meses

Hola a todo el mundo, quiero que alguien me ayude en la siguiente duda?

Como puedo hacer un filtro de un query, para un campo tipo fecha, pero donde solo requiero filtrar los registros por un mes especifico, por ejemplo, si tengo....

Actual:=DateTimePicker1.Date;
DecodeDate(Actual, Year, Month, Day);
....
Query1.Filter:='Fecha=' + ???

La fecha la obtengo desde un datatimepicker, separo el numero de mes con decode, pero no se como especificar en el filtro, que unicamente me filtre todos los registros con el mes leido, sin importar el dia y el año.

Saludos desde Mexicali, B.C.
Responder Con Cita
  #2  
Antiguo 09-12-2003
Ruben_Cu Ruben_Cu is offline
No confirmado
 
Registrado: oct 2003
Ubicación: Mariel, Cuba
Posts: 271
Poder: 0
Ruben_Cu Va por buen camino
Hola Ricsato, para lograr lo que quieres debes combinar el procedimiento DecodeDate con la función Extract de SQL el código quedaria mas o menos así:
Código:
procedure TForm1.Button1Click(Sender: TObject);
var day, month, year:word;
        actual:TDateTime;
begin
        Actual:=DateTimePicker1.Date;
        DecodeDate(Actual, Year, Month, Day);
        with query1 do begin
        close;
        sql.Clear;
        sql.Add('select * from TuTabla');
        sql.Add('Where (Extract(Month from Fecha) ='+QuotedStr(IntToStr(month))+')');
        open;
        end;
end;
Fijate que no uso la propiedad filter es preferible hacerlo con declaraciones de SQL por ser mas rápido y entonces si tiene sentido el uso del TQuery de lo contrario podías haber usado un TTable en su lugar.
Incluso puedes usar en lugar del botón el evento OnChange del DateTimePicker.
Saludos y suerte
Responder Con Cita
  #3  
Antiguo 09-12-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
La solución ya te la ha dado Rubén, pero quiero hacer una observación, si tienes en la tabla fechas de años distintos, no obtendrás el mes del año actual, sino todos los meses 8 por ejemplo que existan en la tabla, si ocurre este caso que estoy citando, tendrías que filtrar entre el 1 del mes solicitado y el final del mes del mismo, que solamente tendrías que hallarlo, entonces quedaría el filtro de las fechas:
Where MiFecha Between xxx And xxx.


Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #4  
Antiguo 09-12-2003
Ruben_Cu Ruben_Cu is offline
No confirmado
 
Registrado: oct 2003
Ubicación: Mariel, Cuba
Posts: 271
Poder: 0
Ruben_Cu Va por buen camino
Cita:
Ricsato comentó:
...que unicamente me filtre todos los registros con el mes leido, sin importar el dia y el año.

Saludos desde Mexicali, B.C.
Hola Marcos, como ves a Ricsato no le importan ni los días ni los años por lo que le propuse lo que creo mejor a su objetivo sin considerar el uso del predicate Between.
Un saludo
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 15:19:37.


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
Copyright 1996-2007 Club Delphi