[ACCESS] Classement

Résolu/Fermé
vincer Messages postés 3 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 11 mai 2006 - 3 mai 2006 à 17:19
vincer Messages postés 3 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 11 mai 2006 - 11 mai 2006 à 00:47
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
A voir également:

4 réponses

zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 180
3 mai 2006 à 23:14
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...
0
vincer Messages postés 3 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 11 mai 2006
4 mai 2006 à 19:37
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
0
zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 180
4 mai 2006 à 23:03
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...
0
vincer Messages postés 3 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 11 mai 2006
11 mai 2006 à 00:47
merci beaucoup
0