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 :

Tableau pour comparer les dates


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 33
    Points : 22
    Points
    22
    Par défaut Tableau pour comparer les dates
    Bonjour à tous,

    Voila j'aimerais pouvoir recupérer que quelques dates et les enregistrer dans un tableau afin d'en récuperer la plus petit de ce tableau...est-il possible de comparer les dates directement sans passer par une transformation en string car cela pose problème pour la comparaison..je suis un peu perdu au niveau de la syntaxe pour utiliser les tableau...

    merci pour votre aide...

    And

  2. #2
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Salut;

    si tes valeurs sont de type DateTime, oui il est tout à fait possible de les comparer un à un sans passer par une transformation quelconque.

    Bonne chance.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    tu insére toute tes date dans un tableau ensuite tu parcours le tableau et regarde lequel est le plus petit.

    Je ne sais pas comment tes dates sont mises dans le tableau donc je partirai d'un tableau existant.

    n correspond au nombre d'élément du tableau
    petit correspond au plus petit nombre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    petit := MonTableau[0];
    for i :=1 to n-1 do
     if (MonTableau[i] < petit) then petit := MonTableau[i];
    Après tu récupère la données de la variable "petit"

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 694
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 694
    Points : 13 130
    Points
    13 130
    Par défaut
    Il faudrait savoir d'où proviennent test données.

    En SQL, Min() suffit.
    Type TDateTime, CompareDateTime() dans la procédure a Popo.
    Fichiers. FileAge renvoi un entier (correspondant à un Date/Time arrondi à 2 secondes si je me souviens bien).

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    J'ai utilisé ces deux procédures pour rechercher maDate la plus petit dans ma base de données mais a condition qu'elle soit plus grande que la date du système(date du jour)...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    type
     monTab = array [0..10]of TDate;
    var
    montab2 : monTab;
    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
    Procedure RemplirTab(out montab2 : monTab );
    var
      vp : integer;
    begin
    maTable.Open;
    maTable.First;
    vp:=0;
    while not maTable.Eof do
      begin
      if maTableDATE_SESS_EXA_SE.Value > Date then
      begin
        montab2[vp] := maTableDATE_SESS_EXA_SE.Value;
        inc(vp);
      end;
        maTable.Next
    end;
      montab2[vp]:= 0;//c'est pour dire que 
    end;
     
    Procedure ChercherDate(var montab2 : monTab);
    var
    laDate : TDateTime;
    vp : integer;
    begin
    vp := 0;
    laDate:= montab2[0];
    while montab2[vp] <> 0 do
    begin
      if laDate < montab2[vp] then
      begin
        laDate:= montab2[vp];
      end;
      inc(vp);
    end;
    end;

    Le problème avec cette démarche c'est qu'il me trouve une date completement erroné...

    est-ce que quelqu'un aurait une idée de modification et une autre solution???

    merci d'avance de votre réponse..

    andres

  6. #6
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Déjà tu semble tester une date plus grande et non plus petite.
    Je te propose en restant dans ta manière de procéder

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    maTable.Open;
    maTable.First;
    maDate := maTable.DATE_SESS_EXA_SE.Value;
    while not maTable.Eof do
    begin
     
      if maTable.DATE_SESS_EXA_SE.Value < maDate then
        maDate := maTable.DATE_SESS_EXA_SE.Value;
     
      maTable.Next
    end;
    la variable maDate contient ta date la plus petite
    mais comme dis AndNotor c'est une date que tu teste, je serai toi je la transformerai en string ou lui mettrai une limite décimale.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    Je ne cherche pas à trouver la date la plus petite de maTable!! Sa sera plus facile à comprendre si je l'explique avec mes procedures..

    Procedure RemplirTab : j'ai déclaré un tableau pour ranger toutes les dates plus grandes que celle du système qui se trouve dans maTable et que je renvois en paramètre à la --->

    Procedure ChercherDate : qui va s'occuper de tester les dates du tableau et trouver la plus petite...

    Je ne comprend pas très bien la solution d'AndNotor..aurait tu un exemple???

    Merci de toutes vos réponses...

    Andres

  8. #8
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    En SQL c'est faisable, et surement plus simple.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT MIN(MA_DATE) 
    FROM MA_TABLE
    WHERE MA_DATE > CURRENT_DATE

    @+ Claudius

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    Merci pour ta solution Claudius..je vais voir si je peux l'appliquer dans l'ADO de ma table...dans tous les cas on dirait que je me suis compliqué la vie....

  10. #10
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par And_res Voir le message
    je vais voir si je peux l'appliquer dans l'ADO de ma table...
    Il faudra que tu utilises un TADOQuery.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    Claudius j'ai un petit problème avec current_date, l'erreur : Incorrect syntax near the keyword CURRENT_DATE...j'utilise slq server 2005....

    j'ai essayé avec GETDATE mais l'erreure colonne invalide...apparaît...

    peut-être vous avez une solution???

  12. #12
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Tu peux nous montrer comment tu as construit ta requête.

    @+

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    select PAYÉ_PA,NUM_SESS_EXA_PA,NUM_MEM_ELE_PA,NUM_MEM_MON_PA,NUM_GRA_PA,
    NOM_MEM_FM,PRE_MEM_FM,NOM_MEM_FE,PRE_MEM_FE,LICENCE_MEM_FE,
    COULCEINT_GRA,BARCEINT_GRA,PRIX_GRA, MIN(DATE_SESS_EXA_SE)
     
    from dbo.PASSE,dbo.GRADE,dbo.ELEVE,dbo.MONITEUR,dbo.SESSION_EXAMEN
     
    where
     
    NUM_SESS_EXA_PA = NUM_SESS_EXA_SE and
    NUM_MEM_ELE_PA = NUM_MEM_FE and
    NUM_MEM_MON_PA = NUM_MEM_FM and
    NUM_GRA_PA = NUM_GRA and
    DATE_SESS_EXA_SE > GETDATE()

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    J'ai trouvé une solution plus efficace mais tout de même merci pour votre aide


    Andres

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] utilisation strcomp pour comparer les dates
    Par chuspyto dans le forum IHM
    Réponses: 1
    Dernier message: 18/09/2009, 15h38
  2. Réponses: 13
    Dernier message: 07/02/2007, 12h10
  3. [DisplayTag] Problème pour trier les dates dans un tableau
    Par Pascale38 dans le forum Taglibs
    Réponses: 13
    Dernier message: 01/09/2006, 09h58
  4. Pour convertir les dates aux types "datetime" sous
    Par nnn2050 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/01/2006, 15h30

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