Forum des Access-Tutorials

Gruppen im Bericht sortieren (Access)

Braol, Samstag, 04. Februar 2017, 13:11 (vor 115 Tagen)

Hallo.

Ich habe einen Bericht, der aus den Daten eines Tages die Top5 von drei Kategorien als Tabelle ausgibt, gruppiert nach den Kategorien.
So weit ganz gut, nur wird in der Gruppe dann vom fünften zum ersten sortiert, statt umgekehrt...

Ein Datensatz besteht aus dem Datum, der Bezeichnung und acht Feldern mit (Zahlen-)Werten unterschiedlicher Kategorien und wird während der Abfrage um ein Feld zur Gruppierung erweitert.

Der Bericht basiert auf einer gesplitteten Abfrage bzw auf der finalen Tabelle davon. Zuerst hole ich mir die Tagesdaten mit SELECT INTO in eine temporäre Tabelle und filtere mir dort jeweils die TOP 5 der Kategorien raus, dabei füge ich ein Feld mit der Kategorie für die Gruppierung an. Die erste Abfrage mit SELECT INTO, die folgenden mit INSERT INTO SELECT ausgeführt erhalte ich eine Tabelle mit 15 Datensätzen, so wie die Abfragfe sie gefüttert haben sortiert, eine Kategorie nach der anderen vom jeweils besten zum jeweils weniger guten.

Im Bericht nutze ich die Gruppenfunktion um für jede Kategorie eine eigene tabellarische Darstellung auszugeben.
Die Ausgabe ist innerhalb der Gruppe allerdings vom letzten zum ersten Datensatz schlicht verkehrt herum.
Die Sortierung müsste ja aber für jede Gruppe nach einer anderen Spalte erfolgen und da hänge ich gerade fest...

Prinzipiell wäre mir schon geholfen, wenn der Bericht die Daten aus der Tabelle 1:1 (fast zumindest) übernehmen würde, aber der dreht die Sortierung rum, ob ich 'bei Laden sortieren' in den Berichteigenschaften an habe oder nicht.

Schönen Gruß
Manuel

Gruppen im Bericht sortieren

PhilS ⌂, Samstag, 04. Februar 2017, 14:22 (vor 115 Tagen) @ Braol

Prinzipiell wäre mir schon geholfen, wenn der Bericht die Daten aus der Tabelle 1:1 (fast zumindest) übernehmen würde, aber der dreht die Sortierung rum, ob ich 'bei Laden sortieren' in den Berichteigenschaften an habe oder nicht.

Eine Tabelle ist ein unsortierter Datenspeicher!

Wenn du einen Bericht mit einer bestimmten Sortierung haben möchtest, dann gib diese Sortierung auch explizit im Bericht (oder in der zugrundeliegenden Abfrage) an. Andernfalls ist die Reihenfolge der Daten nicht festgelegt und die Datenbank-Engine wird dir die Daten in der Reihenfolge liefern, die am wenigsten Rechenaufwand bedeutet.

Gruppen im Bericht sortieren

Braol, Sonntag, 05. Februar 2017, 13:29 (vor 114 Tagen) @ PhilS

Die zugrundeliegende Abfrage habe ich aufgesplittet und das Ergebnis landet dann in einer Tabelle auf welcher der Bericht basiert. Dort liegen die Daten auch sortiert vor.
Im Bericht gruppiere ich die Daten nach den Kategorien.
Allgemein sortieren kann ich ja nicht, weil jede Gruppe nach einer anderen Spalte sortiert werden soll.
Eine bedingte Sortierung in die Richtung 'WENN(Kategorie="A";ORDER BY [Spalte D];WENN(Kategorie="B";...))' krieg ich im Bericht irgendwie nicht hin.

...ich hab auch schon versucht in den einzelnen TOP5-Abfragen noch ein zusätzliches Feld mit dem Rang einzufügen, nach dem ich dann sortieren könnte, hab mich aber auch dort zu blöd angestellt.

Mir kommt's inzwischen aber irgendwie so vor, als ob der Bericht das 'Recordset' rückwärts ausliest .. würde es was bringen die Tabelle einfach verkehrt herum sortiert zu füllen?

Gruppen im Bericht sortieren

PhilS ⌂, Montag, 06. Februar 2017, 10:07 (vor 113 Tagen) @ Braol

... in einer Tabelle auf welcher der Bericht basiert. Dort liegen die Daten auch sortiert vor.

Nochmal: Tabellen sind nicht sortiert.
Das ist zwar in letzter Konsequenz nicht ganz richtig, aber solange du dich nicht mit den tiefen Interna der DB-Engine auseinandersetzt, solltest du dies als Grundsatz verinnerlichen.

...ich hab auch schon versucht in den einzelnen TOP5-Abfragen noch ein zusätzliches Feld mit dem Rang einzufügen, nach dem ich dann sortieren könnte, hab mich aber auch dort zu blöd angestellt.

Das ist der richtige Ansatz.
Wenn die einzelnen TOP5 Abfragen korrekt sortiert sind, könnte es schon reichen, wenn du in die Berichtstabelle ein zusätzliches Auto-Wert-Feld einbaust, das einfach hochzählt.

Alternativ gibt es in der Access-FAQ einen Artikel zu Laufende Nummer in Abfragen, der erklärt, wie du den Rang der Datensätze ermitteln und dann in die Berichtstabelle schreiben kannst.

Gruppen im Bericht sortieren

Braol, Dienstag, 07. Februar 2017, 18:58 (vor 112 Tagen) @ PhilS

Danke, die laufende Nummer hat das Problem gelöst.

RSS-Feed dieser Diskussion
RSS Einträge  RSS Threads   Kontakt
powered by my little forum