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

Access Discussion :

Différence de temps entre deux enregistrements [AC-2003]


Sujet :

Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 199
    Points : 103
    Points
    103
    Par défaut Différence de temps entre deux enregistrements
    Bonjour à tous.

    J'ai une table avec trois champs : Date, Heure et Valeur.

    Les deux champs (date/heure) sont indéxés comme clef primaire.

    L'heure est celle d'une prise de mesure d'une sonde au format hh:mm:ss (entre 00:00:00 et 23:59:59), la valeur lue par la sonde est enregistrée dans le champ valeur au format Integer.

    Dans une requête, je souhaite pouvoir calculer le temps passé entre l'heure d'un enregistrement et l'heure de l'enregistrement précédent puis faire apparaître le résultat dans un champ Durée. Le pas d'enregistrement est normalement d'une minute, mais des enregistrements peuvent être manquants, d'où la nécessité de connaître la différence de temps passé entre deux enregistrements.

    De même, je souhaite pouvoir calculer la différence entre les deux valeurs de ces mêmes enregistrements et les afficher dans un champ Variation.

    Peux-t-on réaliser ceci, donc, sans passer par VBA ?

    Merci pour vos réponses

  2. #2
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Décembre 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Décembre 2015
    Messages : 217
    Points : 356
    Points
    356
    Par défaut
    Salut,

    Tu peux rajouter un champ dans ta table ?

    Car une solution pourrais être de rajouter un champ NumAuto afin de pouvoir déterminer la chronologique des enregistrements pour faire, dans une requête, une sous-requete qui irait chercher la date et l'heure du numéro de l'enregistrement-1 puis ensuite calculer le temps entre les deux dates et ça sans VBA.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 199
    Points : 103
    Points
    103
    Par défaut
    Merci pour cette réponse

    J'y ai pensé. Le problème avec cette "astuce" c'est qu'en fonction de l'ordre des tris et requêtes éventuelles, ça ne marche plus.

    Comme de surcroît, j'importe les données d'un fichier .CSV, il faut que je m'assure préalablement que le classement y est correcte.

    Donc, ce n'est pas vraiment otpimum.

    Au pire, je vais me rabattre sur une boucle de calcul, mais ça me rajoute deux champs supplémentaires (car j'ai deux valeurs en fait) et à raison de 1440 valeurs x 2 x 360 cela fait 1 036 800 données supplémentaires à intégrer chaque année. Ca me gène, alors qu'un calcul dans une requête permettrait d'avoir la même information sans devoir l'inscrire en dur dans la table.


    J'ai déjà approché le résultat de la façon suivante :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT Mesure.Date, Mesure.Heure, Mesure.Index, Nz(DLookUp("[Index]","Mesure","[Heure]=" & [Heure]-#12/30/1899 0:1:0#),0) AS Précédent
    FROM Mesure;

    Il me reste un problème à résoudre. En effet, une grande majorité des résultats est conforme. Certains sont à 0, tel que le montre le résultat ci-dessous et je ne vois pas pourquoi.



    PS : le format date a été modifié en MM/JJ/AA dans la colonne mois. Je ne me rapelle plus comment le remettre dans le bon ordre en résultat de requête. Peut-être avec la commande format() ?

    ********************
    Evolution :

    Je pense cohérent, pour limiter la quantité de données, de regrouper les champs date et heure pour n'avoir qu'un seul champ que j'appelle GDH (groupe date/heure). Comme au final, une date est un nombre réel et que la partie heure n'est que la partie décimale, je gagne effectivement 1440 données par jours.

    Maintenant j'ai une table avec seulement 2 champs, le champ GDH (clé primaire) et le champ index contenant la valeur de la sonde.

    En considérant que les valeurs sont incrémentées par minute entière, je peux retrouver la valeur de l'enregistrement précédent en retranchant 1mn à la valeur du champ courant.

    je passe donc par cette requête SQL :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT MesureGDH.GDH, MesureGDH.Index, CDate([gdh]-#12/30/1899 0:1:0#) AS Enrprec, DLookUp("[Index]","MesureGDH","[GDH]=" & [gdh]-#12/30/1899 0:1:0#) AS IndexPrécédent
    FROM MesureGDH;

    En revanche, le lookup ne donne le résultat (IndexPrécédent) que tous les 9 enregistrement, alors que le champ Enrprec prend bien en compte le bon GDH pour chaque enregistrement.

    Voici visuellement le résultat :


    Auriez-vous une idée de ce qui cloche ?


    PS : la réponse a été apportée ici : http://www.developpez.net/forums/d15...e/#post8633540

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 13/12/2006, 12h57
  2. Différence de fonctionnement entre deux animations
    Par jpboogie dans le forum Flash
    Réponses: 3
    Dernier message: 09/10/2006, 10h32
  3. Requête pour calculer le temps entre deux dates
    Par Badboy62cfp dans le forum Access
    Réponses: 2
    Dernier message: 19/05/2006, 13h50
  4. Perte de temps entre Deux bases MySQL
    Par ramm50 dans le forum Outils
    Réponses: 7
    Dernier message: 08/09/2005, 09h33

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