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.

Auf diese Weise erhalten wir schließlich das Ergebnis aus Bild 5. Alle Platzierungen werden korrekt angezeigt.

Die Platzierungen im Abfrageergebnis

Bild 5: Die Platzierungen im Abfrageergebnis

Platzierungen im Bericht anzeigen

Nun übertragen wir das Ergebnis in einen Bericht. Dieser soll die Abfrage qryErgebnisse als Datensatzquelle verwenden. Aus der Feldliste fügen wir dem Bericht alle Felder der Abfrage hinzu und ordnen diese so an, dass sich die Bezeichnungsfelder im Seitenkopf und die gebundenen Felder im Detailbereich befinden. Dies sieht wie in Bild 6 aus.

Der Entwurf des Berichts

Bild 6: Der Entwurf des Berichts

Wechseln wir nun in die Seitenansicht, finden wir das gleiche Ergebnis vor wie in der Abfrage (siehe Bild 7).

Die gleiche Ansicht wie in der Abfrage

Bild 7: Die gleiche Ansicht wie in der Abfrage

Wir wollen dies noch wie eingangs erwähnt so anpassen, dass eine Platzierung nur einmal für den ersten Eintrag mit dieser Platzierung angezeigt wird und diese für die folgenden Einträge mit gleicher Platzierung ausgeblendet wird.

Die Eigenschaft Duplikate ausblenden nutzen

Dafür benötigen wir praktischerweise gar keine VBA-gesteuerte Anpassung eines Wertes wie den der Eigenschaft Visible für das Textfeld, sondern wir können eine der eingebauten Eigenschaften der Steuerelemente in einem Bericht nutzen.

Dazu stellen wir wie in Bild 8 die Eigenschaft Duplikate ausblenden auf den Wert Ja ein.

Einstellen der Eigenschaft Duplikate ausblenden für das Feld Platz

Bild 8: Einstellen der Eigenschaft Duplikate ausblenden für das Feld Platz

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar