Hallo,
ich habe eine Tabelle mit 12 Turnierteilnehmern.
Die Tabelle erhält eine Gesamtpunktzahl für jeden Teilnehmer.
Gesamtpunktzahlen können jedoch gleich sein, daher würden sich diese einen Ranglistenplatz teilen.
Mit welcher Funktion kann ich den Rang in die Tabelle schreiben so dass z.B. der erste Platz ggf. 2x vergeben wird, gefolgt von Platz 2,3,4....2x Platz 5 und dann 6,7,8....
Als Rang also
1. Müller
1. Maier
2. Bauer
3. Hausner
4. Kramer
5. Schmidt
5. Gruber
6....
7...
Hoffe ihr könnt helfen.
Ich glaube FAQ 3.1 - 3.11 Laufende Nummer/Summe in Abfragen (https://www.donkarl.com?FAQ3.11) - könnte dir weiterhelfen, wenn du dich auf deine Punktzahl anstelle der ID in dem Beispiel beziehst.
Wenn du das unbedingt in eine Tabelle schreiben willst, was üblicherweise nicht nötig ist, verwendest du eine Anfügeabfrage anstelle einer Auswahlabfrage.
Eine vorläufige Gewinnerliste (Tabelle), in der die Teilnehmer sortiert nach Gesamtpunktzahl stehen, habe ich mit einer Anfügeabfrage ja schon erzeugt.
Ich möchte aber in dem Gewinnerbericht eine Plazierung ausweisen, die z.B. 2x den ersten Platz ermöglicht, gefolgt vom 2. Platz.
Hallo,
vielleicht hilft Dir dieses weiter:
https://web.archive.org/web/20200222225524/http://dbwiki.net/images/1/13/AccSampleRang.zip
Zitat von: joschi50 am Juli 01, 2022, 14:31:42Ich möchte aber in dem Gewinnerbericht eine Plazierung ausweisen, die z.B. 2x den ersten Platz ermöglicht, gefolgt vom 2. Platz.
Worin unterscheidet sich eine Platzierung denn von einer Nummerierung?
Die Mehrfachvergabe von einem Platz ergibt sich automatisch, wenn du keine eindeutige ID, sondern deine Punkte verwendest.
Also der Tip von DF6GL hat mir schon mal ein Stück weitergeholfen.
Den Code habe ich abgeändert.
Teilweise schon richtig. Allerdings ermittelt er jetzt folgende Rangliste siehe Tabelle.
4 x Platz 1 wäre richtig da gleiche Punktzahl
Die Funktion müsste dann aber als nächstes den Platz 2 und nicht den Platz 5 ermitteln.
Hier mein Code:
Dim Aktzahl, MerkRang, AktRang, DB As Database, RS2 As Recordset
Set DB = CurrentDb()
Set RS2 = DB.OpenRecordset("SELECT * FROM Gewinnerliste12 ", dbOpenDynaset)
AktZeit = 0
Do While Not RS2.EOF
'If Aktzahl = RS2!Gesamtzahl Then AktRang = 0
AktRang = AktRang + 1
If Aktzahl <> RS2!Gesamtzahl Then MerkRang = AktRang
Aktzahl = RS2!Gesamtzahl
RS2.Edit
RS2!Rang = MerkRang
RS2.Update
RS2.MoveNext
Loop
RS2.Close
Me.Requery
gewinner2.JPG