Seite 1 von 1
SetzeSortierung
Verfasst: Sonntag 6. Dezember 2020, 15:32
von D.Jakel
Guten Tag,
mir ist nach wie vor nicht klar, wie ich diese Funktion in Subreports verwenden kann. Im WIKI unter
https://wiki.svws.nrw.de/mediawiki/inde ... Sortierung
steht beim Bespiel:
Procedure ReportBeforePrint;
begin
OriginalSortierung:=SortierungVon(Report.Datapipeline);
SetzeSortierung(Report.Datapipeline,'Klasse,Geburtsdatum');
end
Report.Datapipeline vestehe ich als "Blaupause" für die übergeordnete Hauptquelle, hier also "Schüler". Kann man dann stattdessen einfach nur "Schueler" schreiben? Was müsste denn dort stehen, wenn ich z.B. In einem Subreport, also z.B. in "Kurse" die "Schüler" nach Datenfeldern, z.B. dem Geburtsdatum sortieren möchte? Würde ich dann trotzdem "Schüler" verwenden? Werden die abhängigen Datenfelder anhand der Überschrift identifiziert? Ich verstehe wohl noch zu wenig von den Strukturen in der Datenbank

.
Danke für Hinweise.
Re: SetzeSortierung
Verfasst: Montag 7. Dezember 2020, 07:19
von Raffenberg
Wenn man den Reportexplorer das erste Mal aufruft, bildet Schild die diversen Tabellen, welchen den Reports zur Verfügung stehen. Diese Tabellen haben eine Standardsortierung. So auch die Tabelle Kurse und KurseSchueler. Diese können sie mit der Funktion SetzeSortierung umsortieren und nach dem Druck wieder in die richtige Sortierreihenfolge bringen. Würden Sie den letzten Schritt nicht vornehmen, blieb die Tabelle umsortiert, bis Schild neu gestartet, oder im Reportexplorer die Schaltfläche "alle Daten aktualisieren" gedrückt würde.
Der Befehl OriginalSortierung:=SortierungVon(Report.Datapipeline); speichert die Originalsortierung der Hauptdatenpipeline (in Ihrem Fall Schueler) und könnte in Ihrem Fall auch OriginalSortierung:=SortierungVon(Schueler); lauten.
Code: Alles auswählen
--------------------------------------------------------------------------------
Hauptbericht: Kurse
--------------------------------------------------------------------------------
procedure Variables;
var
OriginalSortierung : string;
begin
end;
--------------------------------------------------------------------------------
procedure GlobalOnCreate;
begin
OriginalSortierung:=SortierungVon(KursSchueler);
SetzeSortierung(KursSchueler,'Geburtsdatum');
end;
--------------------------------------------------------------------------------
procedure GlobalOnDestroy;
begin
SetzeSortierung(KursSchueler,OriginalSortierung);
end;
--------------------------------------------------------------------------------
SubReport1: KursSchueler
--------------------------------------------------------------------------------
Re: SetzeSortierung
Verfasst: Montag 7. Dezember 2020, 17:49
von D.Jakel
Guten Tag, Herr Raffenberg, vielen Dank für das Beispiel. Wenn ich Sie also richtig verstehe, kann man die Sortierung nur einmal im Report festlegen. Oder kann man die Datenquelle auch zwischendurch neu sortieren lassen? Ich kann den Sortierungsbefehl auch in den Subreport1 in OnPrint legen, das funktioniert tadellos. Also wird der Befehl nicht nur beim Start ausgeführt.
Ich stelle mir aber einen Report vor, der zuerst in Subreport1 die alphabetische Liste der Schüler ausgibt und anschließend in einem Subreport2 nochmal die Liste der Schüler, die dann nach Geburtsdatum sortiert sind.
Ähnliche Situationen habe ich, wenn ich die Fachwahl einmal nach Lehrer, einmal nach Kursbezeichnung sortiert ausgeben will.
Ich habe mal versucht, das zu realisieren (s.Anhang) , aber es kommt immer der Fehler, dass ein Parameter fehlt, dass die Pipline nicht geöffnet werden kann oder ähnliches.
Momentan löse ich das über Exporte in Excel, aber wenn es ohne wesentlichen Aufwand direkt ginge, wäre ich natürlich nicht abgeneigt, bei den csv-Dateien ging das ja auch.
Ich will ja noch was lernen.

Re: SetzeSortierung
Verfasst: Dienstag 8. Dezember 2020, 08:08
von Raffenberg
Prinzipiell kann man zur Laufzeit umsortieren (s. Beispiel anbei).
In solchen Fällen kann man aber auch über den Reiter Daten eigene Datenquellen zusammenstellen, die schon entsprechend sortiert sind.
Re: SetzeSortierung
Verfasst: Dienstag 8. Dezember 2020, 14:48
von D.Jakel
Vielen Dank, mein Fehler lag darin, dass ich nach dem Feld 'NameVorname' sortieren wollte und es sich dabei wohl um ein berechnetes Feld handelt. Dann funktioniert SetzeSortierung nicht. Mit 'Name' klappt es wie geplant!