Faire une somme sur un champ heure

dam84 Messages postés 40 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 17 mai 2005 - 3 juin 2004 à 12:52
dam84 Messages postés 40 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 17 mai 2005 - 8 juin 2004 à 07:51
Bonjour
Je voudrai faire une requete qui calcul une somme d'heure
Ca donnerai ceci
select sum (heure.heure) from heure
Quand je regarde la table le champ heure a bien la forme 02:30
03:12
........ etc
mais quand j'execute la requete il me retourne 1,5 et il ne me concerve pas le format.
Comment puis-je faire

Merci d'avance

Dam

5 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
3 juin 2004 à 20:21
Salut,
Alors là tu t'mbarque dans un truc chiant.
Pour le boulot, g fait un truc ds le genre en excel et la formule est longue comme le bras.
Le prob vient que si la somme des heures:minutes que tu additionnes ne doit pas dépasser 24h. Sinon ça te donnes des résultats bizarres.
En vb6, g pas essayé mais, si tu veux, demain matin je te poste la formule excel que j'avais trouvée.
Sinon, tu as un système simple, un champ qui contient les heures, un autre les minutes et tu gères les conversions du style si minutes >=60 -> heures =heures + 1:minutes=minutes-60 etc ...........
Mais c une bonne question, comme je vais avoir un planning a développer, je vais essayer de trouver une solution +simple.
Si qqun a une soluce avec une simple requete sql, je suis preneur aussi.

Cordialement

CanisLupus
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
3 juin 2004 à 21:47
Je viens de d'essayer un truc qui a l'air de fonctionner :

Bien sûr, tu remplaces l'open de la base et du recordset par tes propres noms.
La formule d'affichage est la ligne label1 = ........

Private Sub Command1_Click()
Dim db As Database
Dim rs As Recordset
Dim rq As String

rq = "select sum(temps) as t from table1"

Set db = OpenDatabase("C:\Developpement\Temp\bd1.mdb")
Set rs = db.OpenRecordset(rq, dbOpenSnapshot)

Label1 = Int(rs!t * 24) & ":" & Format((rs!t - Int(rs!t * 24) / 24) * 1440, "00")

End Sub

Essaie ce truc et dis moi si ça te convient. Je n'ai testé qu'avec un format "heure abrégé" pour le champ temps et là on ne peut avoir qu'une valeur < 24:00.

Cordialement

CanisLupus
0
dam84 Messages postés 40 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 17 mai 2005
4 juin 2004 à 07:49
Merci de ta reponse CanisLupus

Mais en fait j'affecte directement le resultat du sql a une liste

Donc voila.

Le select est un peu plus long et il comprend un union

S'il n'y a pas de solution pour formater directement le format dans le select je passerai par ta solution

Si tu vois une solution fais moi signe

Dam
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
4 juin 2004 à 16:08
Salut, dans ce cas, tu mets la même chose ds le select comme suit :

Private Sub Command1_Click()
Dim db As Database
Dim rs As Recordset
Dim rq As String

rq = "select Int(sum(temps) * 24) & ':' & Format((sum(temps) - Int(sum(temps) * 24) / 24) * 1440, '00') as t from table1"

Set db = OpenDatabase("C:\Developpement\Temp\bd1.mdb")
Set rs = db.OpenRecordset(rq, dbOpenSnapshot)

Label1 = rs!t

End Sub

Cordialement

CanisLupus
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dam84 Messages postés 40 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 17 mai 2005
8 juin 2004 à 07:51
Un grand merci a toi CanisLupus
C'est nickel, c'est exactement ce que je voulais faire
Merci et a bientot pour de nouveaux problemes
Dam
0