Replikatoren: Zeilen, Spalten, Blätter

Mit Jet Reports kann man dynamische Listen erstellen. Dynamisch bedeutet hier, dass die Anzahl der Elemente erst ermittelt wird, wenn die Liste ausgeführt wird. Eine Liste der Sachbuchungen pro Monat enthält in der Regel für jeden Monat eine andere Anzahl an Zeilen (Dynamischer Aufbau). Mit den Jet Reports Replikatoren kann man dynamische Listen erstellen.

Die Replikatoren rufen Datenmengen aus der Datenbank ab. Das Ergebnis kann daher beliebig viele Datensätze enthalten. Eine Replikator-Funktion steht aber in genau einer Excel-Zelle. In dieser Zelle kann auch nur genau ein Wert angezeigt werden. Wenn mehr als ein Datensatz gefunden wird, dann fügen die Replikatoren der Excel-Mappe neue Elemente hinzu (neue Excel-Zeilen, neue Excel-Spalten oder neue Tabellenblätter).

Zeilen

Die neuen Zeilen werden zwischen der Zeile des Befehls und der nachfolgenden Zeile eingefügt. In die neue Zeile wird die gesamte ursprüngliche Zeile kopiert. Die Spalte in der der Zeilenbefehl steht wird mit dem Ergebniswert der betreffenden Zeile überschrieben. Als Ergebnis haben wir eine neue Zeile mit dem zugehörigen Ergebiswert, die ansonsten exakt die selben Excel-Formeln hat wie die Ursprungszeile.

=NL(“Zeilen”;”Sachposten”;”Sachkontonr.”;”Buchungsdatum”;”1.12.2010..31.12.2010″)

Mit meiner Cronus Datenbank von Navision listet dieser Befehl insgesamt 72 unterschiedliche Sachkontonummern untereinander auf. Wenn man in den Zellen die Formeln betrachtet, dann steht in der ersten Zelle der ursprüngliche Befehl. In den 71 folgenden Zeilen steht lediglich das Ergebnis (als Formel in Anführungszeichen, damit Excel keine impliziten Formatierungen darauf ausführt). Wenn man die Steuerspalte A beim ausgeführten Bericht einblendet, dann findet man in allen neu eingefügten Zeilen den Begriff “Auto”. Daran erkennt Jet Reports welche Zeile gelöscht werden muss, wenn man wieder in den Design-Modus zurückschaltet. Tragen Sie in diese Spalte nie etwas anderes ein als die verfügbaren Jet Reports Steuerparameter. Jet Reports könnte anderfalls Ihr Berichtsdesign ruinieren, wenn Sie in den Designmodus zurückschalten.

Spalten

Der Spaltenbefehl funktioniert analog zu dem Zeilen-Befehl. Die neuen Spalten werden zwischen der Spalte des Befehls und der nachfolgenden Spalte eingefügt. In die neue Spalte wird die gesamte ursprüngliche Spalte kopiert. Die Zeile in der der Spaltenbefehl steht wird mit dem Ergebniswert der betreffenden Spalte überschrieben. Als Ergebnis haben wir eine neue Spalte mit dem zugehörigen Ergebiswert, die ansonsten exakt die selben Excel-Formeln hat wie die Ursprungsspalte.

=NL(“Spalten”;”Sachposten”;”Buchungsdatum”;”Buchungsdatum”;”1.12.2010..31.12.2010″)

Mit meiner Cronus Datenbank von Navision listet dieser Befehl vier Tage nebeneinander auf, sofern man die Zelle als Datum formatiert hat. Wenn man in den Zellen die Formeln betrachtet, dann steht in der ersten Zelle der ursprüngliche Befehl. In den 3 folgenden Spalten steht wieder lediglich das Ergebnis. Wenn man die Steuerzeile 1 beim ausgeführten Bericht einblendet, dann findet man in allen neu eingefügten Spalten erneut den Begriff “Auto”. Daran erkennt Jet Reports welche Spalte gelöscht werden muss, wenn man wieder in den Design-Modus zurückschaltet. Auch hier handelt Weise, wer nur erlaubtes in diese Zeile einträgt.

Blätter

Der Blätterbefehl hebt sich von den beiden Kollegen etwas ab. Es werden keine Excel-Zellen eingefügt werden, sondern ganze Tabellenblätter. Das Prinzip ist aber wieder das Gleiche. Die neuen Blätter werden hinter das Blatt mit dem Befehl eingefügt. In das neue Blatt wird das gesamte ursprügliche Blatt kopiert. Die Zelle in der der Blätter-Befehl steht wird mit dem Ergebniswert des betreffenden Blattes überschrieben. Als Ergebnis haben wir ein neues Blatt mit dem zugehörigen Ergebiswert, das ansonsten exakt die selben Excel-Formeln hat wie das Ursprungsblatt.

=NL(“Blätter”;”Sachposten”;”Kostenträger Code”;”Buchungsdatum”;”1.12.2010..31.12.2010″)

Mit meiner Cronus Datenbank von Navision erstellt dieser Befehl vier Blätter. Das Erste hat den Namen “(2)”, das Zweite den Namen “MERCEDES”, usw. Die Namen der Blätter sind die Ergebniswerte aus den Datensätzen. Jet Reports hat das erste Blatt “(2)” genannt, da ein Excel-Blatt einen Namen haben muss und der erste Datensatz einen Leeren Text geliefert hat. Wenn wir uns die Formeln anschauen, dann steht auf dem ersten Blatt wieder der Befehl und auf den folgenden Blättern ist wieder nur der Wert eingefügt worden. Bei eingefügten Blättern findet man in der Zelle A1 den Text “+AutoBlatt”. Daran erkennt Jet Reports, dass das gesamte Blatt gelöscht werden muss, wenn man wieder in den Design-Modus zurückschaltet. Ich habe schon erwähnt, dass man in der Zeile 1 und der Spalte A nur Jet Reports Parameter eintragen sollte, oder?

Replikatoren verwenden

Die verschiedenen Replikatoren können mehrfach in einem Bericht verwendet werden. Sie können auch miteinader Kombiniert werden. Das folgende Beispiel kombiert alle drei “Achsen” in einer Auswertung.

Jet Report: Zeilen, Spalten und Blätter - Designmodus

Designmodus

Jet Report: Zeilen, Spalten und Blätter - Ausgeführter Bericht

Berichtsmodus

Das Ergebis ist ist ein Bericht, der für einen gewählten Zeitraum:

  • Ein Blatt für jeden gebuchten Kostenträger anlegt
  • Alle gebuchten Sachkonten in den Zeilen auflistet
  • Jedes verwendete Buchungsdatum in den Spalten auflistet
  • Und die Summe des Buchungsbetrags für jede Kombination aus Sachkonto, Buchungsdatum und Kostenträger berechnet.

Das ganze mit lediglich 4 simplen Excelbefehlen. Gut, oder?

Untersuchen Sie den Bericht gern selbst:

JetReports-Zeilen-Spalten-Blaetter.xls

Andreas Koblischke

4 thoughts on “Replikatoren: Zeilen, Spalten, Blätter

  1. Claudia Müller

    Hallo,
    wenn ich Blätter ertselle, z.B. nach Kostenarten, dann heißt jedes Blatt so wie die Kostenart (also die Nummer). Gibt es eine Möglichkeit, dass die Blätter wie die Nummer sondern wie die Bezeichnung der Kostenart heißen ?

    Viele Grüße
    Claudia Müller

  2. Gernot Baumgartner

    Vielen Dank für diese sehr gute Zusammenfassung der Replikatoren! Ich hätte eine Frage dazu: Ist es möglich 2 Zeilen-Abfragen miteinander zu kombinieren? Also wenn beispielsweise eine Datenbanktabelle 1 mit Inhalt Namen A-K und eine Datenbanktabelle 2 mit Inhalt Namen L-Z so abgefragt werden können, dass im Endeffekt eine Liste mit Namen A-Z angezeigt wird? Wenn es nicht mit der klassischen Zeilen-Abfrage funktioniert, gibt es eine andere Möglichkeit den gleichen Effekt zu erzielen?

Comments are closed.