Gleiche Werte in Reihenfolge berücksichtigen

Sowohl im Sport als auch in anderen Bereichen des Lebens gibt es die Anzeige von Daten nach bestimmten Werten – Tabellenstände, Rennergebnisse, Wahlergebnisse und so weiter. Dabei kann es vorkommen, dass zwei oder mehr Einträge in dem Feld, nach dem sortiert werden soll, genau den gleichen Wert enthalten. Gibt es eine Angabe der Platzierung, soll diese dann möglichst für all diese Einträge gleich lauten. In manchen Situationen ist es sogar sinnvoll, die Platzierung dann nur für den ersten Eintrag anzuzeigen und diese für die übrigen Einträge leer zu lassen. Wie das gelingt, zeigen wir im vorliegenden Beitrag.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 2201_GleicheWerteInReihenfolge.accdb.

Beispieltabelle

Wir wählen ein einfaches Beispiel wie in der Tabelle aus Bild 1. Hier sehen wir ein Primärschlüsselfeld namens ErgebnisID, ein Feld mit dem Namen des Teilnehmers und eines mit dem Ergebnis, nach dem wir sortieren wollen.

Beispieltabelle für die Platzierungen

Bild 1: Beispieltabelle für die Platzierungen

Sortieren der Datensätze

Das Sortieren der Datensätze nach dem Wert im Feld Ergebnis in absteigender Reihenfolge könnten wir direkt in der Tabelle erledigen, aber wir wollen dies in einer neuen Abfrage durchführen. So können wir später ein Feld zur Ausgabe der Platzierung hinzufügen, was in einer Tabelle nicht möglich ist.

Dieser Abfrage namens qryErgebnisse fügen wir in der Entwurfsansicht die Tabelle tblErgebnisse hinzu. Wir ziehen die beiden Felder Teilnehmer und Ergebnis in das Entwurfsraster des Abfrageentwurfs.

Dabei stellen wir für das Feld Ergebnis die Sortierung auf Absteigend ein (siehe Bild 3).

Abfrage mit den Platzierungen

Bild 2: Abfrage mit den Platzierungen

Das Ergebnis nach dem Wechsel in die Datenblattansicht liefert schon einmal die richtige Reihenfolge (siehe Bild 2). Nun müssen wir nur noch ein Feld mit der Angabe der Platzierung hinzufügen.

Abfrage mit korrekter Reihenfolge, aber ohne Angabe der Platzierung

Bild 3: Abfrage mit korrekter Reihenfolge, aber ohne Angabe der Platzierung

Platzierung zur Abfrage hinzufügen

Nun stellen wir der Abfrage ein weiteres Feld voran, dass einfach nur die Platzierung anzeigen soll. Wie aber gestalten wir dieses Wir nutzen die Funktion DCount, um für das aktuelle Element die Anzahl der Datensätze zu ermitteln, deren Wert im Feld Ergebnis größer ist als das für den aktuellen Datensatz. Zu diesem Wert addieren wir noch den Wert 1 hinzu. Daraus resultiert der folgende Ausdruck:

Platz: DomAnzahl("Ergebnis";"tblErgebnisse";"Ergebnis>" & [Ergebnis])+1

Diesen arbeiten wir wie in Bild 4 in den Abfrageentwurf ein.

Feld zum Ermitteln der Platzierung

Bild 4: Feld zum Ermitteln der Platzierung

Wenn wir unsere Daten ansehen, finden wie beispielsweise für den ersten Datensatz keinen, dessen Wert im Feld Ergebnis größer ist als der aktuelle Wert, also 10. Beim zweiten Datensatz mit dem Ergebnis 9 gibt es einen Datensatz, nämlich den mit dem Ergebnis 10, der größer ist. Also wird dort die Anzahl 1 plus 1 in das Feld Platz eingetragen. Das Gleiche gilt für den dritten Datensatz, der zwar den gleichen Wert wie der zweite Datensatz hat, aber auch für diesen gibt es nur einen Datensatz, dessen Wert im Feld Ergebnis größer ist – also folgt auch hier der Wert 2 für das Feld Platz.

Access [basics]

Unser exklusives Angebot für Dich!

Access im Unternehmen
7,90 € im Monat*

(Das Abo ist jederzeit monatlich kündbar)

Hier geht’s weiter →

Die ersten 4 Wochen kostenlos testen – voller Zugriff auf alle Artikel, vollständigen Code und Beispieldatenbanken. Kein Risiko: Wenn es nicht passt, kündigst Du einfach innerhalb der ersten vier Wochen.

PayPal VISA Mastercard SEPA
Kostenlos & unverbindlich

Oder hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?

Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?

In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.

Jetzt kostenloses Access-Audit anfordern →