SetzeSortierung

Alles, was den Reportdesigner und Drucken betrifft. Fehlermeldungen, Fragen, Reports

Moderatoren: A. Schüller, Raffenberg, Pfotenhauer

Antworten
D.Jakel
Beiträge: 1115
Registriert: Sonntag 2. Dezember 2018, 18:13
Schulform: Gymnasium

SetzeSortierung

Beitrag 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.
mfG, D.Jakel
Benutzeravatar
Raffenberg
Beiträge: 3081
Registriert: Dienstag 25. September 2018, 15:22
Schulform: Gymnasium
Kontaktdaten:

Re: SetzeSortierung

Beitrag 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
--------------------------------------------------------------------------------
Kurse Geburtsdatum.rtm
(10.65 KiB) 82-mal heruntergeladen
Mit freundlichen Grüßen
Jens Raffenberg
D.Jakel
Beiträge: 1115
Registriert: Sonntag 2. Dezember 2018, 18:13
Schulform: Gymnasium

Re: SetzeSortierung

Beitrag 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. :-)
Dateianhänge
Kurse_Sortierung_erst_nach_Geburtsdatum_dann_nach_Name.rtm
(15.91 KiB) 71-mal heruntergeladen
mfG, D.Jakel
Benutzeravatar
Raffenberg
Beiträge: 3081
Registriert: Dienstag 25. September 2018, 15:22
Schulform: Gymnasium
Kontaktdaten:

Re: SetzeSortierung

Beitrag 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.
Dateianhänge
Kurse_Sortierung_erst_nach_Geburtsdatum_dann_nach_Name.rtm
(15.87 KiB) 84-mal heruntergeladen
Mit freundlichen Grüßen
Jens Raffenberg
D.Jakel
Beiträge: 1115
Registriert: Sonntag 2. Dezember 2018, 18:13
Schulform: Gymnasium

Re: SetzeSortierung

Beitrag 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!
mfG, D.Jakel
Antworten

Zurück zu „Drucken / Reportdesigner“