Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Funktion erstellen für die Markierung der 3 ersten Datensätze

Begonnen von KuehAla1, November 26, 2011, 23:37:57

⏪ vorheriges - nächstes ⏩

KuehAla1

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

ebs17

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

KuehAla1


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