IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

filtre par semaine et par mois


Sujet :

Delphi

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 3
    Points : 4
    Points
    4
    Par défaut filtre par semaine et par mois
    bonjour ,
    pouvez vous me dire comment trier un champ DATE dans une table (paradox)
    en la filtrant par;
    Semaine dans l'année (filtre1),(1 à 53)
    Mois dans l'année (1 à 12),(filtre 2 )

    j'ai utilisé la fonction MonthOf , et weekof, sans succes.

    j'utilise un TMonthcalendar qui filtre la base par jour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm3.calClick(Sender: TObject);
    var datecal:string;
    begin
    datecal:=datetostr(cal.Date);
    form1.table1.Filtered:=true;
    form1.table1.Filter:='date=' +#39+datecal+#39;
    end;
    J'ai sous le calendar , un bouton qui doit filtrer tout les enregistrements de la base par semaine ,
    et un autre par mois dans le dbgrid.

    merci

  2. #2
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 770
    Points
    2 770
    Par défaut
    commance par lire cette article
    en plus pourquoi ne pas utlisé la puissance de delphi, pour trouver les dates limitant une semaine ou un mois(DayOfTheWeek,DecodeDateFully,.......), puis utilisé un beetwen dans une requete avec les dates trouvé

  3. #3
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 167
    Points : 89
    Points
    89
    Par défaut
    Salut.

    J'au eu à faire le même traitement.
    Je l'ai réglé de la façon suivante :

    1 - pour le traitement mensuel
    je mets les mois dans des variables mémoires les mois (en français)

    et les débuts et fin de mois (en tenant compte des années bisextiles)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
          CMois[1]:='Janvier';
          CMois[2]:='Février';
          CMois[3]:='Mars';
          CMois[4]:='Avril';
          CMois[5]:='Mai';
          CMois[6]:='Juin';
          CMois[7]:='Juillet';
          CMois[8]:='Août';
          CMois[9]:='Septembre';
          CMois[10]:='Octobre';
          CMois[11]:='Novembre';
          CMois[12]:='Décembre';
          NMois[1]:='01';
          NMois[2]:='02';
          NMois[3]:='03';
          NMois[4]:='04';
          NMois[5]:='05';
          NMois[6]:='06';
          NMois[7]:='07';
          NMois[8]:='08';
          NMois[9]:='09';
          NMois[10]:='10';
          NMois[11]:='11';
          NMois[12]:='12';
          FMois[1]:='31';
          if StrToInt(edAnTRt.Text) MOD 4 = 0 then FMois[2]:='29'
          else FMois[2]:='28';
          FMois[3]:='31';
          FMois[4]:='30';
          FMois[5]:='31';
          FMois[6]:='30';
          FMois[7]:='31';
          FMois[8]:='31';
          FMois[9]:='30';
          FMois[10]:='31';
          FMois[11]:='30';
          FMois[12]:='31';
          BorneSup:=12;
    ensuite dans une boucle for je parcoure les douze mois de l'année en filtrant sur un champ (ici le champ est 'DateFacture') et les mois successifs et en faisant le traitement désiré MD1 et MD2 sont les date début et fin de mois,
    Edit1.Text est l'année de traitement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        For Nb:=1 to BorneSup do
        begin   // début boucle mois
          MD1:= '01/'        +NMois[Nb]+'/'+edAnTRt.Text;
          MD2:= FMois[Nb]+'/'+NMois[Nb]+'/'+Edit1.Text;
          tbtable1.Filter:='DteFacture >='+QuotedStr(MD1)+
                     'and DteFacture <='+QuotedStr(MD2);
          tbtable1.Filtered:=True;
     
    Instruction de traitement
     
          end;
     
        end;   // fin boucle mois

    2- traitement de la semaine (ou la décade)
    Pour la semaine ou la decade, il suffit de partir du StrToDte(01/01/EDit1.Text)
    et donner une ampliture de 7 ou 10 suivant la semaine ou la décade et noter la date début et fin de période
    BorneSup à la valeur 52 or 37selon le traitement par semaine ou par décade

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
            MD1:= DateToStr(StrToDate('01/01/'+edAnTRt.Text)+(NB-1)*Amplitute);
            MD2:= DateToStr(StrToDate('01/01/'+edAnTRt.Text)+ NB*Amplitute-1);
     
          For Nb:=1 to BorneSup do
          begin   // début boucle semaine, décade
            MD1:= DateToStr(StrToDate('01/01/'+edAnTRt.Text)+(NB-1)*Amplitute);
            MD2:= DateToStr(StrToDate('01/01/'+edAnTRt.Text)+ NB*Amplitute-1);
     
          tbtable1.Filter:='DteFacture >='+QuotedStr(MD1)+
                     'and DteFacture <='+QuotedStr(MD2);
          tbtable1.Filtered:=True;
     
     
    Instruction de traitement
     
     
          end;    // fin boucle semaine, décade
    Comme tu vois je suis débutant sur Delphi pas encore habitué avec la POO, je fais pratiquement un traitement classique contrairement à ce que propose Edam.
    Mais je crois que ce qui t'interesse le plus c'est le filtre.
    Aussi si je t'ai donné ma solution c'est pour qu'on puisse me corriger sur cette façon de faire sur Delphi qui est un outil autrement plus puissant.

Discussions similaires

  1. Requête DateTime sur une semaine groupée par jour et par heure
    Par cerealkiller dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/08/2011, 15h54
  2. affichage des infos par jour,par semaine et par mois
    Par king_soft dans le forum Requêtes
    Réponses: 4
    Dernier message: 29/12/2010, 11h08
  3. CA par semaine et par client
    Par Abed_H dans le forum Excel
    Réponses: 5
    Dernier message: 01/02/2008, 11h46
  4. faire une somme par semaine et par client
    Par zer35 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 12/10/2007, 14h26
  5. Requette avec trie par mois et par semaine
    Par bob75000 dans le forum Access
    Réponses: 2
    Dernier message: 17/07/2006, 12h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo