9. Mai 2010 

Die Aufgabe lautet eine Tabelle auszugeben, in der für jeden Studierenden des Semesters die Noten der belegten Kurse eingetragen sind. Nicht alle Studenten belegen die gleichen Kurse, sind nicht alle im gleichen Semester. Die gewünschte Tabelle ist ein Kreuztabelle, mit den Kursen in den Spalten und je Student einer Zeile. Nur die Zellen einer Zeile sind belegt, in denen der Student eine Note erzielt hat. Die meisten Zellen bleiben leer. Die Anzahl der Spalten variert von Semester zu Semester und wurden mehrere Semester ausgewählt, vervielfältigen sich die Optionen. Natürlich soll es für die nächsten Jahre funktionieren ohne Neuprogrammierung.

Der normale Formular-Editor scheidet aus, exportieren an eine Tabellenkalkulation dito.

QuickReport

Bestes Werkzeug für diese Aufgabe ist der Schnellbericht. Mit dem QuickReport kann ich beliebig viele Datensätze = Zeilen und beliebig viele Spalten für jede Zeile drucken, als Text exportieren, in 4D View übergeben, …

Hier das Bild einer solche Kreuz-Tabelle:

semesterPivot

Die ersten 5 Spalten – ID, Nachname, Vorname, " " und Sem. – zeigen Feldinhalte, alle weiteren Spalten enthalten Variablen. Der Inhalt der Variablen wird unmittelbar vor dem Druck der Zeile aus den Feldinhalten verknüpfter Tabellen ermittelt.

Für diese Berechnungen habe ich ein allererste Spalte eingerichtet. Diese Spalte hat die Aufgabe die Variablen-Inhalte über diese Methode
zeugnis_Hndle ("NotenSpiegel_QRVars"; [ZEUGNIS_KIND]ZK_Schüler_L; [ZEUGNIS_KIND]ZK_LongInt; $verfahren_L)
bereitzustellen.

Die auszuführende Methode wird als Text übergeben, wie von EXECUTE gewohnt:
$actionText:="zeugnis_Hndle (\"NotenSpiegel_QRVars\"; [ZEUGNIS_KIND]ZK_Schüler_L; "+"[ZEUGNIS_KIND]ZK_LongInt; $verfahren_L)"
$count:=$count+1
QR INSERT COLUMN($qr_Area;$count;$actionText)
Ist die Spalte eingerichtet wird sie ausgeblendet ($ausblenden_L:=1):
QR SET INFO COLUMN($qr_Area;$count;"";$actionText;$ausblenden_L;-140; $wiederholt_L; Char(0))

qrWizzard

Wizzard of OZ?

Sozusagen :-)

Der Schnellbericht ist eher ein Werkzeug für den Entwickler, als für den Nutzer unserer Lösung. Dann macht es auch nichts, daß die Oberfläche umständlich und mir zu buntig ist.

Ich liebe es, den Schnellbericht zu starten und mir vom Schnellbericht-Wizzard helfen zu lassen.

Schritt 1..7 und dann 8 Abschliessen mit der Aktion Erzeuge 4D Code. Klasse!

Nun den erzeugten 4D Code in meine Methode einsetzen und optimieren:

  • rauswerfen was nicht paßt,
  • in einer Schleife zusätzliche Spalten anlegen,
  • Berechnungsspalte an den Anfang und ausblenden
  • danach das Lametta für Kopf und Fuß, Spaltentitel, Umrahmung, Hintergrundfarbe, …
Fertig!

Und wenn es sein soll:

  • alles in eine Offscreen-Area
  • PDF erzeugen oder
  • HTML oder einfach nur
  • Text exportieren.

4D Themen: Berichte in Arbeit