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

Bases de données Delphi Discussion :

mettre à jour un dataset en fonction des valeurs qu'il contient ?


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 98
    Points : 69
    Points
    69
    Par défaut mettre à jour un dataset en fonction des valeurs qu'il contient ?
    Bonjour,
    j'ai un dataset qui contient les informations suivantes:
    date durée (obtenue par calcul de fin-début)
    ex: 19/05/06 05:03
    19/05/06 02:05
    20/05/06 06:00
    21/05/06 04:30
    21/05/06 01:42

    je voudrais obtenir dans un troisième champ le total de durée par journée, ce qui ferait dans l'exemple suivant
    19/05/06 05:03 00:00
    19/05/06 02:05 07:08 (stocker la durée dans la dernière ligne de date ?)
    20/05/06 06:00 06:00
    21/05/06 04:30 00:00
    21/05/06 01:22 05:52

    Quel est le meilleur moyen pour obtenir ce résultat, j'ai essayé de boucler sur le dataset en comparant date mais cela n'est pas suffisant car je ne sais pas comment initialiser le 1er date

    voici mon code (qui est faux)

    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
    With MonDataset do
        try
          open;
     
          DernDate := 0;
     
          First;
          while not eof do
          begin
     
            sousTot := sousTot + (FieldByName('FIN').AsDateTime - FieldByName('DEBUT').AsDateTime) ;
     
              if (DernDate <> Trunc(FieldByName('DEBUT').AsDateTime)) then
              begin
                edit;
                FieldByName('DUREE').AsFloat := sousTot ;
                post;
                sousTot := 0; //réinitialise
              end;
     
            DernDate := Trunc(FieldByName('DEBUT').AsDateTime);
            Next;
          end;
    merci,
    Isa
    Isachat

  2. #2
    Membre averti Avatar de Bejaia-In
    Inscrit en
    Avril 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 365
    Points : 392
    Points
    392
    Par défaut
    Pourquoi ne pas utiliser une requête ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Date, SUM(Duree) as Duree
    FROM NomTable
    GROUP BY Date
    ORDER BY Date
    Tu auras pour chaque jour la durée totale.
    ....................................................................
    Aidez-vous... Dieu vous aideras et nous aussi..
    ....................................................................

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 98
    Points : 69
    Points
    69
    Par défaut
    Bonjour,

    merci de ta réponse mais cela ne correspond pas à mes besoins. Je crois que je vais être obligée de faire deux requêtes distinctes, une pour récupérer la durée par activité et l'autre la durée par jour.

    Isa
    Isachat

Discussions similaires

  1. [Débutant] Mettre un fond en couleur en fonction des valeurs de y
    Par Anna76 dans le forum MATLAB
    Réponses: 2
    Dernier message: 29/08/2014, 11h05
  2. [AC-2003] Mettre à jour une étiquette en fonction de la valeur saisie dans une autre
    Par Antisthene dans le forum VBA Access
    Réponses: 9
    Dernier message: 23/07/2014, 19h25
  3. Réponses: 0
    Dernier message: 14/02/2014, 11h15
  4. Réponses: 0
    Dernier message: 27/01/2010, 18h04
  5. Réponses: 8
    Dernier message: 10/10/2006, 10h58

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