Calcul horaire de nuit sous access

Résolu/Fermé
klein jacky Messages postés 3 Date d'inscription lundi 1 août 2011 Statut Membre Dernière intervention 1 août 2011 - 1 août 2011 à 10:11
Bruce Willix Messages postés 11968 Date d'inscription mardi 24 mai 2011 Statut Contributeur Dernière intervention 12 juin 2018 - 2 août 2011 à 10:44
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.




4 réponses

Bruce Willix Messages postés 11968 Date d'inscription mardi 24 mai 2011 Statut Contributeur Dernière intervention 12 juin 2018 2 590
1 août 2011 à 10:22
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 lundi 1 août 2011 Statut Membre Dernière intervention 1 août 2011
1 août 2011 à 11:09
Re,
Merci pour l'information, mais étant un peu novice, j'inscris cette condition où et comment?
Merci
0
Bruce Willix Messages postés 11968 Date d'inscription mardi 24 mai 2011 Statut Contributeur Dernière intervention 12 juin 2018 2 590
1 août 2011 à 11:27
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 lundi 1 août 2011 Statut Membre Dernière intervention 1 août 2011
1 août 2011 à 12:01
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 11968 Date d'inscription mardi 24 mai 2011 Statut Contributeur Dernière intervention 12 juin 2018 2 590
1 août 2011 à 12:36
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 mardi 2 août 2011 Statut Membre Dernière intervention 2 août 2011
2 août 2011 à 08:57
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 26456 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 12 novembre 2024 3 313
2 août 2011 à 10:11
tu souhaites avoir quel format en sortie ?
0
Bruce Willix Messages postés 11968 Date d'inscription mardi 24 mai 2011 Statut Contributeur Dernière intervention 12 juin 2018 2 590
2 août 2011 à 10:20
@ 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 mardi 2 août 2011 Statut Membre Dernière intervention 2 août 2011
2 août 2011 à 10:21
en heures et minutes. Merci
0
Bruce Willix Messages postés 11968 Date d'inscription mardi 24 mai 2011 Statut Contributeur Dernière intervention 12 juin 2018 2 590
2 août 2011 à 10:44
Alors tu mets juste "hh:mm" :-)
0
blux Messages postés 26456 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 12 novembre 2024 3 313
1 août 2011 à 21:24
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