Calcul horaire de nuit sous access

Résolu
klein jacky Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
Bruce Willix Messages postés 11966 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
J'utilise ACCESS pour calculer une durée donnée à partir d'un champ (heure d'arrivée) et d'un autre (heure de sortie). Ma requête fonctionne correctement sauf lorsque l'heure d'arrivée est par exemple 23:30 et l'heure de sortie 00:30 ; dans ce cas le résultat est -23:00. Comment modifier la formule pour obtenir le résultat positif à savoir 1 heure (60:00). Merci pour votre aide.




A voir également:

4 réponses

Bruce Willix Messages postés 11966 Date d'inscription   Statut Contributeur Dernière intervention   2 594
 
Tu ajoutes une condition "IIF" disant que si le résultat de ton calcul est <0, il faut ajouter 24.
0
klein jacky Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Re,
Merci pour l'information, mais étant un peu novice, j'inscris cette condition où et comment?
Merci
0
Bruce Willix Messages postés 11966 Date d'inscription   Statut Contributeur Dernière intervention   2 594
 
Tu as quelle version d'access ?

Normalement, tu ouvres ta requête et tu verras apparaitre:
- les champs que tu as choisi pour ton calcul (probablement h_arrivee et h_sortie)
- un champ calculé qui te donne le résultat - appellons le h_nuit

Clique sur le champ calculé qui doit normalement indiquer quelque chose du style:
h_nuit: [h-depart]-[h-arrivee]

et modifie le code pour qu'il ressemble à ça:
h_nuit: IIf([h-depart]-[h-arrivee]<0;[h-depart]-[h-arrivee]+1;[h-depart]-[h-arrivee])


Petite note en passant: Access sait distinguer les jours normalement. Essaye d'inscrire tes horaires avec la date (donc, par exemple 1/1/2011 23:30 au lieu de 23:30 et 2/1/2011 00:30 au lieu de 00:30 => tu devrais avoir le bon résultat tout de suite)
0
klein jacky Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Re,
La version date de 2000. Il doit me manquer une case car je n'y arrive pas.

Voici ma requête:
-Heure d'arrivée
-Heure de sortie
-Expr1:DiffDate("s";[Heure d'arrivée];[Heure de sortie])
-Durée:Ent[Expr1]/3600 &":"& Format(Ent([Expr1]Mod3600)/60;":"
Je suppose que la modification doit se faire dans Expr1?
Merci de ton aide
Bon appétit
0
Bruce Willix Messages postés 11966 Date d'inscription   Statut Contributeur Dernière intervention   2 594
 
C'est dans la case Expr1 effectivement, ceci dit, je ne connais pas le fonction DiffDate donc peut être qu'en la modifiant directement tu obtiendras le même résultats.

Ce que je ferais à ta place, c'est d'ajouter une case et y inclure ma fonction: au pire, tu te retrouveras avec deux champs calculés, et si ma fonction te donne la bonne réponse, tu supprimes l'ancienne...
0
jacky klein Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Re,
Je viens d'installer ta formule. J'obtiens des résultats positifs mais de l'ordre de 0,0...Que dois-je faire?Merci
0
blux Messages postés 27121 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
tu souhaites avoir quel format en sortie ?
0
Bruce Willix Messages postés 11966 Date d'inscription   Statut Contributeur Dernière intervention   2 594
 
@ jacky : le résultat est correct, c'est l'affichage qui ne l'est pas : les nombres représentent la bonne durée, mais en format "windows".

Pour changer ça, rouvre la requête en mode création et sélectionne la colonne dont tu veux changer le format. Fais ensuite un clic droit et choisis "Propriétés'. Dans la box qui s'ouvre, repère la ligne format et écris le mode de formatage dans lequel tu veux que la valeur calculée s'affiche. Ce sont les même règles que dans Excel. Si tu écris "dd-mm-yyyy hh:mm:ss" (ou en français jj-mm-aaaa hh:mm:ss) ton résultat s'affichera de la façon suivante : 1/1/1899 12:00:00.

A toi de voir comment tu veux faire le display exact.

Tu peux changer ce paramètre sur chaque formulaire/rapport qui utilisera cette valeur.
0
jacky klein Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
en heures et minutes. Merci
0
Bruce Willix Messages postés 11966 Date d'inscription   Statut Contributeur Dernière intervention   2 594
 
Alors tu mets juste "hh:mm" :-)
0
blux Messages postés 27121 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
Salut,

si tu veux le temps en minutes entre deux dates, tu fais un truc comme ça :

SELECT datediff("n",datedeb,datefin)
FROM Table1;

A condition que les jours soient renseignés...
-1