Legacy Word-Berichte

Arbeiten mit Legacy Word-Berichten

Produktlinie

Standard

|

Expert

Betriebsart

CLOUD ABO

|

ON-PREMISES

Module

Leistung & CRM

Budget & Teilprojekt

Fremdkosten

Ressourcenplanung

Business Intelligence

Erstellt: 26.06.2003
Aktualisiert: 25.05.2022 | Word-Berichte heissen ab Vertec 6.6 Legacy Word-Berichte

Hinweis: Legacy Word-Berichte werden nicht mehr weiterentwickelt, da klar empfohlen wird, mit Office-Berichten zu arbeiten. Diese sind cloudfähig, perfomant und können PDF-, Word- und Excel-Dateien generieren.

Mit dem Legacy Word-Bericht-Mechanismus von Vertec können benutzerdefinierte Berichte in MS Word entworfen und direkt aus Vertec ausgeführt werden. Die Möglichkeiten gehen dabei über die in Word eingebauten Serienbrief-Funktionalitäten heraus.

Ein Legacy Word-Bericht basiert immer auf einer Dokumentvorlage in Word. Diese Berichtsvorlage enthält neben normalem Text spezielle Elemente, die beim Ausführen ausgewertet werden. Diese werden hier nachfolgend beschrieben:

Bänder

Bänder sind die Grundlagen von Legacy Word-Berichten. Alles, was gedruckt wird, befindet sich in einem Band.

Ein Band wird in der Berichtsvorlage durch eine Textmarke dargestellt. Der Name der Textmarke ist der Band-Name.

Erstellen Sie dort, wo Sie ein Band erstellen möchten, einen Beispiel-Text im gewünschten Layout (z.B. eine Tabelle, Zeilen mit Tab etc.). Markieren Sie dann diesen Text und klicken Sie auf "Einfügen - Textmarke...". Es öffnet sich das Fenster, in dem Sie den Namen der Textmarke angeben können. Es empfiehlt sich, dabei einen Namen zu wählen, bei dem erkennbar ist, um was es sich handelt (also nicht Band1, Band2 etc.). Das erleichtert später das Anpassen der Bänder und der Ausdrücke in den Expressions.

Die Bänder können frei verschachtelt werden. Jede Berichtsvorlage muss aber ein Standard-Band enthalten. Das ist ein Band, das alles andere einschliesst. Sie können also, nachdem Sie die Vorlage erstellt haben, alles markieren und mit einer weiteren Textmarke umschliessen. Der Namen dieser Textmarke spielt keine Rolle.

Ein Band kann bei der Ausführung eines Berichts ein- oder mehrmals gedruckt werden. Wird also ein Band auf einer Liste ausgeführt, wird das Band so viel mal gedruckt, wie sich Elemente in der Liste befinden.

Textmarken, die nicht gelöscht werden

Textmarken, deren Name mit trg oder src beginnt, werden vom Vertec Bericht-Mechanismus nicht gelöscht. Wenn Sie also in Ihrem Dokument Textmarken benötigen, die auch nach dem Ausführen bestehen bleiben, nennen sie diese trg.. oder src...

Band-Definitionen

Je nachdem, wie die Textmarke (Bookmark) eines Bands definiert ist, wird der Umfang des Bands in Office- und Vertec-generierten Berichten geringfügig anders interpretiert. Die Unterschiede haben üblicherweise mit der Behandlung von leeren Abschnitten (Paragraphs) zu tun. Mehr dazu finden Sie im Artikel Unterschiede zwischen Office- und Vertec-generierten Legacy Word-Berichten .

Felder

Ein Feld ist ein durch einen Kommentar markierter Text innerhalb eines Bandes, der beim Ausführen des Berichts durch Daten aus Vertec ersetzt wird.

Um ein solches Feld zu erstellen, markieren Sie einen beliebigen Text, an dessen Stelle später die Daten aus Vertec eingefügt werden sollen, und klicken Sie auf "Überprüfen - Neuer Kommentar". Der dazugehörige Kommentar muss eine an der entsprechenden Stelle gültige OCL-Expression enthalten.

Um ein Feld zu bearbeiten, klicken Sie mit der rechten Maustaste darauf und wählen Sie Kommentar bearbeiten.

Beispiel von Feldern mit zugehörigem Kommentar in Word:

Band Expressions

Band Expressions sind ebenfalls durch Kommentare markierte Textstellen innerhalb eines Bandes. Sie unterscheiden sich von Feldern dadurch, dass der markierte Text immer mit dem Namen des Bandes beginnt, auf das sich die Expression bezieht. Es sind folgende Band Expressions möglich (bndXXX bedeutet dabei der Name des Bandes):

  • bndXXXExp: Band Hauptexpression. Falls angegeben, wird der Wert des Bandes aufgrund dieser Expression berechnet. Die Expression bezieht sich auf das Root-Objekt des Berichts oder auf den Wert des nächst äusseren Bandes. Falls das Ergebnis dieser Expression einer Liste entspricht, wird das Band für jeden Eintrag der Liste dupliziert.
  • bndXXXCond: Band Conditional Expression. Falls angegeben, wird diese Expression bei jedem Auftreten des Bandes ausgewertet (d.h. falls das Band innerhalb einer Liste dupliziert wird, für jedes Objekt). Das Ergebnis der Expression muss ein boolescher Wert sein (Wahr/Falsch). In Abhängigkeit dieses Ergebnisses wird das Band gedruckt oder nicht.

Regionsspezifische Zahlenformatierung

Mit sogenannten Locale-Bands kann ab Vertec 6.1 im Legacy Word-Bericht angegeben werden, nach welche Regionaleinstellungen (Locale) Zahlen- und Datumswerte innerhalb des Bands formatiert werden sollen.

Zum Setzen der Regionaleinstellungen kann folgende Band-Expression verwendet werden:

bndXXXLocale: Ein Kommentar auf <band-name>Locale gibt die Regionaleinstellung an. Dies kann wie folgt geschehen:

  • Angabe eines Ländercodes als Locale Expression: de-CH
  • Angabe einer OCL-Expression (ab Vertec 6.2), welche als Ergebnis einen Ländercode als String zurückgibt: 'de-CH'

Beispiel

Ein Kommentar auf rchMasterLocale mit Inhalt de-DE setzt die Regionaleinstellung für das gesamte Master-Band auf Deutsch, Deutschland.

Innerhalb dieses Bands werden alle Zahlen und Datumswerte in der entsprechenden Regionaldarstellung dargestellt.

Eine Tabelle mit den Ländercodes finden Sie unter: https://docs.microsoft.com/en-us/previous-versions/commerce-server/ee825488(v=cs.20).

Zahlenformatierung in Vertec Versionen vor 6.2

In Versionen vor Vertec 6.2 werden nur die Werte, welche nach der VBA Format Funktion formatiert sind (Texte mit einem \ beginnend) in den im Locale-Band angegebenen Regionaleinstellungen formatiert:

Bilder in Legacy Word-Berichts einfügen

In Legacy Word-Berichten können Bilder eingefügt werden. Diese können entweder aus Vertec (z.B. Belegbilder auf Spesen) oder aus dem Filesystem kommen (nur Office-generiert).

Dafür gibt es spezielle Felder, welche beim Ausführen des Berichts nicht durch Text, sondern durch andere Daten ersetzt werden. Um ein solches Feld zu erstellen muss der durch einen Kommentar markierte Text mit einer bestimmten Zeichenfolge beginnen. Diese speziellen Felder werden im Folgenden erklärt.

ImageData

Solche Felder werden verwendet, um in Vertec gespeicherte Bilder in Legacy Word-Berichten einzufügen.

Der durch einen Kommentar markierte Text muss mit der Zeichenkette ImageData beginnen. Die im Kommentar enthaltene OCL-Expression muss den Inhalt eines Bildfeldes in Vertec liefern.

ImagePath (nur Vertec-generierte Legacy Word-Berichte)

Solche Felder werden verwendet, um auf dem Dateisystem abgelegte Bilder in Legacy Word-Berichten einzufügen. Der durch einen Kommentar markierte Text muss mit der Zeichenkette ImagePath beginnen.

Die OCL-Expression muss einen absoluten Pfad zu einer im Dateisystem abgelegten Bilddatei liefern. In Word eingefügt wird dann direkt die Bilddatei, die sich an diesem Ort befindet.

Als OCL-Expression kann der Pfad auch direkt angegeben werden, in einfachen Anführungszeichen:

Ist das Resultat der OCL-Expression ein Leerstring, wird einfach der Kommentar im Word gelöscht und nichts angezeigt. Falls das Bild am angegebenen Ort nicht existiert, wird eine Fehlermeldung anstelle des Bildes in den Bericht eingefügt.

Skalierung von eingefügten Bildern

Um die dargestellte Grösse der eingefügten Bilder in Word zu steuern, empfiehlt es sich, diese in einer Tabelle anzuzeigen wie in den gezeigten Beispielen. Die Skalierung in der Tabelle verhält sich wie folgt:

Die eingefügten Bilder werden nicht hochskaliert, weder horizontal noch vertikal. Die Bilder werden aber bei Bedarf runterskaliert:

  • Ist ein Bild breiter als die Tabellenzelle, wird es runterskaliert, wenn die automatische Grössenanpassung der Tabelle ausgeschaltet ist.
  • Wenn ein Bild höher als die Tabellenzeile ist, wird die Zeile vergrössert, ausser für die Zeilenhöhe wurde in den Tabelleneigenschaften ein genauer Wert gesetzt. Ist für die Zeilenhöhe ein genauer Wert gesetzt und die automatische Grössenanpassung ausgeschaltet, so wird das Bild runterskaliert, damit es in die Zelle passt.

Hier nachfolgend eine Übersicht über die Skalierungen:

Zeilenhöhe fixGrössenanpas­­sung zulassenAuswirkungen auf das Bild
NeinNeinSkaliert: ja. Verändert die Zeilenhöhe der Tabelle. Die Zeilenbreite bleibt.
NeinJaSkaliert: nein. Verändert Zeilenhöhe und Zeilenbreite (das Bild wird skaliert auf maximalbreite der Tabelle - Seitenbreite)
JaNeinSkaliert: ja. Verändert weder Zeilenhöhe noch Zeilenbreite.
JaJaSkaliert: nein. Verändert die Zeilenbreite. Die Zeilenhöhe bleibt, das Bild überlappt.

Textbausteine (HTML) in Legacy Word-Berichten einfügen

Auf die gleiche Art wie die Bilder (siehe oben) kann ab Version 6.0 auch HTML-formatierter Text z.B. aus Textbausteinen in Legacy Word-Berichten eingefügt werden.

HtmlTextBlock

Dieses Feld wird verwendet, um HTML formatierten Text in Legacy Word-Berichten einzufügen. Dieser kann zum Beispiel aus einem Vertec Textbaustein kommen, aber es kann auch ein beliebiges Textfeld angegeben werden, welches formatierten Text enthält. In Word können Sie diesen Text wie folgt einfügen:

Der durch einen Kommentar markierte Text muss mit der Zeichenkette HtmlTextBlock beginnen. Die im Kommentar enthaltene OCL-Expression muss als Resultat einen HTML-Formatierten Text ergeben. Hier im Beispiel das Feld text eines Textbausteines:

Der Wert, der aus der Auswertung des OCL (Kommentar) resultiert, wird als formatierter HTML-Text interpretiert und das Ergebnis in den Bericht geschrieben.

Es werden die im Artikel Textbausteine beschriebenen Elemente unterstützt, auch innerhalb des HTML berechnete OCL-Expressions.

OCL Variablen für Legacy Word-Berichte

Vor dem Ausführen eines Legacy Word-Berichts werden folgende OCL Variablen angelegt:

  • rootObj: Das Objekt auf dem der Bericht ausgeführt wird
  • optArg: Das optionale Zusatzargument (z.B. Adresseintrag)
  • betreff: Der Betreff aus dem Bericht Dialog
  • kommentar: Der Kommentar aus dem Bericht Dialog

Diese Variablen sind in OCL definiert und nur innerhalb einer OCL Expression zugänglich (rootObj und optArg können auch aus den Methodenparametern evaluiert werden (AfterReport3)).

Die Variablen würden für obiges Beispiel folgende Rückgabewerte liefern:

Expression Resultat

Vertec.eval("rootObj")

Liefert die Rechnung (16070001, COMINSTALL) zurück.

Vertec.eval("optArg")

Liefert die optional eingegebene Adresse (Eliwag AG) zurück.

Wird in diesem Dialog keine Adresse optional eingegeben, liefert diese Variable die Standardadresse zurück (Comtelsat AG).

Vertec.eval("betreff") Liefert den String Rechnung Juni 2016 zurück.
Vertec.eval("kommentar") Liefert den String Diese Rechnung geht einmalig an die Firma Eliwag AG zurück.

 

Lokale OCL Variablen in Legacy Word-Berichten

Ab Version 5.3.0.29 können in Legacy Word-Berichten lokale OCL Variablen verwendet werden. Mittels einer Var-Expression kann eine Variable erstellt und später im Bericht wieder verwendet werden. Das verhindert vor allem das erneute Berechnen von Werten, die mehrmals verwendet werden.

Var-Expressions sind Kommentare auf Texten der Form

<bandname><varname>

wobei varname mit "var" beginnen muss.

Beispiel

In einem Rechnungsbericht sollen Leistungen nach Tätigkeit gruppiert werden. Dafür werden zuerst die Tätigkeiten eruiert und dann pro Tätigkeit eine Liste der Leistungen ausgegeben. Das heisst, die Leistungen müssen mit einer Expression in der Art bndMaster.leistungen->select(typ=self) gefiltert werden. Die Liste kann nun in die Variable geladen und damit weitergearbeitet werden (z.B. varLeistList.wertext->sum).

Zugriff via COM

Die entsprechende Methode auf IvtcSession heisst

EvalToVariable(root as IVtcObject, expression as String, varname as String)

Damit können auch im Code, zum Beispiel in einem Excel-Bericht, Werte in Variablen geladen werden, die später in OCL-Expressions verwendet werden können. Insbesondere können auch Ergebnisse von Expressions, welche nur durch die Expression entstehen und nicht in Vertec vorhanden sind, in eine Variable geschrieben werden (beispielsweise das Ergebnis einer Summierung, ein Datumswert mittels encodedate etc.)

Zum Beispiel sollen in einem Excel-Bericht die Leistungen ab einem bestimmten Zeitpunkt angezeigt werden. Statt nun die Leistungen in der Art "offeneLeistungen->select(datum >=" & encodeDate(2012, 08, 01) & ") " zusammenzusuchen, kann zuerst eine Variable gesetzt und dann verwendet werden:

Vertec.EvalToVariable(Vertec.argobject, "encodeDate(2012,08,01)", "varVon")

und dann in der Expression:

offeneLeistungen->select(datum >= varVon)

Unterschiede zwischen Office- und Vertec-generierten Legacy Word-Vorlagen

Die Legacy Word-Vorlagen funktionieren grundsätzlich gleich, egal ob sie durch Vertec oder durch Office generiert werden, mit folgenden Unterschieden:

Keine BeforeReport / AfterReport Unterstützung

In Vertec-generierten Legacy Word-Berichten wird kein kundenspezifischer Code unterstützt, also keine Before- und AfterReport Makros ausgeführt.

Da diese oft verwendet werden, um Werte in die Kopf- oder Fusszeilen zu schreiben, wurde dafür ein alternativer Ansatz entwickelt, der im Abschnitt Datenfelder in Kopf- und Fusszeilen im Artikel Unterschiede zwischen Office- und Vertec-generierten Legacy Word-Berichten beschrieben ist.

Bilder einfügen nur mit ImageData

Das Einfügen von Bildern funktioniert bei Vertec-generierten Legacy Berichten nur mit ImageData, nicht mit ImagePath.

Die Word-Vorlagen von Legacy Office-Berichten funktionieren grundsätzlich gleich, egal ob sie durch Vertec oder durch Office generiert werden, mit folgenden Unterschieden:

Kopf- und Fusszeilen

Vertec-generierte Legacy Word-Berichte

Datenfelder in Kopf- und Fusszeilen einfügen

Ab Vertec 6.1 werden Datenfelder in Vertec-generierten Legacy Word-Berichten unterstützt, um das Einfügen von Daten in Kopf- und Fusszeilen zu ermöglichen.

Die Felder werden in den erweiterten Eigenschaften im Word Dokument geführt, Menü Datei > Informationen > Eigenschaften > Erweiterte Eigenschaften > Anpassen:

Der Feldname muss mit var beginnen. Der Feldwert beinhaltet die OCL Expression . Typ ist immer Text.

Integration in Kopf- und Fusszeile

Im Editiermodus der Kopf- oder Fusszeile kann mittels Einfügen > Schnellbausteine > Feld im Feld DocProperty die gewünschte Variable als Feld übernommen werden:

Die Expressions der Dokumenteigenschaften werden beim Erstellen einmalig auf dem aktuellen Vertec-Objekt (argobject) ausgewertet. Die OCL Expression wird durch deren Ergebnis ersetzt, wobei mehrzeilige Texte ebenfalls übernommen werden.

Unterstützung von Expressions

Ab Vertec 6.3.0.4 wird in Vertec-generierten Legacy Word-Berichten die Möglichkeit unterstützt, Expressions in Kopf- und Fusszeilen einzufügen.

Expressions in doppelten geschweiften Klammern werden wie bei den erweiterten Office-Berichten, als OCL Expressions interpretiert und beim Ausführen mit den entsprechenden Daten befüllt.

Beispiel

{{TimSession.allinstances->first.login}} 

fügt den Namen des in Vertec eingeloggten Benutzers in die Kopf- bzw. Fusszeile ein.

Grössenbeschränkung

Der Inhalt von Feldern in Word kann maximal 255 Zeichen lang sein. Längere Texte werden beim Auswerten der Feldexpression deshalb auf 255 Zeichen abgeschnitten.

Office-generierte Word-Berichte

In Kopfzeilen und Fusszeilen von Office-generierten Word-Berichten kann kein OCL ausgewertet werden, weil keine Kommentare eingefügt werden können. Falls man doch Werte aus Vertec einsetzten möchte, gibt es folgende Möglichkeiten:

Variable in Header oder Footer einfügen

In Versionen vor Vertec 6.1 gibt es den folgenden Umweg über den Makrocode:

Als Variable wird ein Text eingefügt, der später über den Code eindeutig wieder zu finden ist. Im Beispiel unten lautet der Text xProjektcode:

Das Beispiel möchte auf einer Rechnung den Projektcode in der Kopf- bzw. Fusszeile anzeigen. Damit das funktioniert, muss auf dieser Rechnungsvorlage ein Makro erstellt werden mit dem Namen BeforeReport2 oder AfterReport3. Makros mit solchem Namen werden automatisch ausgelöst, wenn ein Bericht aus Vertec heraus aufgerufen wird (siehe Abschnitt Event Makros im Artikel Wordberichte).

Der Code, um den Text in der Kopf- und Fusszeile zu ersetzen lautet für dieses Beispiel wie folgt:

Sub AfterReport3(vertec As Object, dok As Object, root As Object, optarg As Object, akt As Object)
Dim i as integer
For i = 1 To dok.Sections.Count
  'Setzte den Wert im Header
   dok.Sections(i).Headers(wdHeaderFooterPrimary).Range.Find.Execute FindText:="xProjektcode", ReplaceWith:=root.Eval("projekt.code"), Replace:=wdReplaceAll
'Setzte den Wert im Footer
  dok.Sections(i).Footers(wdHeaderFooterPrimary).Range.Find.Execute FindText:="xProjektcode", ReplaceWith:=root.Eval("projekt.code"), Replace:=wdReplaceAll
Next
End Sub

Der zu ersetzende Text (xProjektcode) muss direkt in die Kopfzeile geschrieben werden. Wenn er sich in einem Textfeld oder einer Tabelle befindet, wird er von der beschriebenen Methode nicht gefunden.

Variable per Formatvorlage referenzieren

Eine andere Variante ist, einen bestimmten Textteil innerhalb des Berichts im Header bzw. Footer zu referenzieren. Dies kann wie folgt geschehen:

Ausgangslage: es ist ein Masterband vorhanden, und darin befindet sich ein Text Projektcode. Dieser Text ist mit dem Kommentar code versehen.

Markieren Sie nun den Text Projektcode und gehen dann in die Formatvorlagen. Wählen Sie Neue Formatvorlage. Im daraufhin erscheinenden Dialogfenster geben Sie als Namen Projektcode ein und wählen beim Formatvorlagetyp Zeichen aus und klicken auf OK.

Wechseln Sie dann in den Header (bzw. in den Footer) an die Stelle, wo Sie den Projektcode anzeigen möchten. Schreiben Sie Projektcode und markieren Sie diesen Text. Klicken Sie auf Einfügen > Schnellbausteine > Feld. Bei den Kategorien wählen Sie Verknüpfungen und Verweise aus und beim Feldnamen StyleRef. Wählen Sie Projektcode und klicken Sie auf OK.

Zu sehen ist auf den ersten Blick nichts, aber wenn Sie das Dokument dann ausführen, wird an dieser Stelle der entsprechende Projektcode angedruckt.

Da diese Variante über StyleRef Felder nicht mit Vertec-generierten Word-Berichten mit Ausgabeformat PDF funktioniert, kann, um zu wissen, ob es sich bei einem Feld um ein StyleRef Feld handelt, mit dem Tastaturkürzel Shift-F9 der Feld-Code angezeigt werden:

Zeilenumbrüche in Word-Berichten per VBA einfügen

In Word-Berichten kann ein Zeilenumbruch via ASCII-Code chr(13) + chr(10) eingefügt werden:

txt1 = "Erste Zeile" & Chr(13) & Chr(10) & "zweite Zeile"
ActiveDocument.Range.Find.Execute FindText:="Text1", ReplaceWith:= txt1, Replace:=wdReplaceAll

Befindet sich die zu ersetzende Variable in einer Tabelle, funktioniert das nicht. In diesem Fall muss der Zeilenumbruch über ^p eingefügt eingefügt werden:

txt2 = "Erste Zeile" & "^p" & "zweite Zeile" ActiveDocument.Range.Find.Execute FindText:="Text2", ReplaceWith:=txt2, Replace:=wdReplaceAll

Band-Definitionen

Je nachdem, wie die Textmarke (Bookmark) eines Bands definiert ist, wird der Umfang des Bands in Office- und Vertec-generierten Berichten geringfügig anders interpretiert. Die Unterschiede haben üblicherweise mit der Behandlung von leeren Abschnitten (Paragraphs) zu tun.

Es gibt dabei 2 generelle Arten von Unterschieden:

Bands über Dokumenthierarchiestufen hinweg

Im Gegensatz zum VBA-basierten Bericht-Generator der Office-generierten Berichte unterstützt das Server-basierte Berichtsystem für die Vertec-generierten Berichte nur Band-Definitionen, deren Anfang und Ende sich auf gleicher Ebene befindet. Das bedeutet folgendes:

Band-Start Band-Ende Vertec-generierte Berichte
Text (normaler Paragraph) Text (normaler Paragraph) OK
Text (normaler Paragraph) Text (innerhalb Table) nicht OK
Text (normaler Paragraph) Ende von Tabellenzeile nicht OK
Beginn Tabellenzeile Ende von Tabellenzeile OK
Beginn Tabellenzeile Text in einer Tabellenzelle, nicht am Ende nicht OK

Damit diese Bedingungen möglichst gut erfüllt sind, werden Band-Start und Band-Ende möglichst grosszügig interpretiert.

Wenn sich z.B. ein Band-Start am Ende eines Absatzes, welcher Text enthält befindet, aber nur die Absatzmarke umfasst, ist das eigentlich nicht gültig. Damit der Bericht trotzdem funktioniert, wird der Band-Start interpretativ nach vorne an den Beginn des nächsten Elements (Absatz oder Table) geschoben, falls das Band-Ende am Ende einer Tabellenzeile oder eines Absatzes ist:

Diese automatische Anpassung führt natürlich dazu, dass ein Absatzwechsel weniger dargestellt wird. Dies ist also im Output sichtbar.

Solche Bands sollten nach Möglichkeit nicht definiert werden, sondern möglichst immer ganze Abschnitte oder Start und Ende innerhalb des Textes als Band definiert werden.

Befindet sich der Start des Bands sogar mitten im Absatztext, wie in der folgenden Abbildung dargestellt, dann erscheint eine Fehlermeldung betreffend ungültiger Band-Definition.

Ununterscheidbare Varianten

Es gibt Fälle von Band-Definitionen, welche im server-basierten Code nicht unterschieden werden können, obwohl sie in Word visuell unterscheidbar sind.

Dies ist zum Beispiel dann der Fall, wenn eine Textmarke am Schluss eines leeren Absatzes endet, welcher auf eine Tabelle folgt:

In diesem Fall befindet sich das Bookmark-Ende innerhalb des leeren Absatzes. Endet das Band aber am Ende der Tabelle, enthält den leeren Absatz also nicht, dann befindet sich das Bookmark-Ende ebenfalls im darauffolgenden Abschnitt.

Bookmark-Enden in einem sonst leeren Absatz werden deshalb immer als Ende der vorangehenden Tabelle interpretiert.

Soll ein leerer Absatz nach einer Tabelle explizit zum Band gehören, kann dies erreicht werden, indem im Absatz irgendein Text (z.B. ein Leerzeichen) eingefügt wird. Dann wird der Absatz als zum Band zugehörig interpretiert.

Bands, die in einer leeren Tabellenzeile beginnen

Wenn ein Band am Anfang einer leeren Tabellenzeile beginnt, dann muss in dieser Tabellenzeile mindestens ein Leerzeichen eingefügt werden:

Ansonsten erscheint eine Fehlermeldung der Art: Invalid overlapping bands bndXY and bndYZ.

OCL Variablen für Legacy Office-Berichte

Vor dem Ausführen eines Legacy Office-Berichts werden folgende OCL Variablen angelegt:

  • rootObj: Das Objekt auf dem der Bericht ausgeführt wird
  • optArg: Das optionale Zusatzargument (z.B. Adresseintrag)
  • betreff: Der Betreff aus dem Bericht Dialog
  • kommentar: Der Kommentar aus dem Bericht Dialog

Diese Variablen sind in OCL definiert und nur innerhalb einer OCL Expression zugänglich (rootObj und optArg können auch aus den Methodenparametern evaluiert werden (AfterReport3)).

Die Variablen würden für obiges Beispiel folgende Rückgabewerte liefern:

Expression Resultat

Vertec.eval("rootObj")

Liefert die Rechnung (16070001, COMINSTALL) zurück.

Vertec.eval("optArg")

Liefert die optional eingegebene Adresse (Eliwag AG) zurück.

Wird in diesem Dialog keine Adresse optional eingegeben, liefert diese Variable die Standardadresse zurück (Comtelsat AG).

Vertec.eval("betreff") Liefert den String Rechnung Juni 2016 zurück.
Vertec.eval("kommentar") Liefert den String Diese Rechnung geht einmalig an die Firma Eliwag AG zurück.

 

Keine BeforeReport / AfterReport Unterstützung

In Vertec-generierten Word-Berichte können keine Before- und AfterReport Makros ausgeführt werden.

Da diese oft verwendet werden, um Werte in die Kopf- oder Fusszeilen zu schreiben, wurde dafür ein alternativer Ansatz entwickelt, der im Abschnitt Datenfelder in Kopf- und Fusszeilen einfügen beschrieben ist.

Generierung der Berichte

Im Gegensatz zu den Vertec-generierten Word-Berichten muss bei der Office-generierten Variante auch lokal auf den Clients ein Word installiert sein. Vertec-generierte Word-Berichte sind cloudfähig und können somit auch in der Cloud App und der Web App laufen. Wohingegen Office-generierte Word-Berichte weniger performant und nicht cloudfähig sind.

Bei der Berichtsregistrierung kann eingestellt werden, ob der Bericht durch Vertec oder durch Office generiert wird.

Generierung der Berichte durch Vertec

Word-Berichte können von Vertec generiert und die resultierenden Dokumente an die Apps geliefert werden. Das bedeutet, dass Vertec Word-Berichte cloudfähig sind und somit auch in der Cloud App und der Web App laufen.

In den meisten Fällen ist die Ausführung von Vertec-generierten Word-Berichten wesentlich schneller als die lokale Ausführung, und es wird keine Office-Installation benötigt, weder auf dem Server, noch auf den Clients.

Bei der Berichtsregistrierung kann eingestellt werden, ob der Bericht durch Vertec oder durch Office generiert wird.

Generierung durch Office

Office generierte Word-Berichte basieren auf einem speziellen VisualBasic Makro in der Word Standard-Vorlage, welches bestimmte Elemente in einer Berichtsvorlage interpretiert und via COM bzw. ActiveX auf das Vertec Objektsystem zugreift.

Installieren der Word-Bericht-Makrovorlage

Zum Ausführen von Vertec Word-Berichten wird in Word spezieller Makrocode benötigt. Diese Makros befinden sich im Vorlagendokument VertecReport.dotm.

Dieses Vorlagendokument wird standardmässig im Vertec Installationsverzeichnis abgelegt. Vertec lädt diese Makrodatei bei Bedarf explizit als Word Add-in, daher ist auch keine Signatur notwendig.

Event Makros

Im Office-generierten Word Bericht Mechanismus gibt es die Möglichkeit, VB Makros, die vor und nach dem eigentlichen Bericht aufgerufen werden, zu erstellen. Makros mit folgenden Namen werden berücksichtigt:

BeforeReport2

Wird vom Bericht Mechanismus aufgerufen, bevor die Daten aus Vertec im Bericht eingesetzt werden. Das bietet zum Beispiel die Möglichkeit, einen Dialog anzuzeigen, der eine bestimmte Vorauswahl trifft.

Die Deklaration ist wie folgt:

sub BeforeReport2(vertec As Object, dok As Object)
end sub

Der Zugriff auf Vertec wird mit der Variable vertec übergeben. Es kann auf Vertec also direkt zugegriffen werden. Beispiel:

sub BeforeReport2(vertec As Object, dok As Object)
dim projektliste as IVtcObjectList

set projektliste = Vertec.eval("projekt->select(aktiv)")

end sub

Der Word-Bericht wird mit der Variable dok übergeben.

AfterReport2

Dieses Makro wird aufgerufen, nachdem die Daten aus Vertec im Bericht eingesetzt worden sind.

Die Deklaration ist wie folgt:

sub AfterReport2(vertec As Object, dok As Object)
end sub

Der Zugriff auf Vertec wird mit der Variable vertec übergeben.

Der Word-Bericht wird mit der Variable dok übergeben.

AfterReport3

Ab Version 5.5. Dieses Word-Bericht Eventmakro ermöglicht den Zugriff auf die dazugehörige Aktivität. Dabei handelt es sich um die Aktivität, die erzeugt wird, um den Bericht mit dem Objekt in Vertec zu verknüpfen.

Dieses Makro wird aufgerufen, nachdem die Daten aus Vertec im Bericht eingesetzt worden sind.

Die Deklaration ist wie folgt:

sub AfterReport3(vertec as Object, dok as Object, root as Object, optarg as Object, akt as Object)
end sub

Argumente:

  • vertec: Zugriff auf Vertec
  • dok: das erstellte Word Dokument
  • root: das Vertec Objekt, auf dem der Bericht ausgeführt wurde
  • optarg: das optionale Vertec objekt (Adresse)
  • akt: die erstellte Aktivität

optarg und akt können auch leer sein, in VB entspricht das "nothing". Das Makro wird aufgerufen, nachdem die Daten aus Vertec im Bericht eingesetzt worden sind.

Die übergebene Aktivität hat bereits den vorgesehenen Pfad gesetzt. Wird der Pfad der Aktivität im Eventmakro verändert, wirkt sich das auf den Speicherpfad des Dokuments aus.

Die Aktivität wird dafür vor dem Ausführen des Berichts bereits erstellt. Tritt dabei irgendwo ein Fehler auf, wird die Aktivität wieder gelöscht.

Bitte wählen Sie Ihren Standort