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 :

Requête calcul de la différence (en heures) entre deux champs Heures


Sujet :

Access

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 150
    Points : 63
    Points
    63
    Par défaut Requête calcul de la différence (en heures) entre deux champs Heures
    Bonjour dans une requête j'ai deux champs qui contiennent des heures. je souhaite créer un champs supplémentaire qui me calculerais la différence en heures entre mes 2 champs.

    Voici une capture de ma requête :

    Nom : Capture.PNG
Affichages : 3027
Taille : 8,7 Ko

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Sans emploi
    Inscrit en
    Juin 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Sans emploi

    Informations forums :
    Inscription : Juin 2018
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Au risque de paraitre idiot, la solution est simple :
    A1 = Déchargement
    B1 = Pesée

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 150
    Points : 63
    Points
    63
    Par défaut
    Bonjour et merci de votre réponse mais ce calcul ne renvois pas un résultat au format HH:mm:ss

  4. #4
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut,
    Ceci pourrait-il d'aider ?
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 150
    Points : 63
    Points
    63
    Par défaut
    Oui c'est une bonne piste mais lorsque le calcul des heures est au dela de 24h cela ne fonctionne pas avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerRep_Charg: Format(DiffDate("n";[H_DERREP];[H_CHARG])/1440;"Heure, abrégé")
    par exemple H_DERREP = 06:00
    et H_CHARG= 10:00 le lendemain matin, cela me renvois 4:00
    ce qui n'est pas juste

  6. #6
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Comme indiqué dans ce billet, vous devez formater vos champs jj/mm/aaaa hh:nn pour passer la barre des 24 heures.
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 150
    Points : 63
    Points
    63
    Par défaut
    Merci pour ce billet très utile. Maintenant mon soucis est que mes champs date et heures sont séparés. Comment faire du coup pour calculer l'écart dans l'exemple surligné ?
    Nom : Capture.PNG
Affichages : 2902
Taille : 15,0 Ko

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 150
    Points : 63
    Points
    63
    Par défaut
    Finalement j'ai testé avec ce code qui fonctionne , qu'en pensez-vous ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerRep_Charg: VraiFaux([DATE_DERREP]=[DATE_CHARG];Format(DiffDate("n";[H_DERREP];[H_CHARG])/1440;'Heure, abrégé');Format(DiffDate("n";[H_DERREP];[H_CHARG])/1440+24;'Heure, abrégé'))

  9. #9
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Re,
    Dans l'argument Si Faux de votre fonction Iif, vous ajoutez en brut +24. Euh ... et si vous dépassez ce délai de +24, vous êtes dans les choux, façon de parler.
    La méthode est simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HSup24: HeureSup24(Somme(DiffDate("n";CDbl([datedeb]+[hmdeb]);CDbl([datefin]+[hmfin]))/1440))
    N'oubliez pas de créer un module pour la Function HeureSup24
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function HeureSup24(dtm As Date) As String
        ' Calcule le nombre d'heures
        HeureSup24 = DateDiff("h", 0, dtm)
        ' On ajoute les minutes et les secondes
        HeureSup24 = HeureSup24 & Format(dtm, ":nn:ss")
    End Function
    Images attachées Images attachées  
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  10. #10
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 150
    Points : 63
    Points
    63
    Par défaut
    Effectivement c'est assez simple. le soucis est que l'exécution de ce code génère une erreur que voici :

    Nom : Capture.PNG
Affichages : 2932
Taille : 17,7 Ko

  11. #11
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Normal,
    Vous utilisez la fonction Premier qui une fonction d'agrégation (de regroupement) avec une expression la fonction HeureSup24 et cela est impossible.
    La meilleure solution supprimer la fonction Premier sur HeureSup24.
    Créer une nouvelle req qui aura pour source la req contenant HeureSup24 et appliquer la fonction Premier sur HeureSup24.
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  12. #12
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 150
    Points : 63
    Points
    63
    Par défaut
    bonjour, j'ai fait comme indiqué :

    -Création d'une nouvelle requete basée sur la 1er
    -insertion de HeuresSup24

    mais j'obtient encore un message d'erreur :

    Nom : Capture.PNG
Affichages : 2903
Taille : 26,5 Ko

  13. #13
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Dans votre req post#10 vous calculez sous forme d'expression DerRep_Charg : HeureSup24 ..... dans votre req R_MM
    Vous créez ensuite une autre req avec pour source R_MM vous insérez tous les champs et pour DerRep_Charg vous appelez la fonction Premier
    Normalement, ça devrait le faire.
    Images attachées Images attachées   
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  14. #14
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 150
    Points : 63
    Points
    63
    Par défaut
    Donc j'ai fait comme ca :
    -Création d'une nouvelle requête contenant tous les champs de R_MM
    -Ajout de la fonction HeureSup24
    -Regroupement des champs
    -HeuresSupp24 = Premier

    J'obtient toujours la meme erreur
    Nom : Capture.PNG
Affichages : 2880
Taille : 34,2 Ko

  15. #15
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut

    Lire ceci et surtout l'appliquer.
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  16. #16
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 150
    Points : 63
    Points
    63
    Par défaut
    Il doit y avoir un truc que je n'ai pas saisie dans vos explications. Pourriez-vous me dire en détails comment partie de ma requête R_MM pour arriver a votre résultat ? merci de votre patience et de vos réponses

  17. #17
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 150
    Points : 63
    Points
    63
    Par défaut
    C'est bon j'ai compris voici les étapes que j'ai suivis :

    -intégration de la l'expression HSup24 à ma requete R_MM:

    Nom : Capture.PNG
Affichages : 2789
Taille : 6,1 Ko

    Puis je crée une nouvelle requete en mettant l'expression DerRep_Charg en "Premier"
    Nom : Capture1.PNG
Affichages : 2732
Taille : 2,9 Ko

    Ca marche mais le résultat du calcul est juste pour les 2 premiers enregistrements mais pas pour les autres.
    Nom : Capture2.PNG
Affichages : 2778
Taille : 14,0 Ko

  18. #18
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Pourriez-vous faire une capture d'écran de la req R_MM (post #10) sans aucun critère et expliquer de façon précise ce que vous cherchez à afficher comme résultat.

    Je remarque déjà que vous appliquez la fonction Premier() sur le champ P1CHconv. Je comprends que ce champ contient forcément des doublons et que vous cherchez à intercepter le premier de chacun d'eux. Dans un jeu d'enregistrements, si vous avez 10 fois la valeur 75 dans P1CHconv, avec la fonction Premier() vous allez afficher la ligne qui contiendra la première valeur 75 de la série. Et donc la valeur correspondant au champ calculé DerRep_Charg.
    Alors vouloir appliquer la fonction Premier() sur le champ DerRep_Charg, je n'en vois pas l'intérêt.
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  19. #19
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 150
    Points : 63
    Points
    63
    Par défaut
    Tout d'abord merci de prendre du temps pour m'aider. Voici une capture d'écran de R_MM sans aucun critère.
    Je cherche à obtenir le résultat suivant :

    PL_Date = (une date au choix ici le 11/06/18) et PL_SigneQ=MM sont les critères de bases puis viennent s'ajouter :
    ou
    MFS = S
    ou
    ABC<>"A"
    ou
    P1CHconv<76
    ou
    OBS1<>0

    Puis 2 zones d'expression pour un calcul d'heures :

    Dech_Ab= différence entre H_DECH et H_PESEE

    DerRep_Charg = différence H_DERREP et H_CHARG

    Nom : Capture.PNG
Affichages : 2802
Taille : 124,3 Ko

  20. #20
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Ok. La capture affiche des données qui sont filtrées selon les critères de la capture de votre post#10.

    Il y a un truc qui m'échappe. Selon votre capture, DerRep_Charg affiche 34:00:00 sur toutes les lignes paires.
    Alors que la fonction HeureSup24 calcule la différence entre DATE_DERREP/H_DERREP et DATE_CHARG+H_CHARG ligne par ligne.

    Que cherchez-vous exactement comme résultat en appliquant la fonction Premier() sur P1CHconv puis sur DerRep_Charg ?
    Parce qu'en l'état, selon votre capture, vous aurez autant de lignes qu'il y a de variables différentes dans, et je prends comme exemple, PL_DATE, H_PESEE, NUM_TUER, MFS, ABC, Dech_Ab
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/01/2015, 08h56
  2. calculer la différence en pourcentage entre deux champs sql
    Par sihammaster dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 05/07/2011, 17h48
  3. Réponses: 7
    Dernier message: 29/11/2010, 12h26
  4. [Dates] Calculer différence en jours entre deux dates
    Par looping2b2a dans le forum Langage
    Réponses: 4
    Dernier message: 29/12/2006, 23h32
  5. Calcul entre deux dates heures
    Par Isa31 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 31/03/2005, 13h17

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