[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
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
A voir également:
- [ACCESS] Classement
- Logiciel classement photo - Guide
- Logiciel de classement de documents gratuit - Télécharger - Bureautique
- Gmail regle de classement - Guide
- Access appdata - Guide
- Db classement foot - Forum Réseaux sociaux
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
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...
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...
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
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
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
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
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...
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...
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
11 mai 2006 à 00:47
merci beaucoup