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 :
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 :
Au risque de paraitre idiot, la solution est simple :
A1 = Déchargement
B1 = Pesée
Code : Sélectionner tout - Visualiser dans une fenêtre à part =B1-A1
Bonjour et merci de votre réponse mais ce calcul ne renvois pas un résultat au format HH:mm:ss
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
Oui c'est une bonne piste mais lorsque le calcul des heures est au dela de 24h cela ne fonctionne pas avec ce code :
par exemple H_DERREP = 06:00
Code : Sélectionner tout - Visualiser dans une fenêtre à part DerRep_Charg: Format(DiffDate("n";[H_DERREP];[H_CHARG])/1440;"Heure, abrégé")
et H_CHARG= 10:00 le lendemain matin, cela me renvois 4:00
ce qui n'est pas juste
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
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é ?
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é'))
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:
N'oubliez pas de créer un module pour la Function HeureSup24
Code : Sélectionner tout - Visualiser dans une fenêtre à part HSup24: HeureSup24(Somme(DiffDate("n";CDbl([datedeb]+[hmdeb]);CDbl([datefin]+[hmfin]))/1440))
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
"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
Effectivement c'est assez simple. le soucis est que l'exécution de ce code génère une erreur que voici :
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
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 :
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.
"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
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
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
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
C'est bon j'ai compris voici les étapes que j'ai suivis :
-intégration de la l'expression HSup24 à ma requete R_MM:
Puis je crée une nouvelle requete en mettant l'expression DerRep_Charg en "Premier"
Ca marche mais le résultat du calcul est juste pour les 2 premiers enregistrements mais pas pour les autres.
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
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
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager