Dies ist eine alte Version des Dokuments!


Tabelleninhalte in einem Formular darstellen

Ausgangslage

Im Modul 'Tabellen' können eigene Tabellen mit frei definierbarem Inhalt erstellt werden. Ab Version 2019.8 können diese Inhalte nun auch in einem Formular abgerufen und dargestellt werden. Als Grundlage für diese Praxisbeispiel dient die Tabelle 'Fotobestellung' in der Beispieldatei. Die Beispieldatei können Sie über das Menü 'Datei' (Mac 'Ablage') mit dem Befehl 'Beispieldatei öffnen' aufrufen. Das Formular können Sie ganz unten auf dieser Seite herunterladen.

Tabelle Fotobestellung aus der Beispieldatei

Aufbau des Formulars

Aufbau des Formulars mit Tabelleninhalten

1: Berechnetes Feld für die Ermittlung der Briefanschrift.
[=WENN([schule.briefpapier_anschrift]=L;0;85)]

Das Feld liefert den Wert 0, wenn die Briefanschrift in den Einstellungen mit links definiert ist. Soll die Adresse hingegen rechts stehen, liefert das Feld den Wert 85. Dieses Feld wird dann bei der Position der Briefanschrift eingesetzt. Das Feld, wie auch die zusätzliche Erklärungszeile sind über die Elementeigenschaften sowohl in der Vorschau wie auch in der Druckausgabe versteckt worden und erscheinen so nur im Formular-Designer.

2: Hinweistext

Dieser Hinweistext soll der Benutzerin / dem Benutzer erklären, warum einzelne Seiten des Formulare nicht (mehr) angezeigt und somit nicht ausgedruckt werden . Das Textfeld erscheint nur in der Vorschau. Damit die Seite nicht erzeugt wird, ist in den Eigenschaften der Seite, die Sichtbarkeit 'Ausdruck' mit folgender Bedingung definiert:

[tabelle("Fotobestellung").spalte("bezahlt").wert]=[leer]


3: Adresse

Die Adresse wird über die dynamische Position 'Links' mit '20+[formularfeld.fxText9]' festgelegt. Über '[formularfeld.fxText9]' wird der bei 1 ermittelte Wert, abhängig von der Position der Briefanschrift, addiert. Dadurch erscheint die Adresse 20 bzw. 105mm vom linken Blattrand.

Wichtig ist dabei, dass das Feld 'fxText9' vor der Anschrift in der Objektreihenfolge gesetzt ist.

4: Anzahl Fotos

Hier wird nicht nur einfach die Anzahl der Fotos aus der Tabelle abgefragt, sondern es soll der Text „kein“ ausgegeben werden, wenn in der Tabelle keine Zahl oder eine Null eingetragen ist.

[=WENN([tabelle("Fotobestellung").spalte("Portrait").wert]>0;[tabelle("Fotobestellung").spalte("Portrait").wert] x;kein)]


5: Bezeichnung des Fotos

Im Formular soll die Bezeichnung so erscheinen, wie diese in der Tabelle eingetragen ist. Damit wird hier nicht mit dem Feldnamen über den entsprechenden Spaltenkopf gearbeitet, sondern mit dem Feldnamen mit dem Schlüsselwert der Spalte. Ebenfalls soll hier nicht der Wert der Spalte, sondern die Bezeichnung abgefragt werden. Somit lauter hier der Feldname für das Textfeld:

[tabelle("Fotobestellung").spalte(SIN8GVVXX126).bezeichnung]

Hinweis: Das dynamische Abfragen soll hier nur die Möglichkeiten aufzeigen. In diesem Formular macht dies so keinen Sinn, da mit einem Umbenennen der Spalte die restlichen Feldbezeichnungen die Zuordnung über den Spaltennamen verlieren würden.

6: Preis pro Foto

In einem weiteren Textfeld wurde hier fixer Text mit dem Wert aus der Tabelle kombiniert:

CHF [tabelle("Fotobestellung").spalte("Preis Portrait").wert] / Stück


7: Preis der gewünschten Fotos

Für das Total soll die Anzahl mit dem Preis multipliziert werden. Damit die Zahlen immer als Preis identifiziert werden können, wurde die Rechnung noch mit der Funktion FEST ergänzt. Damit werden immer 2 Nachkommastellen angezeigt.

[=FEST(PRODUKT([tabelle("Fotobestellung").spalte("Portrait").wert];[tabelle("Fotobestellung").spalte("Preis Portrait").wert]);2)]

Hinweis: Damit die Rechnung korrekt ausgeführt wird, muss in der Tabelle bewusst eine Null in der Spalte der Anzahl eingetragen sein, da die Funktion PRODUKT in der Berechnung nur vorhandene Werte berücksichtigt. So ergibt PRODUKT(Wert1;Wert2) als Resultat Wert2, wenn der Wert 1 leer oder keine Zahl ist.
Alternativ könnte ein zusätzliches berechnete Feld eingebaut werden, welche entweder das Resultat der Rechnung ausweist oder im Falle eines leeren oder ungültigen Wertes den Wert Null ausgibt.

[=WENN([tabelle("Fotobestellung").spalte("Portrait").wert]>0;[formularfeld.fxText6];0.-)]

Diese Feld würde dann an der Position des ursprünglichen berechneten Feldes stehen. Das ursprüngliche Berechnungsfeld kann dazu verschöben werden und wird über die Objekteigenschaften weder ausgedruckt noch in der Vorschau angezeigt.

8: Total bestellter Fotos

Hier wird die Gesamtzahl der bestellten Fotos aus der Tabelle berechnet:

[=SUMME([tabelle("Fotobestellung").spalte("Portrait").wert];
[tabelle("Fotobestellung").spalte("Gruppenfoto").wert];
[tabelle("Fotobestellung").spalte("Klassenfoto").wert])]


9: Gesamtpreis

Auch für das Gesamttotal wurde auf die Werte der Tabelle zurückgegriffen

[=FEST(SUMME(PRODUKT([tabelle("Fotobestellung").spalte("Portrait").wert];[tabelle("Fotobestellung").spalte("Preis Portrait").wert]);
PRODUKT([tabelle("Fotobestellung").spalte("Gruppenfoto").wert];[tabelle("Fotobestellung").spalte("Preis Gruppenfoto").wert]);
PRODUKT([tabelle("Fotobestellung").spalte("Klassenfoto").wert];[tabelle("Fotobestellung").spalte("Preis Klassenfoto").wert]));2)]

Dadurch wird die Formel nicht nur lang, sondern auch schwer fassbar.
Alternativ könnte hier die Summe auch direkt anhand der vorhandenen Formularfelder erzeugt werden:

[=FEST(SUMME([formularfeld.fxText6];[formularfeld.fxText7];[formularfeld.fxText8]);2)]

Diese Formel ist einfacher und nicht so fehleranfällig. Dabei muss aber wieder auf die Feldreihenfolge geachtet werden.

10: Formulartext

In diesem Textfeld wird geschlechtsabhängig die Formulierung „Ihrer Tochter“ bzw. Ihrem Sohn„ bzw. „Ihre Tochter“ bzw. Ihr Sohn“ eingesetzt.

[schueler.Ihrem Sohn/Ihrer Tochter]
[schueler.Ihr Sohn/Ihre Tochter]

Ebenfalls wurde der Betrag im Text erwähnt:

[formularfeld.fxText5]

Für den Fall, dass keine Fotos bestellt wurden, wird ein zweites Textfeld mit einem angepassten Text erstellt. Die beiden Textfelder werden dann über die Sichtbarkeit ein oder ausgeblendet:

[tabelle("Fotobestellung").spalte("Portrait").wert]<>0 ODER 
[tabelle("Fotobestellung").spalte("Gruppenfoto").wert]<>0 ODER 
[tabelle("Fotobestellung").spalte("Klassenfoto").wert]<>0

Dies liesse sich vermutlich auch vereinfachen, in dem nur geprüft wird, ob die Anzahl der bestellten Bilder grösser als Null ist. Achten Sie dabei darauf, dass die Bedingung sowohl bei der 'Vorschau' wie auch beim 'Ausdruck' eingetragen ist. Das zweite Textfeld weisst dann die „umgekehrte“ Bedingung aus:

[tabelle("Fotobestellung").spalte("Portrait").wert]=0 UND 
[tabelle("Fotobestellung").spalte("Gruppenfoto").wert]=0 UND 
[tabelle("Fotobestellung").spalte("Klassenfoto").wert]=0

Zur besseren Handhabung des Formulars wurden die beiden Texte untereinander positioniert. Damit diese dann am selben Ort erscheinen, wurde beim zweiten Textfeld bei der Positionsangabe 'Oben' der Wert des ersten Textfeldes angegeben:

[formularfeld.Text16.oben]


Allgemeine Hinweise

Zur bessern Veranschaulichung wurden die Feldnamen in den meisten Fällen über die Namen der Spalten aufgerufen:

[tabelle("Tabellenname").spalte("Name der Spalte").wert]

Sobald die Spalten jedoch angepasst werden, können die Werte nicht mehr abgerufen werden. Somit muss bei der Erstellung darauf geachtet werden, ob die Spaltennamen später noch angepasst werden müssen / sollen oder nicht.

Das vorliegende Formular kann durchaus noch perfektioniert und weiter angepasst werden. Soll aber die umfassenden Möglichkeiten des Formular Designers aufzeigen. Weitere Infos zum Erstellen von Formularen finden Sie hier. Einen guten Einstieg bietet auch unser Kurs „Formular-Designer“. Die aktuellen Kurse finden Sie auf unserer Kursseite: https://www.lehreroffice.ch/kurse-fuer-einzelpersonen/uebersicht/

Beispielformular zum Download

Drucken/exportieren
QR-Code
QR-Code lehreroffice:zusatzprogramme:formulardesigner:praxisbeispiele:formular_und_tabelle (erstellt für aktuelle Seite)