Wettbewerbsauswertung
Karl Donaubauer
Gesendet: 26.06.14 13:37
Betreff: RE: Wettbewerbsauswertung



Elite Veteran

Beiträge: 848
50010010010025
Ort: Wien
Hallo, Werner!

Nur mit SQL und TOP kommst du da nicht recht weiter. Zum einen, weil du eben die Spitzenwerte für jeden brauchst, zum anderen weil TOP Ränge mehrfach vergibt, wenn es mehrere gleiche Werte gibt.

Für eine genaue Anleitung müsste man deine Tabellen und Felder kennen. Ich gehe in meinem Beispiel mal davon aus, dass du eine Abfrage "qryErgebnisse" hast mit zwei Feldern PersonId und Punkte, aufsteigend sortiert nach PersonId und absteigend nach Punkten. Die Abfrage zeigt also die erste Person beginnend mit ihrem besten Ergebnis, dann ihr zweitbestes Ergebnis usw., danach kommt die nächste Person.

Vorgehen:

Erstelle eine neue (Arbeits-) Tabelle "tblAuswertung" mit 2 Feldern: PersonId und Punkte

Wähle im Ribbon "Erstellen" ganz rechts "Modul" und kopiere folgenden VBA-Code in das neue Modulfenster:

Public Sub procTop()

Dim db As DAO.Database
Dim rsQuelle As DAO.Recordset, rsZiel As DAO.Recordset

Dim lngPId As Long, lngPunkte As Long, i As Long
Set db = CurrentDb

'Zieltabelle leeren
db.Execute "DELETE FROM tblAuswertung"

Set rsQuelle = db.OpenRecordset("qryErgebnisse", dbOpenDynaset)
Set rsZiel = db.OpenRecordset("tblAuswertung", dbOpenDynaset)

Do Until rsQuelle.EOF

If lngPId <> rsQuelle!PId Then
i = 1
lngPId = rsQuelle!PId
lngPunkte = rsQuelle!Punkte
Else
i = i + 1
If i = 2 Then
lngPunkte = lngPunkte + rsQuelle!Punkte
rsZiel.AddNew
rsZiel!PId = lngPId
rsZiel!Punkte = lngPunkte
rsZiel.Update
End If
End If

rsQuelle.MoveNext

Loop

Der Code geht durch alle Datensätze der Abfrage und schreibt die PersonId und die Summe ihrer besten zwei Ergebnisse in die Zieltabelle. Setze den Cursor irgendwo in den Code und drücke die Taste F5 zum Ausführen.

-----
Servus
Karl
*********
https://www.donkarl.com/devcon Access-Online-Konferenz 18.+19.4.
Access Forever: https://www.accessforever.org
Access News: https://www.youtube.com/playlist?list=PLVCeBbJIMDvdJ8ghMbEakJ6_EQyvy...
Access-Entwickler-Konferenz: https://www.donkarl.com/?aek
Top of the page Bottom of the page