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 :

Liste des Dates entre deux dates.


Sujet :

Delphi

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2010
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2010
    Messages : 192
    Par défaut Liste des Dates entre deux dates.
    Bonjour à tous, je suis coincer sur un programme, je voudrais remplir une LISTBOX avec tous les dates MM/DD/YYYY entre certain période respectivement:
    - Date d'Entrer
    - Date de Suspension
    - Date de Réactivation
    - Date du Jour.

    Alors la liste contiendras :
    1 - Les dates entre la date d'Entrer et la date de Suspension.
    2 - Les dates entre la date de Suspension et la date de Réactivation.
    3 - et en fin entre la date de Réactivation et la date actuel du jour.
    Aussi il faut gérer les cas ou les dates de suspension et la réactivation seront vide. "Client toujours actif''
    Voici un bout de programme de j'ai fais mais ce dernier prend tous les mois du 1 - 12


    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
     
    Type
      Tmois = 1..12;
      TAnnees = 1988..2021;
    Liste := TStringList .Create;
      Try
        // Création de la liste
        For Annee := Low( TAnnees ) to  High( TAnnees ) do
          Begin
            For Mois := Low( Tmois ) to High( Tmois ) Do
              Begin
                IF Length(Mois.ToString) = 1 Then
                  Liste.Add( IntToStr( Annee ) + '0'+Mois.ToString )
                Else
                  Liste.Add( IntToStr( Annee ) + Mois.ToString )
              End;
          End;
      // Ajout de la liste à un ComboBox
        ListBox1.Items.AddStrings(Liste);
      Finally
        Liste.Free;
      End;
    Exemples :

    Date d'entrer = 01/05/1988.
    Date Suspension = 01/03/1991.
    Date Réactivation = 01/08/2012.

    Merci à tous.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 658
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    Je présume que, quelque part, il y a une base de données ?
    sinon pour remplir simplement les dates (début de mois)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var d : TDate;
     
    Liste := TStringList .Create;
    d:=encodedate(1988,01,01);
    While d<=Date do
     begin
       Liste.Add(FormatDateTime('01/mm/yyyy',d);
       d:=IncMonth(d,1); 
       // partie recherche BDD
     end;

  3. #3
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    regarde l'unité System.DateUtils qui contient tout ce qu'il faut pour manipuler des dates
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2010
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2010
    Messages : 192
    Par défaut
    Bonjour a tous et merci pour l'aide apporter, alors voila ce que j'ai pu faire avec l'exemple de Sergio, je l'ai fait en trois étape,
    1 - début d'activité et la date de suspension
    2 - date de suspension et la date de réactivation
    3 - date de réactivation et la date du jour.

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    IF Date_Susp.Text <> '' Then
        Begin
          Liste := TStringList .Create;
          myDate := StrToDate( Date_Debut_Activ.Text );
          Liste := TStringList.Create;
          DecodeDate( myDate, myYear, myMonth, myDay );
          myDay := 1;
          d := encodedate( myYear, myMonth, myDay );
          c := StrToDate( Date_Susp.Text );
          While d <= c do
            begin
              Liste.Add(FormatDateTime( 'yyyymm', d ) );
              d := IncMonth( d, 1 );
              // partie recherche BDD
            end;
          ListBox1.Items.AddStrings( Liste );
          Liste.Free;
        End
      Else
        Begin
          Liste := TStringList .Create;
          myDate := StrToDate( Date_Debut_Activ.Text );
          Liste := TStringList.Create;
          DecodeDate( myDate, myYear, myMonth, myDay );
          myDay := 1;
          d := encodedate( myYear, myMonth, myDay );
          While d <= Date_Actu do
            begin
              Liste.Add(FormatDateTime( 'yyyymm', d ) );
              d := IncMonth( d, 1 );
              // partie recherche BDD
            end;
          ListBox1.Items.AddStrings( Liste );
          Liste.Free;
        End;
     
       IF ( Date_Susp.Text <> ''  ) And ( Date_React.Text <> '' ) Then
         Begin
          IF StrToDate( Date_Susp.Text ) < StrToDate( Date_React.Text ) Then
            Begin
              Liste := TStringList .Create;
              myDate := StrToDate( Date_React.Text );
              Liste := TStringList.Create;
              DecodeDate( myDate, myYear, myMonth, myDay );
              myDay := 1;
              d := encodedate( myYear, myMonth, myDay );
              c := Date_Actu;
              While d <= c do
                Begin
                  Liste.Add(FormatDateTime( 'yyyymm', d ) );
                  d := IncMonth( d, 1 );
                  // partie recherche BDD
                end;
            End;
              ListBox1.Items.AddStrings( Liste );
              Liste.Free;
         End;
    Je ne sait pas si il y'a mieux à faire. Merci

  5. #5
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 493
    Par défaut
    salut

    tu n'est pas obligé de passer par un tstringlist intermédiaire
    tu peut creer une methode qui te permet de renseigner ta listbox

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Procedure RemplitDateToListBox(Lst : TStrings ;aDtdeb,AdtFin : TDateTime);
      begin
        While aDtdeb <= AdtFin do
        begin
          Lst.Add(FormatDateTime( 'yyyymm', aDtdeb ) );
          aDtdeb := IncMonth( aDtdeb, 1 );      // partie recherche BDD
        end;
      end;
    Ton exemple il y a encore des simplification a faire mais c'est pour te donner une idée
    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
     
      .....
     
      IF Date_Susp.Text <> '' Then
      Begin
         myDate := StrToDate( Date_Debut_Activ.Text );
         c := StrToDate( Date_Susp.Text );
      End
      Else
      Begin
         myDate := StrToDate( Date_Debut_Activ.Text );
         c :=Date_Actu;
      end;
      DecodeDate( myDate, myYear, myMonth, myDay );
      myDay := 1;
      d := encodedate( myYear, myMonth, myDay );
      RemplitDateToListBox(ListBox1.Items,d,c);
     
      IF ( Date_Susp.Text <> ''  ) And ( Date_React.Text <> '' ) Then
      Begin
        IF StrToDate( Date_Susp.Text ) < StrToDate( Date_React.Text ) Then
        Begin
          myDate := StrToDate( Date_React.Text );
          DecodeDate( myDate, myYear, myMonth, myDay );
          myDay := 1;
          d := encodedate( myYear, myMonth, myDay );
          c := Date_Actu;
          RemplitDateToListBox(ListBox1.Items,d,c);
        End;
      End;

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 658
    Billets dans le blog
    65
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
             DecodeDate( myDate, myYear, myMonth, myDay );
              myDay := 1;
              d := encodedate( myYear, myMonth, myDay );
    c'est égal à d:=StartOfTheMonth(mydate)

Discussions similaires

  1. Liste des jours entre deux dates
    Par rvzip64 dans le forum Requêtes
    Réponses: 12
    Dernier message: 01/09/2015, 16h00
  2. [2008R2] (Débutant) Liste des mois entre deux dates
    Par PentatonicJPZ dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 23/06/2014, 08h35
  3. fonction table pour récupérer la liste des jours entre deux dates
    Par elmoul7ak dans le forum Développement
    Réponses: 2
    Dernier message: 01/05/2010, 13h22
  4. Liste des mois entre deux dates
    Par ginkas31 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 10/03/2008, 16h33
  5. Générer le listing des jours entre deux dates
    Par gsmdu62 dans le forum Langage
    Réponses: 8
    Dernier message: 01/05/2006, 11h08

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