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

C# Discussion :

comparer deux datetime


Sujet :

C#

  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 14
    Par défaut comparer deux datetime
    bonjour tout le monde.
    mon problème est le suivant:
    j'ai 3 datetime: date actuelle, date de réalisation et date d'expiration que je veux comparer pour déterminer si l'action que je compte faire est soit en cours, soit clôturée soit en retard.
    par la suite je veux utiliser 3 boutons (en cours, en retard, clôturée) pour afficher respectivement sur une datagridview quand je clique sur l'un des boutons, les actions en cours, en retard (par exemple)
    svp est ce que quelqu'un pourrait me donner une petite idée sur comment procéder ? c'est urgent plz
    merci à l'avance

  2. #2
    Membre à l'essai
    Inscrit en
    Septembre 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 5
    Par défaut
    tu peux comparer les datetimes avec les opérateurs classiques < > != ==
    à partir de la il ne te reste plus qu'à modifier la propriété texte du bouton de ton datagridview en fonction de tes tests

  3. #3
    Membre averti
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 14
    Par défaut
    merci, cela fonctionne
    deux autres question si tu permets:
    1-comment colorier des lignes bien précises de la datagridview ?
    et surtout:
    2- comment faire un compteur qui compte le nombre d'actions en cours par exemple et puis afficher le résultat dans un textbox?
    je bloque vmt sur le point 2 ://

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 5
    Par défaut
    tu déclares une variable :
    int compteur = 0;

    à chaque fois que tu fais une action tu incrémentes ce compteur:
    compteur ++; // ou alors compteur += 1;

    ensuite dans ta textbox tu affiches la valeur de ce compteur:
    compteur.tostring()

  5. #5
    Membre averti
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 14
    Par défaut
    merci bien spiffou
    mais pour moi le blocage persiste encore:
    comment incrémenter le compteur à chaque fois que j'ajoute une action càd comment introduire la phrase "à chaque fois que j'ajoute une action" en langage de programantion :/
    dslée mais je suis vmt novice ne matière de programmation et c sharp et sql !!!

  6. #6
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 148
    Par défaut
    Salut,

    montre nous le code de cette fameuse "action en cours" pour que l'on puisse t'aider au mieux

  7. #7
    Membre averti
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 14
    Par défaut
    hhh, ok. comme j'ai précisé avant, je fais entrer 3 dates: date actuelle, date de réalisation et date d'expiration.
    en comparant ces dates entre elles, on peut déterminer la nature de l'action: en cours, en retard ou clôturée;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
                DateTime Date = new DateTime();
    DateTime Délais = new DateTime();
    DateTime Date_réalisation = new DateTime();
     
    int com = DateTime.Compare(Date, Délais);
    string nature;
    if ((com < 0) || (Date_réalisation == null))
        nature = "en cours";
    else if ((com > 0) || (Date_réalisation == null))
             nature = "en retard";
         else if ((com > 0) || (Date_réalisation != null))
             	  nature = "clôturée";
    le code est syntaxiquement correct (d'après le build) mais je sais pas s'il est fonctionnel ou pas :p
    donc voilà

  8. #8
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 148
    Par défaut
    Ah c'est mieux

    Rajoute des accolades et effectue le traitement de Spiffou dans chacune de tes conditions.

  9. #9
    Membre averti
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 14
    Par défaut
    hh, mais playfone tout le pb réside dans le traitement que spiffou m'a conseillé
    comme j'ai précisé je vois pas comment traduire en langage de programmation le fait que "à chaque fois que je fait entrer une action dans ma base de donnée", mon compteur i s'incrémente :/
    j'espère que j'étais claire

  10. #10
    Membre confirmé
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Août 2010
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Irlande

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

    Informations forums :
    Inscription : Août 2010
    Messages : 98
    Par défaut
    Bonsoir,

    Le plus simple serait de déclarer une variable de type int dépendant de ta form principale, au chargement de ton application compte tes actions en cours et recompte à chaque ajout.

    Je m'explique :

    Tu peux créer une fonction qui compte tes actions en cours :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public int actionEnCours()
    {//compte les actions en cours
     int nbaction = 0;//on initialise la variable a 0
     foreach (DataGridRow ligne in monDataGridView)
         {
               if ( (ligne["ColonneDate"].Value < dateEcheance ) && (ligne["ColonneDate"].Value > dateDepart))// si l'action est en cours
              {
                   nbaction ++;// on ajoute une action
               }
          }
          return nbaction;// on retourne le nombre d'actions
    }
    Une fois ta fonction programmée ( le principe est là je te laisse le soin de comprendre et adapter pour toi ) il suffit d'appeler ta fonction au chargement de ton forme et lors du clic sur le bouton ajouter.

  11. #11
    Membre averti
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 14
    Par défaut
    Bonsoir Homo_Informaticus
    merci d'avoir pris la peine de m'expliquer en détails mais en essayant d'adaptant le code à mon cas, j'ai eu de nombreuses fautes genre:
    1- foreach statement cannot operate on variables of type 'System.Windows.Forms.DataGridView' because 'System.Windows.Forms.DataGridView' does not contain a public definition for 'GetEnumerator'
    2-Cannot apply indexing with [] to an expression of type 'System.Windows.Forms.DataGridRow'

    donc stp peux tu me préciser par quoi remplacer "ligne" et c'est quoi le problème avec "foreach"

    voici mon code:
    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
    public int actionEnCours()
            {
                Form2 appel_form2 = new Form2();
     
                DateTime Date = new DateTime();
                DateTime Délais = new DateTime();
                DateTime Date_réalisation = new DateTime();
     
     
                int nbaction = 0;
                foreach (DataGridRow ligne in appel_form2.dataGridView1)
                {
                    if ((ligne["Date"].Value < Délais) && (ligne["Date_réalisation"].Value != null))// si l'action est en cours
                    {
                        nbaction++;
                    }
                }
                return nbaction;
           }
    merci )

  12. #12
    Membre confirmé
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Août 2010
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Irlande

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

    Informations forums :
    Inscription : Août 2010
    Messages : 98
    Par défaut
    Bonjour,

    N'hésite jamais à rechercher sur Google la classe que tu utilise, tu as la chance de te mettre au C# qui possède une documentation très claire et complète.

    Si tu veux manipuler les ligne in faut que tu traduise "pour chaque ligne dans les lignes de mon DataGridView"

    Puis la documentation de la classe DataGridView t'indique : DataGridViews.Rows = DataGridViewRowCollection that contains all the rows in the DataGridView. Ce qui correspond bien à ton besoin.

    Essaye donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach (DataGridViewRow ligne in mondatagridview.Rows)
    Pour ces erreurs je te renvoies à :

    Utilisation d'une boucle foreach pour lire une collection

    Tutoriel : Comment lire une ligne, cellule ou colonne dans un DataGridView

    Je te conseilles de mettre le site MSDN en marque-pages car ce sera ton meilleur allié pendant tes développements.

    Si tu n'as pas trop à l'aise avec l'anglais clique sur English - United States en haut à droite; tu pourras changer la langue

    Bon codage.

Discussions similaires

  1. [Débutant] Comparer deux datetime
    Par luchoo dans le forum VB.NET
    Réponses: 2
    Dernier message: 15/09/2011, 11h05
  2. comparer deux colonnes datetime sans tenir compte de HH:MM:SS
    Par Msysteme dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 26/08/2010, 00h28
  3. Comparer deux champs DATETIME
    Par lolocdm dans le forum VBA Access
    Réponses: 11
    Dernier message: 30/07/2009, 15h56
  4. comparer deux string
    Par jul54 dans le forum MFC
    Réponses: 3
    Dernier message: 22/04/2004, 15h50
  5. [date] Comparer deux formats différents
    Par terziann dans le forum Requêtes
    Réponses: 17
    Dernier message: 21/07/2003, 15h21

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