|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Inscription : janvier 2011 Messages : 307 ![]() |
Bonjour à tous,
Je voudrais connaitre le format à appliquer à un champ pour que celui-ci accepte des durées du type 42h20mn et que les données entrées soient récupérables pour formatage et additions. Vu que Access n'accepte pas les formats heures supérieurs à 24h sur un champ au format "Heure abrégé", comment permettre à l'utilisateur de rentrer dans un seul champ directement cette donnée ? (je ne parle pas de faire de Datediff mais de pouvoir rentrer par ex : 123 heures et 17 minutes et de récupérer cette donnée pour la formater ensuite grâce à un module...) Merci d'avance pour toute réponse ! |
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() |
Bonjour, j'aurais tendance à te dire de faire au plus simple :
|
|
|
00
|
|
|
#3 | ||||
![]() ![]() Denis Développeur informatique Inscription : août 2004 Messages : 3 204 ![]() |
Salut,
Tu peux faire une saisie du style 25:00 ou 25h00 dans un champ de type texte et après utiliser une fonction avec split pour faire des calculs sur ce champ: exemple: si champ1 contient la valeur "25:00" tu peux utiliser la fonction split pour séparer les heures des minutes: Code :
Code :
La fonction inverse est dans la faq. A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp. Bon développement ! Mes tutoriels et contributions sur ma page perso: Ma page personnelle |
||||
|
00
|
|
|
#4 | |
|
Membre régulier
![]() Inscription : janvier 2011 Messages : 307 ![]() |
Citation:
J'explique la démarche pour ceux qui en auraient besoin : J'ai fait des champs calculés : [Heure] en numérique [Minutes] en numérique avec condition <=59 [Total] en Euros Et des champs dépendants de la table [Taux horaire]en euros [Durée] en Texte [Montant Total] en Euros Je mets dans le champ dépendant [Montant]=([Heures]*[TauxHoraire])+(([Minutes]*[TauxHoraire])/60) Il suffit ensuite d'appliquer une chaîne sur le champ durée pour concaténer la valeur heures et minutes et de sauvegarder les valeurs de [Montant] et de la chaine ([heures]&"h"&[Minutes]&"mn") dans les champs dépendants [Montant Total] et [Durée] de la table grâce à un événement after update en VBA. Ceci dit reste à voir comment additionner ces valeurs dans des requêtes et états ...Je suppose qu'il faudra extraire les fractions Minutes et Heures grâce à un module ? |
|
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() Inscription : janvier 2011 Messages : 307 ![]() |
Bonjour User et merci à toi,
Il me semble que ta méthode est la meilleure si l'on veut retravailler les données dans des requêtes et états, je vais l'essayer et vous mettre au courant... |
|
|
00
|
|
|
#6 | |||||
|
Membre régulier
![]() Inscription : janvier 2011 Messages : 307 ![]() |
Citation:
Mettons que l'on ait une requête ayant seulement un seul champ durée et seulement 2 lignes qui afficheraient : 25h35m 34h40mn Quelle syntaxe mettre dans un champ [TotalHeures] de la dite requête pour que la fraction "Minutes" s'additionne à celle des heures et recompose une chaine hh:mm correcte ? Sur deux lignes ça va encore mais sur plusieurs lignes on pourrait se retrouver avec 1000 Minutes par ex... Je pense qu'il doit y avoir un moyen très simple de recalculer ça grâce à une fonction déjà incluse à mettre comme argument de champ de requete , non ? |
|||||
|
|
00
|
|
|
#7 | ||
![]() ![]() Denis Développeur informatique Inscription : août 2004 Messages : 3 204 ![]() |
Salut,
En effet ton exemple est assez bien trouvé et abouti à une méthode assez amusante Si tu as dans une table nommée "Table1" les valeurs: Durée ------ 25:35 34:40 Tu aurais une requête du style: Code sql :
Note que j'utilise d'abord la fonction HourSup24 pour traduite la durée texte en expression date et heure. Puis je fais la somme de ces expressions date et heure. Pour enfin la retraduire en expression chaine du style "00:00" avec la fonction HeureSup24 de la faq. C'est assez tordu mais aussi assez marrant à mettre en place A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp. Bon développement ! Mes tutoriels et contributions sur ma page perso: Ma page personnelle |
||
|
10
|
|
|
#8 | |||
|
Membre régulier
![]() Inscription : janvier 2011 Messages : 307 ![]() |
Citation:
Et dire qu'access pourrait gérer ça automatiquement comme le fait Excel en mettant [hh]:nn !!!! Que de complications ! En plus, au moment de la saisie de la durée, aucun masque de saisie ne semble être pratique pour l'utilisateur, s'agissant d'un champ texte. A moins qu'il y ait une autre fonction à mettre en place ! Pfffff, par moment on se demande ... Merci pour tout commentaire ! |
|||
|
|
10
|
|
|
#9 |
![]() ![]() Denis Développeur informatique Inscription : août 2004 Messages : 3 204 ![]() |
Salut,
Pour le masque de saisie tu peux essayer un truc comme celà: "00:00;0;_" En évitant bien sûr de mettre un format pour le champ
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp. Bon développement ! Mes tutoriels et contributions sur ma page perso: Ma page personnelle |
|
00
|
Copyright © 2000-2012 - www.developpez.com