requete de calcul de moyenne de temps

Le
Txl
Bonjour à tous,

J'ai une liste de temps au tour pour une course de voitures et je voudra=
is =

faire une moyenne pour extraire le temps au tourmoyen :)

J'ai réussi à importer dans access 2007 les temps au format suivant

1:43.258 soit 1 minute 43 secondes et 258 millièmes.

C'est dans une table "23" avec comme nom de champ "tourimport" en mode =

texte

Je cherche donc une requête pour extraire les minutes, les multiplier =
par =

60, ajouter les secondes et les millièmes pour diviser le tout par le =
=

nombre de tours (d'enregistrements) et retransformer le résultat en fo=
rmat =

1:43.258

Merci de votre aide
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gloops
Le #26317872
Txl a écrit le 26/10/2014 18:43 :
Bonjour à tous,

J'ai une liste de temps au tour pour une course de voitures et je
voudrais faire une moyenne pour extraire le temps au tour...moyen :)

J'ai réussi à importer dans access 2007 les temps au format suivant

1:43.258 soit 1 minute 43 secondes et 258 millièmes.

C'est dans une table "23" avec comme nom de champ "tourimport" en mode
texte

Je cherche donc une requête pour extraire les minutes, les multiplier
par 60, ajouter les secondes et les millièmes pour diviser le tout pa r
le nombre de tours (d'enregistrements) et retransformer le résultat e n
format 1:43.258

Merci de votre aide




Bonjour,

Pourquoi pas plutôt SELECT AVG(tourimport) FROM 23 ?

Le formatage étant du ressort de l'interface ...

Entre parenthèses, il ne faut pas avoir froid aux yeux pour appeler une
table 23.
Txl
Le #26317926
Le Sun, 26 Oct 2014 21:15:17 +0100, Gloops écrit:

Txl a écrit le 26/10/2014 18:43 :
Bonjour à tous,

J'ai une liste de temps au tour pour une course de voitures et je
voudrais faire une moyenne pour extraire le temps au tour...moyen :)

J'ai réussi à importer dans access 2007 les temps au format suiva nt

1:43.258 soit 1 minute 43 secondes et 258 millièmes.

C'est dans une table "23" avec comme nom de champ "tourimport" en mod e
texte

Je cherche donc une requête pour extraire les minutes, les multipli er
par 60, ajouter les secondes et les millièmes pour diviser le tout par
le nombre de tours (d'enregistrements) et retransformer le résultat en
format 1:43.258

Merci de votre aide




Bonjour,

Pourquoi pas plutôt SELECT AVG(tourimport) FROM 23 ?

Le formatage étant du ressort de l'interface ...

Entre parenthèses, il ne faut pas avoir froid aux yeux pour appeler une
table 23.




Bonsoir,

Merci du tuyau mais comme a ce moment la c'est du texte je pense qu'il
faut que je transforme le tout en secondes.milliemes avant de faire le
calcul, non ?

la table 23 s'appelle commme ca parce que c'est le numéro de la voitur e,
il y a une table pour chaque voiture....

Merci
db
Le #26318144
Le 26/10/2014 18:43, Txl a écrit :
Bonjour à tous,

Je cherche donc une requête pour extraire les minutes, les multiplier
par 60, ajouter les secondes et les millièmes pour diviser le tout par
le nombre de tours (d'enregistrements) et retransformer le résultat en
format 1:43.258



Bonsoir,

Dans un module, mettre les deux fonctions suivantes :

Function StrTimeToInt(strTime As String) As Long
Dim mn As Long, sec As Long, mill As Long
Dim c1 As Byte, c2 As Byte
c1 = InStr(strTime, ":")
c2 = InStr(strTime, ".")
mn = Mid(strTime, 1, c1 - 1)
sec = Mid(strTime, c1 + 1, c2 - (c1 + 1))
mill = Mid(strTime, c2 + 1)
StrTimeToInt = mn * 60000 + sec * 1000 + mill
End Function

Function IntToStrTime(intTime As Long) As String
Dim mn As Long, sec As Long, mill As Long

sec = Int(intTime / 1000)
mill = intTime - sec * 1000
mn = Int(sec / 60)
sec = sec - mn * 60
IntToStrTime = Trim(Str(mn)) & ":" & Trim(Str(sec)) & "." & Trim(mill)

End Function



puis créer la requête suivante :

SELECT IntToStrTime(Avg(StrTimeToInt([tourimport]))) AS TempsMoyen
FROM 23;


C'est du brut de fonderie : il n'y a pas de gestion d'erreur dans les
fonctions. Il faudra sans doute en rajouter.

Et plutôt que de faire une table par voiture, il serait plus judicieux
de mettre toutes les voitures dans une même table, en y ajoutant un
champ "NumVoiture"

db

db
Txl
Le #26318686
ok, ca marche nickel merci,

Je vais faire évoluer la base pour avoir les temps de plusieurs autos dans
la meme base et ensuite je reviens vers vous avec les questions suivante s.

Merci





Le 26/10/2014 18:43, Txl a écrit :
Bonjour à tous,

Je cherche donc une requête pour extraire les minutes, les multipli er
par 60, ajouter les secondes et les millièmes pour diviser le tout par
le nombre de tours (d'enregistrements) et retransformer le résultat en
format 1:43.258



Bonsoir,

Dans un module, mettre les deux fonctions suivantes :

Function StrTimeToInt(strTime As String) As Long
Dim mn As Long, sec As Long, mill As Long
Dim c1 As Byte, c2 As Byte
c1 = InStr(strTime, ":")
c2 = InStr(strTime, ".")
mn = Mid(strTime, 1, c1 - 1)
sec = Mid(strTime, c1 + 1, c2 - (c1 + 1))
mill = Mid(strTime, c2 + 1)
StrTimeToInt = mn * 60000 + sec * 1000 + mill
End Function

Function IntToStrTime(intTime As Long) As String
Dim mn As Long, sec As Long, mill As Long

sec = Int(intTime / 1000)
mill = intTime - sec * 1000
mn = Int(sec / 60)
sec = sec - mn * 60
IntToStrTime = Trim(Str(mn)) & ":" & Trim(Str(sec)) & "." & Trim(mil l)

End Function



puis créer la requête suivante :

SELECT IntToStrTime(Avg(StrTimeToInt([tourimport]))) AS TempsMoyen
FROM 23;


C'est du brut de fonderie : il n'y a pas de gestion d'erreur dans les
fonctions. Il faudra sans doute en rajouter.

Et plutôt que de faire une table par voiture, il serait plus judicie ux
de mettre toutes les voitures dans une même table, en y ajoutant un
champ "NumVoiture"

db

db




--
Utilisant le logiciel de courrier d'Opera : http://www.opera.com/mail/
Publicité
Poster une réponse
Anonyme