Hallo zusammen
Habe ein kniffliges Problem.
Wer kann mir einen Code schreiben für folgende Funktion:
Habe eine Tabelle mit allen Resultaten der Teilnehmer im Feld [Total] erfasst. Pro Teilnehmer sind zwischen 1 bis 6 Resultate vorhanden.
Nun die Funktion:
Die besten 3 Resultate (Datensätze) pro Teilnehmer müssten angezeigt werden können, oder in einem zusätzlichen Feld einen Wert eintragen, so dass diese eindeutig identifiziert werden können. Mittels einer Aktualisierungsabfrage werden die Werte danach in die Tabelle eingetragen.
Die 3 besten Resultate müssen in der Tabelle als ja/nein erkennbar sein.
,,Nur" einen Bericht der 3 besten Resultate generieren genügt in diesem Fall nicht.
Siehe auch unter Access --> Abfragen folgendes Thema:
Wert "ja" setzen für die jeweils 3 ersten Datensätze pro Teilnehmer
Vielen Dank für die Hilfe
Funktion? Wer wird denn gleich in Panik verfallen?
In einer Datenbank spricht man SQL!
Hier ist eine Top3-Abfrage:
SELECT A.Spieler, A.Spieltag, A.Ergebnis
FROM 08_tblErgebnisse AS A
WHERE A.Spieltag In (SELECT TOP 3
Spieltag
FROM (
SELECT
Spieler,
Spieltag
FROM
08_tblErgebnisse
ORDER BY
Spieler,
Spieltag DESC
)
AS Q
WHERE
Q.Spieler = A.Spieler
)
ORDER BY A.Spieler, A.Spieltag DESC;
MfGA
ebs
Hallo ebs17
Danke für Deinen Vorschlag. Habe versucht die SQL-Abfrage auf meine Tabelle umzuschreiben. Habe leider nicht das gewünschte Resultat erhalten (ist sicher mein Fehler).
Unterdessen habe ich nachstehenden Code erhalten, der funktioniert bis auf einen kleinen Schöhenheitsfehler bestens :
Private Sub Test_Top_3_Click()
On Error GoTo Fehler
Dim z As Integer
Dim iTeam As Integer
Dim rst As dao.Recordset
Dim dbe As dao.Database
Set dbe = CurrentDb
Set rst = _
dbe.OpenRecordset( _
"SELECT S.Link_team_number, S.Ranking_Points, S.Status_3_besten_Läufe " _
& "FROM Scores AS S " _
& "ORDER BY S.Link_team_number, S.Ranking_Points DESC, S.Total DESC, S.Drive DESC")
Do While Not rst.EOF
iTeam = rst.Fields("Link_team_number").Value
For z = 1 To 3
rst.Edit
rst.Fields("[Status_3_besten_Läufe]").Value = True
rst.Update
rst.MoveNext
Next z
If rst.EOF = True Then Exit Do
Do While rst.Fields("Link_team_number").Value = iTeam And Not rst.EOF
rst.MoveNext
Loop
Loop
Ende:
rst.Close
Set rst = Nothing
Set dbe = Nothing
Exit Sub
Fehler:
If Err.Number = 3021 Then GoTo Ende
End Sub
Nochmals vielen Dank
Gruss
Alain