[ACCESS] Classement

Résolu/Fermé
Messages postés
3
Date d'inscription
mercredi 3 mai 2006
Statut
Membre
Dernière intervention
11 mai 2006
-
Messages postés
3
Date d'inscription
mercredi 3 mai 2006
Statut
Membre
Dernière intervention
11 mai 2006
-
Bonjour,

Je débute avec access, j'ai reussi à calculée les point sur lequels je souhaite qu'un classement général soit fait.
Ce calcul de point est basé sur un calcul de points obtenu dans une precedente requete.
Je souhaite pouvoir prendre en compte le fait que certains participants peuvent etre ex-aequo.

Merci d'avance


PS: j'utilise ACCESS 2000



Merci d'avance

4 réponses

Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
182
Bonsoir,

Je ne vois pas de moyen simple de résoudre le problème...
Si je comprends bien, tu souhaites qu'Access attribue automatiquement la place au classement avec une possibilité de doublons.

Il y a moyen de le faire avec une fonction mais si tu débutes...

on peut imaginer une boucle qui parcourt tous les enregistrements préalablement classés en ordre décroissant et qui attribue le N° au classement après avoir vérifié si le ou les enregistrements suivant(s) renvoie(nt) le même nombre de points (en leur attribuant alors la même valeur)...

Je peux te faire une proposition plus précise si ça t'intéresse et à moins que quelqu'un d'autre n'ait une idée plus simple...
Messages postés
3
Date d'inscription
mercredi 3 mai 2006
Statut
Membre
Dernière intervention
11 mai 2006

Bonsoir,

Merci Zenon pour ta réponse, ce serait effectivement sympa si tu me faisais une propostion un plus précise car la je ne voit pas comment je peu traduire tes propos.


Merci
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
182
Bon,

on imagine une table T_Classement avec les champs N°Concurrent,Nom,Temps.

Une requête permet de classer les enregistrements par ordre croissant de points: SELECT T_Classement.Nom, T_Classement.Points, T_Classement.Classement FROM T_Classement ORDER BY T_Classement.Points;

(on peut bien sûr construire la requête avec l'assistant)

Ensuite, je créerais un formulaire basé sur la requête et j'ajouterais un bouton de commande dans la section en-tête avec le code suivant:

Private Sub NomDuBouton_Click()
Dim X, Y, Z, D As Integer 'désolé pour le caractère peu clair des variables (j'ai fait ça en vitesse et je ne suis pas très inspiré)
Z = 1 'initialise les compteurs
D = 1
DoCmd.GoToRecord , "NomDuFormulaire", acFirst
Do Until IsNull(Nom)
X = Temps
Classement = Z
DoCmd.GoToRecord , "NomDuFormulaire", acNext
Y = Temps
If X = Y Then
Classement = Z
D = D + 1 'il faut continuer à ajouter des valeurs sinon le classement redémarre à la valeur immédiatement supérieure et on aurait par exemple un second après plusieurs premiers...
Else
Z = Z + D
D = 1 'on réinitialise la valeur pour la prochaine fois ou des ex aequo se présentent
End If
Loop
End Sub


Bon, je ne suis pas un pro: il y a probablement moyen de faire ça plus proprement (par exemple tout en VB, sans créer de requête ou de formulaire) mais ça fonctionne.

J'espère que tu suis le principe...
Messages postés
3
Date d'inscription
mercredi 3 mai 2006
Statut
Membre
Dernière intervention
11 mai 2006

merci beaucoup