Base
 

Kapitel 4
Formulare

Copyright

Dieses Dokument unterliegt dem Copyright © 2015. Die Beitragenden sind unten aufgeführt. Sie dürfen dieses Dokument unter den Bedingungen der GNU General Public License (http://www.­gnu.org/licenses/gpl.html), Version 3 oder höher, oder der Creative Commons Attribution License (http://creativecommons.org/licenses/by/3.0/), Version 3.0 oder höher, verändern und/oder weitergeben.

Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt.

Fast alle Hardware- und Softwarebezeichnungen und weitere Stichworte und sonstige Angaben, die in diesem Buch verwendet werden, sind als eingetragene Marken geschützt.

Da es nicht möglich ist, in allen Fällen zeitnah zu ermitteln, ob ein Markenschutz besteht, wird das Symbol (R) in diesem Buch nicht verwendet.

Mitwirkende/Autoren

Robert Großkopf

Jost Lange

Jochen Schiffers

Jürgen Thomas

Michael Niedermair

 

Rückmeldung (Feedback)

Kommentare oder Vorschläge zu diesem Dokument können Sie in deutscher Sprache an die Adresse discuss@de.libreoffice.org senden.

Vorsicht

Alles, was an eine Mailingliste geschickt wird, inklusive der E-Mail-Adresse und anderer persönlicher Daten, die die E-Mail enthält, wird öffentlich archiviert und kann nicht gelöscht werden. Also, schreiben Sie mit Bedacht!

Datum der Veröffentlichung und Softwareversion

Veröffentlicht am 15.2.2017. Basierend auf der LibreOffice Version 5.3.

Anmerkung für Macintosh Nutzer

Einige Tastenbelegungen (Tastenkürzel) und Menüeinträge unterscheiden sich zwischen der Macintosh Version und denen für Windows- und Linux-Rechnern. Die unten stehende Tabelle gibt Ihnen einige grundlegende Hinweise dazu. Eine ausführlichere Aufstellung dazu finden Sie in der Hilfedatei des jeweiligen Moduls.

Windows/Linux

entspricht am Mac

Effekt

Menü-Auswahl Extras → Optionen

LibreOffice → Einstellungen

Zugriff auf die Programmoptionen

Rechts-Klick

Control+Klick

Öffnen eines Kontextmenüs

Ctrl (Control)

oder Strg (Steuerung)

(Command)

Tastenkürzel in Verbindung mit anderen Tasten

F5

Shift++F5

Öffnen des Dokumentnavigator-Dialogs

F11

+T

Öffnen des Formatvorlagen-Dialogs

Inhalt

Formulare als Eingabeerleichterung

Erstellung von Formularen

Einfaches Formular

Symbolleisten des Formularentwurfs

Formulargründung über den Navigator

Formulargründung über ein Formularfeld

Externe Formulare

Formular-Eigenschaften

Eigenschaften der Kontrollfelder

Standardeinstellungen vieler Kontrollfelder

Textfeld

Numerisches Feld

Datumsfeld

Zeitfeld

Währungsfeld

Formatiertes Feld

Listenfeld

Kombinationsfeld

Markierfeld

Optionsfeld

Grafisches Kontrollfeld

Maskiertes Feld

Tabellen-Kontrollfeld

Beschriftungsfeld

Gruppierungsrahmen

Schaltfläche

Grafische Schaltfläche

Navigationsleiste

Drehfeld und Bildlaufleiste

Verstecktes Steuerelement

Mehrfachselektion

Einfaches Formular komplett erstellt

Felder als Gruppe hinzufügen

Felder anpassen

Felder einzeln hinzufügen

Tabellenkontrollfeld

Hauptformular und Unterformular

Eine Ansicht – viele Formulare

Fehlermeldungen bei der Eingabe in Formulare

Suchen und Filtern in Formularen über die Navigationsleiste

Datensatzsuche mit Parametern

Filterung mit dem Autofilter

Filterung mit dem formularbasierten Filter

Filterung über den Standardfilter

Fazit

Dateneingabe und Navigation

Drucken aus Formularen

Darstellungsgröße von Formularen

 

 

Formulare als Eingabeerleichterung

Formulare werden dann genutzt, wenn die Eingabe direkt über eine Tabelle zu unübersichtlich wird, eventuelle Fehleingaben rechtzeitig abgefangen werden sollen oder zu viele Tabellen eine direkte Verwaltung der Daten unmöglich machen.

Hinweis

Ein Formular ist in Base ein für den Nutzer nicht sichtbares Konstrukt. Es dient innerhalb von Base dazu, den Kontakt zur Datenbank zu ermöglichen.

Sichtbar sind für den Nutzer die Kontrollfelder, die dazu dienen, Text, Zahlen usw. einzugeben oder anzuzeigen. Diese Kontrollfelder werden über die GUI in verschiedene Feldarten unterteilt.

 

Der Begriff Formular hat eine doppelte Bedeutung. Zum einen steht ein Formular für den gesamten Inhalt des Eingabefensters, in dem die Daten für eine oder mehrere Tabellen verwaltet werden. Zum anderen enthält ein solches Fenster eines oder mehrere Hauptformulare, von denen jedes wieder Unterformulare enthalten kann; auch für diese Teilbereiche des Fensters wird der Begriff Formular verwendet. Aus dem Zusammenhang sollte immer klar werden, welche Art von Formular gemeint ist, sodass es hoffentlich niemals zu Missverständnissen kommt.

Erstellung von Formularen

Der einfachste Weg zur Erstellung von Formularen ist der über den Formular-Assistenten. Mit diesem Assistenten lassen sich auch Formulare mit Unterformularen erstellen. Dieser Weg wurde bereits im Kapitel «Eingabeformular» im Kapitel «Einführung in Base» beschrieben.

Einfaches Formular

Als Start dient uns aus dem Formularbereich die Aufgabe Formular in Entwurfsansicht erstellen.

 

Rufen wir damit den Formulareditor auf, so zeigt sich erst einmal das Fenster Formular in der Entwurfsansicht.

 

Abbildung 1: Formular in der Entwurfsansicht

 

Am linken Rand ist die Symbolleiste «Formular-Steuerelemente» eingeblendet. Am unteren Rand ist die Symbolleiste «Formular-Entwurf» angedockt. Sollten diese Symbolleisten nicht automatisch erscheinen, so können sie über Ansicht → Symbolleisten angewählt werden. Ohne diese Symbolleisten ist es nicht möglich, ein Formular zu erstellen.

Die weiße Fläche weist ein gepunktetes Raster auf. Dies dient dazu, die Elemente möglichst genau positionieren zu können – vor allem im Verhältnis zueinander. Dass das Raster sichtbar und eingeschaltet ist, ist an den Symbolen ganz rechts in der Leiste zum Formular-Entwurf zu erkennen.

 

Abbildung 2: Alle verfügbaren Schaltflächen der Symbolleiste «Formular-Entwurf»

 

Symbolleisten des Formularentwurfs

Auf der leeren Fläche soll nun ein Formular entstehen. Dies kann auf verschiedene Arten geschehen:

Formulargründung über den Navigator

Mit dem in der Abbildung «Alle verfügbaren Schaltflächen der Symbolleiste «Formular-Entwurf»» abgebildeten Button Formular-Navigator wird der Navigator gestartet. Es erscheint ein Fenster, das auf lediglich ein Verzeichnis hinweist. Dies ist die höchste Ebene der Fläche, die jetzt bearbeitet wird. Sie ist mit Formulare benannt. Dies weist darauf hin, dass nicht nur ein, sondern ohne weiteres mehrere Formulare auf der angezeigten Fläche untergebracht werden können.

 

Mit einem Rechtsklick auf das Verzeichnis Formulare öffnet sich ein Kontextmenü, in dem über den Menüpunkt Neu ein neues Formular erstellt werden kann. Die weiteren Befehle des Kontextmenüs entsprechen denen der Buttons in der Abbildung 2.

Hinweis

Soll ein Formular automatisch mit dem Cursor im ersten Formularelement starten, so kann dies durch die Auswahl Automatischer Kontrollelement-Fokus bewirkt werden. Das erste Formularelement wird über die Aktivierungsreihenfolge geregelt.

Leider hat diese Funktion zur Zeit einen Bug. Befindet sich in einem Formular ein Tabellenkontrollfeld, so wird der Fokus automatisch auf das erste Feld des Tabellenkontrollfeldes gesetzt. Dieser Bug ist merkwürdigerweise zu beheben, wenn nach der Wahl des automatischen Kontrollelement-Fokus die Sprache der Benutzeroberfläche umgestellt wird: Bug 87290.

 

Das Formular erhält standardmäßig den Namen Formular. Diese Bezeichnung kann direkt oder später geändert werden. Sie hat allerdings für die spätere Funktion nur dann eine Bedeutung, wenn über Makros auf Teile des Formulars zugegriffen werden soll. Spätestens dann sollten nicht zwei Elemente mit gleicher Bezeichnung in der gleichen Ebene des Verzeichnisbaums auftauchen.

Über das Kontextmenü des Formulars geht schließlich der Weg zu den Formulareigenschaften.

Formulargründung über ein Formularfeld

Über die Symbolleiste für die Formularsteuerelemente (Abbildung 3) stehen direkt einige Formularfelder zur Verfügung. Während die ersten vier Elemente identisch zu denen des Formular-Entwurfs sind, folgen anschließend häufiger verwendete Formularfelder.

Über die Symbolleiste «Formular-Steuerelemente» kann die zusätzliche Symbolleiste «Weitere Steuerelemente» als frei schwebende Symbolleiste angezeigt werden.

 

Abbildung 3: Alle verfügbaren Schaltflächen der Symbolleiste «Formular-Steuerelemente»

 

Über den Aufruf eines Formularfeldes wird automatisch ein Formular mit gegründet:

Dazu wird z. B. ein Beschriftungsfeld aufgerufen. Der Cursor verändert sein Erscheinungsbild. Es kann eine rechteckige Form auf die weiße Oberfläche des Formulars gezogen werden. Aus der gestrichelten Form entsteht anschließend ein Beschriftungsfeld. Jetzt wird zur Erstellung des Formulars das Kontextmenü des Kontrollfeldes aufgerufen.

Über den Menüpunkt Formular werden hier die Eigenschaften des nebenher gegründeten Formulars aufgerufen. Das Formular wurde mit dem Standardnamen «Formular» erstellt.

Externe Formulare

Neben den Formularen, die direkt in Base erstellt werden, gibt es auch die Möglichkeit, im Writer oder in Calc Formulare zu erstellen. Dies wird im Kapitel «Datenbank-Anbindung» beschrieben.

Formular-Eigenschaften

 

Werden die Formulareigenschaften über das Kontextmenü im Formular-Navigator oder das Kontextmenü eines Formularfeldes aufgerufen, so erscheint ein Fenster mit drei Registerreitern: Allgemein, Daten und Ereignisse

Allgemein

Hier kann der Name des Formulars geändert werden. Außerdem finden sich Einstellungsmöglichkeiten, die innerhalb von Base keine weitere Bedeutung haben. Sie zeigen lediglich die universelle Einsatzmöglichkeit des Formulareditors; bei Erstellung von Webformularen ist hier eine Einstellung notwendig. (URL: Ziel, an das die Daten gesandt werden sollen | Frame: Teil der Zielwebseite, der eventuell separat angesprochen werden muss | Kodierung beim Submit: Neben dem normalen Kodieren der Zeichen für eine Weitergabe über die URL sind hier Textkodierungen und Multipartkodierungen (z. B. zum Versenden von Dateien …) möglich. | Art des Submits: Get (über die URL sichtbar an den Dateinamen angehängt) oder POST (nicht sichtbar, auch für größere Datenmengen geeignet).

Daten

 

Für die Erstellung interner Formulare von Base ist dies der wichtigste Registerreiter. Hier wird zuerst der Inhalt des Formulars festgelegt.

Ereignisse

Ereignisse können Makros auslösen. Durch einen Klick auf den rechts stehenden Button (…) können Makros mit dem Ereignis verbunden werden.

Zurücksetzen: Das Formular wird von allen neuen Einträgen geleert, die noch nicht abgespeichert sind.

Vor dem Submit: Bevor die Formulardaten gesendet werden. Dies hat nur bei Webformularen eine Bedeutung.

Beim Laden: Nur beim Öffnen des Formulars. Nicht beim Laden eines neuen Datensatzes in das Formular.

Erneutes Laden: Dies erfolgt, wenn der Inhalt des Formulars z. B. über einen Button in der Navigationsleiste aktualisiert wird.

Entladen: Nach einigen Tests scheint dies ohne Funktion zu sein. Erwartet würde der Ablauf eines Makros beim Schließen des Formulars.

Datensatzaktion: Dies ist z. B. das Abspeichern mittels Button. Im Test ergibt sich, dass die Aktion Vor der Datensatzaktion regelmäßig doppelt erscheint, d. h. Makros werden direkt nacheinander zweimal abgearbeitet. Dies liegt daran, dass hier unterschiedliche Funktionen (Implementationen) ausgeführt werden. Beide sind mit Namen versehen: org.openoffice.comp.svx.FormController und com.sun.star.comp.forms.ODatabaseForm. Wenn innerhalb des Makros mit oForm.ImplementationName der entsprechende Name abgefragt wird, so kann das Makro auf eine Ausführung begrenzt werden.

Datensatzwechsel: Bereits das Öffnen des Formulars stellt einen Datensatzwechsel dar. Beim Wechsel von einem Datensatz zum anderen innerhalb eines Formulars taucht diese Aktion ebenfalls zweimal auf. Makros werden also auch hier zweimal hintereinander ausgeführt. Auch hier kann aber zwischen den Ursachen des Ereignisses unterschieden werden.

Parameter füllen: Dieses Makro springt ein, wenn eine Parameterabfrage in einem Unterformular aufgerufen werden soll, aber aus irgendeinem Grund der Parameter vom Hauptformular nicht richtig weiter gegeben wird. Ohne das Ereignis abzufangen, erfolgt dann beim Laden des Formulars eine Parameterabfrage.

Fehler aufgetreten: Dieses Ereignis lässt sich nicht nachvollziehen.

Eigenschaften der Kontrollfelder

Ist ein Formular erstellt, so kann es mit den sichtbaren Kontrollfeldern bestückt werden. Die Kontrollfelder sind für verschiedene Aufgaben gedacht:

Dateneingabe und Datenanzeige

Kontrollfeld

Anwendungsgebiet

Textfeld

Texteingaben

Numerisches Feld

Zahleneingabe

Datumsfeld

Datumseingabe

Zeitfeld

Zeiteingabe

Währungsfeld

Zahleneingabe, vorformatiert für Währungen

Formatiertes Feld

Anzeige und Eingabe mit zusätzlicher Formatierung wie z. B. Maßeinheiten

Listenfeld

Auswahl zwischen vielen verschiedenen Möglichkeiten, Weitergabe eines anderen als des angezeigten Wertes an die Datenbank.

Kombinationsfeld

Wie Listenfeld, nur Weitergabe des angezeigten Wertes und dazu noch die Möglichkeit, auch neue Werte einzugeben.

Markierfeld

Ja/Nein-Felder

Optionsfeld

Auswahl zwischen verschiedenen, stark begrenzten Möglichkeiten.

Grafisches Kontrollfeld

Anzeige von Bildern aus einer Datenbank und Neueingabe von Bildern in eine Datenbank über eine Pfadangabe

Maskiertes Feld

Eingabe in eine vorgefertigte Maske; grenzt die Eingabemöglichkeiten  auf bestimmte Zeichenkombinationen ein.

Tabellen-Kontrollfeld

Universelles Eingabemodul, das eine ganze Tabelle bedienen kann.
Integriert in dieses Kontrollfeld sind wieder viele der obigen Kontrollfelder

 

Gestaltung

Kontrollfeld

Anwendungsgebiet

Beschriftungsfeld

Überschrift über das Formular, Beschriftung anderer Kontrollfelder

Gruppierungsrahmen

Linienzug um z. B. verschiedene Optionsfelder

 

Interaktion

Kontrollfeld

Anwendungsgebiet

Schaltfläche

Button mit Beschriftung

Grafische Schaltfläche

Wie der Button, nur mit einer zusätzlich auf dem Button erscheinenden Grafik

Navigationsleiste

Leiste mit geringen Abweichungen zu der, die am unteren Bildschirmrand angezeigt wird.

Dateiauswahl

Auswahl von Dateien z. B. zum Hochladen in HTML-Formularen. - nicht weiter beschrieben

Drehfeld

Nur über Makroprogrammierung verwendbar – nicht weiter beschrieben

Bildlaufleiste

Nur über Makroprogrammierung verwendbar – nicht weiter beschrieben

Verstecktes Steuerelement

Hier kann ein Wert über Makros eingespeichert und wieder ausgelesen werden.

Standardeinstellungen vieler Kontrollfelder

Die Eigenschaften werden wie beim Formular in drei Kategorien unterteilt: Allgemein, Daten und Ereignisse. Unter Allgemein wird all das eingestellt, was für den Nutzer sichtbar ist. In der Kategorie Daten wird die Verbindung zu einem Feld der Datenbank hergestellt. Die Kategorie Ereignisse schließlich regelt Auslösemomente, die mit irgendwelchen Makros verbunden werden können. Für eine Datenbank ohne Makros spielt diese Kategorie keine Rolle.

 

Hinweis

In den folgenden Übersichten stehen die deutschen Begriffe vor allem der Eigenschaften – genau wie im Formular-Entwurf. In Makros werden zur Beeinflussung der Felder die englischen Begriffe benötigt; diese sind in [Klammern] angegeben.

Beispiel:

oDoc = thisComponent

oDrawpage = oDoc.drawpage

oForm = oDrawpage.forms.getByName("Formular")

oFeld = oForm.getByName("Formularfeld")

oFeld.Printable = True 'Das Feld wird auf "Druckbar"→"Ja" gesetzt.

Weitere Hinweise stehen im Kapitel «Makros».

Allgemein

 

Die Bezeichnung für das Feld sollte innerhalb eines Formulars nur einmal vorkommen – Anwendung bei  Zugriff über Makros.
[Name]

 

Gehört zu dem Feld ein Beschriftungsfeld? Hiermit wird eine Gruppierung festgelegt. Über das Beschriftungsfeld kann dann das Formularfeld mit einer Tastenkombination direkt erreicht werden.
[LabelControl]

 

Nicht aktivierte Felder sind nicht verwendbar und werden grau hinterlegt. Sinnvoll bei Steuerung über Makros (Entscheidung: Wenn in Feld 1 ein Wert eingegeben wird, darf in Feld 2 kein Wert eingegeben werden – Feld 2 wird deaktiviert)
[Enabled]

 

In der Regel 'Ja'; nicht sichtbare Felder können Werte zwischenspeichern. Anwendung z. B. bei der Erstellung von Kombinationsfeldern mit Makros.
[EnableVisible]

 

'Ja' würde eine Veränderung des Wertes ausschließen; z. B. für die Anzeige eines automatisch erstellten Primärschlüssels sinnvoll.
[ReadOnly]

 

Manchmal sind Seitenausdrucke aus einem Formular sinnvoller als ein separater Bericht. Hier sollen dann eventuell nicht alle Felder erscheinen.
[Printable]

 

Durch ein Formular wird in der Regel mit dem Tabulator navigiert.
Ein Feld, das z. B. nur gelesen wird, braucht keinen Stop des Tabulators, würde also übersprungen.
[Tabstop]

 

Hat das Feld einen Tabstop? Hier wird die Reihenfolge innerhalb des Formulars eingestellt.
[Tabindex]

 

Verankerung der Grafik, die das Textfeld darstellt.

 

Position links oben vom linken Rand aus.
[PosSize.X]

 

Position von oben aus.
[PosSize.Y]

 

Breite des Feldes
[PosSize.Width]

 

Höhe des Feldes
[PosSize.Height]

 

Schriftart, Schriftschnitt, Schriftgrad und Schrifteffekt sind hier einstellbar.
[Fontxxx]

 

Der Eintrag wird linksbündig dargestellt.
[Align]

 

Standard | Oben | Mitte | Unten
[VerticalAlign]

 

Hintergrundfarbe des angezeigten Textfeldes
[BackgroundColor]

 

Rahmenform: Ohne Rahmen | 3D-Look | Flach
[Border]

 

Wenn ein Rahmen, dann kann hier die Umrandungsfarbe eingestellt werden.
[BorderColor]

 

Markierter Text wird so nicht mehr als markiert angezeigt, wenn das Textfeld den Fokus verliert.
[HideInactiveSelection]

 

Gut nutzbar für Informationen, die mittels Makros ausgelesen werden sollen, siehe «Zusatzinformationen eines Feldes» im Kapitel «Makros».
[Tag]

 

Erscheint als sogenannter Tooltip, wenn mit der Maus über das Textfeld gefahren wird.
[HelpText]

 

Verweist auf eine Hilfedatei – eher für HTML-Zwecke geeignet. Durch F1 abrufbar, wenn der Fokus auf dem Feld liegt.
[HelpURL]

Zusätzlich sind bei Zahlenfeldern, Datumsfeldern u.ä. üblich:

 

Mit eingeschalteter Überprüfung ist nur die Eingabe von Ziffern und Komma möglich.
[EnforceFormat]

 

Nie erlaubt keine Änderung mit dem Mausrad; Wenn ausgewählt lässt eine Änderung zu, wenn das Feld ausgewählt ist und die Maus sich über dem Feld befindet; Immer bedeutet, dass sich die Maus über dem Feld befinden muss.
[MouseWheelBehavior]

 

Ein Drehsymbol wird an der rechten Seite des Feldes eingeblendet.
[Spin]

 

Wenn ein Drehfeldpfeil länger gedrückt wird lässt sich hier einstellen, ob nicht nur zum nächsten Wert gedreht werden soll.
[Repeat]

 

Stellt die Verzögerungszeit ein, nach der der Druck auf die Maustaste beim Drehfeld Wiederholung interpretiert wird.
[RepeatDelay]

Daten

 

Datenfeld: Hier wird die Verbindung zur Tabelle hergestellt, die dem Formular zugrunde liegt.
[Model.DataField]

Leere Zeichenfolge ist NULL: Soll ein leeres Feld geleert werden (NULL) oder nur der Inhalt gelöscht werden?

Eingabe erforderlich: Dieser Eintrag sollte sich mit dem in der Tabelle decken. Dann fragt die GUI gegebenenfalls nach einer Eingabe, wenn vom Nutzer kein Wert eingegeben wurde.
[Model.InputRequired]

Filtervorschlag: Bei einer Filterung der Daten werden die Inhalte dieses Feldes als Vorschläge zwischengespeichert. Achtung – dies ist bei umfangreichen Inhalten recht speicherintensiv.
[Model.UserValueFilterProposal]

Ereignisse

 

Modifiziert: Dieses Ereignis tritt ein, wenn das Kontrollfeld geändert wurde und anschließend den Fokus verloren hatte. Das Ereignis geht verloren, wenn direkt zum nächsten Datensatz gewechselt wird. Unter den Umständen ist also eine Änderung gespeichert, ohne vorher wahrgenommen zu werden. [com.sun.star.lang.EventObject]

Text modifiziert: Direkt auf den Inhalt bezogen; kann Text, Zahl o.a. sein, tritt also nach jeder Tastatureingabe auf. [com.sun.star.awt.TextEvent]

Fokuserhalt: Der Cursor kommt in das Feld hinein. Hier sollte auf keinen Fall über das Makro eine Messagebox auf dem Bildschirm erzeugt werden. Durch das Anklicken dieser Box verliert das Formularfeld den Fokus und erhält ihn direkt danach zurück – eine Schleife wird dadurch erzeugt. Sie kann nur durch Tastatureingaben unterbrochen werden.

Fokusverlust: Der Cursor bewegt sich aus dem Feld heraus. Auch dies kann zu einem Wechselspiel führen, wenn eine zu bestätigende Bildschirmausgabe erfolgt.

Taste: Bezieht sich auf die Tastatur. Die Taste muss ausgelöst werden, wenn der Cursor in dem Kontrollfeld steht. Auch der Tabulator zum Verlassen des Kontrollfeldes löst dieses Ereignis aus. Dem Ereignis wird über den KeyCode bzw. KeyChar die auslösende Taste (Buchstabe, Zahl, Spezialtaste) mitgegeben. [com.sun.star.awt.KeyEvent]

Maus: selbsterklärend; Ereignisse treten nur ein, wenn vorher die Maus innerhalb des Feldes ist oder war («außerhalb» entspricht javascript onMouseOut). [com.sun.star.awt.MouseEvent]

Zurücksetzen: Das Formular wird von allen Daten geleert (Anlegen eines neuen Datensatzes) oder auf den alten Datenstand zurück gesetzt (Änderung eines bestehenden Datensatzes). Bei einem Formularfeld wird das Ereignis nur ausgelöst, wenn über den Button in der Navigationsleiste die Dateneingabe rückgängig gemacht wird. [com.sun.star.lang.EventObject]
Wenn ein Formular aufgerufen wird, wird nacheinander das Ereignis Vor dem Zurücksetzen und Nach dem Zurücksetzen abgearbeitet, bevor das Formular für eine Eingabe verfügbar ist.

Aktualisieren: Ist dies Ereignis an ein Kontrollfeld des Formulars gebunden, so tritt die Aktualisierung bei Fokusverlust und Sprung zu einem anderen Formularfeld auf, wenn der Inhalt des Kontrollfeldes geändert wurde. Änderungen in dem Formular werden übernommen und angezeigt. Bei Schließen eines Formular werden nacheinander die Ereignisse Vor dem Aktualisieren und Nach dem Aktualisieren abgearbeitet. [com.sun.star.lang.EventObject]

Textfeld

Neben den bereits unter Standardeinstellungen vieler Kontrollfelder erklärten Eigenschaften gibt es die folgenden Besonderheiten:

Allgemein

 

Solange der Wert 0 ist wird die Einstellung nicht berücksichtigt. In der Praxis wird hier die Zeichenlänge des Feldes aus der Datenbank übernommen, auf das sich das Textfeld bezieht.
[MaxTextLen]

 

Soll in einem leeren Feld ein Standardtext erscheinen? Dieser Text muss gelöscht werden, wenn ein anderer Eintrag erfolgen soll.
[DefaultText]

 

Mögliche Typen: Einzeilig | Mehrzeilig | Mehrzeilig mit Formatierungen (wobei sich die beiden letzten nur im Tabulator unterscheiden – und ein Feld mit Formatierungen nicht an eine Datenbank angebunden werden kann). Bei mehrzeiligen Feldern ist die vertikale Ausrichtung nicht aktiv.
[MultiLine]

 

Unix oder Windows? Prinzipiell funktionieren beide Endungen. Intern müssen für Windowszeilenenden aber zwei Steuerzeichen verwendet werden (CR und LF).
[LineEndFormat]

 

Nur bei mehrzeiligen Feldern: Horizontal | Vertikal | Beide
[HScroll], [VScroll]

 

Aktiv nur bei einzeiligen Feldern.
[EchoChar]

Daten

keine weiteren Besonderheiten

Ereignisse

keine weiteren Besonderheiten

Numerisches Feld

Neben den bereits unter Standardeinstellungen vieler Kontrollfelder erklärten Eigenschaften gibt es die folgenden Besonderheiten:

Allgemein

 

Mindestwert, den dieses Feld einnehmen kann. Sollte mit dem Mindestwert übereinstimmen, der in der Tabelle erwartet wird.
[ValueMin]

 

Maximalwert
[ValueMax]

 

Intervall-Wert für die Funktion als Scrollelement per Mausrad bzw. Drehfeld
[ValueStep]

 

Wert, der beim Erstellen eines neuen Datensatzes angezeigt wird.
[DefaultValue]

 

Anzahl Nachkommastellen, bei Integer-Feldern auf 0 zu stellen
[DecimalAccuracy]

 

Trennzeichen für Tausenderstellen, in der Regel der Punkt
[ShowThousandsSeparator]

Daten

Es erfolgt keine Nachfrage, ob das Feld NULL sein soll. Eine fehlende Eingabe belässt dennoch das Feld auf NULL, nicht auf 0.
Ein Filtervorschlag wird ebenfalls nicht erstellt.

Ereignisse

Es fehlt das Feld «Modifiziert». Änderungen werden über «Text modifiziert» (hier wohl nicht wörtlich zu nehmen) angesprochen.

Datumsfeld

Neben den bereits unter Standardeinstellungen vieler Kontrollfelder erklärten Eigenschaften gibt es die folgenden Besonderheiten:

Allgemein

 

Mindestwert für das Feld, einstellbar über ein Aufklappfeld, das einen Kalender bereitstellt.
[DateMin]

 

Maximalwert.
[DateMax]

 

Kurzform wie 10.02.12 sowie unterschiedliche Formen auch mit '/' statt '.' oder '-' in amerikanischer Schreibweise.
[DateFormat]

 

Hier kann ein festes Datum vorgegeben werden. Das aktuelle Datum (Heute) beim Aufruf des Formulars muss leider (noch) durch ein Makro eingetragen werden.
[DefaultDate]

 

Ein Monatskalender zur Auswahl des Tages kann eingeblendet werden.
[DropDown]

Daten

Es erfolgt keine Nachfrage, ob das Feld NULL sein soll. Eine fehlende Eingabe belässt dennoch das Feld auf NULL, nicht auf 0.
Ein Filtervorschlag wird ebenfalls nicht erstellt.

Ereignisse

Es fehlt das Feld «Modifiziert». Änderungen werden über «Text modifiziert» (hier wohl nicht wörtlich zu nehmen) angesprochen.

Zeitfeld

Neben den bereits unter Standardeinstellungen vieler Kontrollfelder erklärten Eigenschaften gibt es die folgenden Besonderheiten:

Allgemein

 

Mindestwert für das Feld, standardmäßig auf 0 gesetzt.
[TimeMin]

 

Maximalwert, standardmäßig auf 1 Sekunde unter 24 Uhr gesetzt.
[TimeMax]

 

Kurzform ohne Sekunden, Langform mit Sekunden sowie Benennungen mit PM (post meridiem / Nachmittag)
[TimeFormat]

 

Eine feste Zeit ist voreinstellbar, die aktuelle Zeit beim Abspeichern des Formulars leider (bisher) nur mit Makro.
[DefaultTime]

Daten

Es erfolgt keine Nachfrage, ob das Feld NULL sein soll. Eine fehlende Eingabe belässt dennoch das Feld auf NULL, nicht auf 0.
Ein Filtervorschlag wird ebenfalls nicht erstellt.

Ereignisse

Es fehlt das Feld «Modifiziert». Änderungen werden über «Text modifiziert» (hier wohl nicht wörtlich zu nehmen) angesprochen.

Währungsfeld

Neben den bereits unter Standardeinstellungen vieler Kontrollfelder erklärten Eigenschaften gibt es die folgenden Besonderheiten:

Allgemein

Min. Wert, Max. Wert, Intervall, Standardwert, Nachkommastellen und Tausender‑Trennzeichen entsprechen den allgemeinen Eigenschaften Numerisches Feld. Daneben gibt es lediglich:

 

Das Symbol wird angezeigt, aber nicht in der dem Formular zugrundeliegenden Tabelle mit abgespeichert.
[CurrencySymbol]

 

Soll das Symbol vor oder hinter der Zahl erscheinen?
[PrependCurrencySymbol]

Daten

Es erfolgt keine Nachfrage, ob das Feld NULL sein soll. Eine fehlende Eingabe belässt dennoch das Feld auf NULL, nicht auf 0.
Ein Filtervorschlag wird ebenfalls nicht erstellt.

Ereignisse

Es fehlt das Feld «Modifiziert». Änderungen werden über «Text modifiziert» (hier wohl nicht wörtlich zu nehmen) angesprochen.

Formatiertes Feld

Neben den bereits unter Standardeinstellungen vieler Kontrollfelder erklärten Eigenschaften gibt es die folgenden Besonderheiten:

Allgemein

Min. Wert und Max. Wert und Standardwert hängen von der Formatierung ab. Hinter dem Button zur Formatierung versteckt sich ein «Allroundfeld", das Währungsfeld und Zahlenfeld meist überflüssig macht. Im Gegensatz zum einfachen Währungsfeld kann das formatierte Feld negative Beträge auch in roter Farbe darstellen.

 

Über den rechten Button mit den drei Punkten erscheint die Auswahl zum Zahlenformat, die auch in LibreOffice‑Calc üblich ist.
[FormatKey]

 

Abbildung 5: Formatiertes Feld mit allgemeinen Zahleneinstellungen

 

In dem Zahlenformat sind dann neben Datum, Zeit, Währung oder normalen Zahlenformaten auch Möglichkeiten gegeben, die Felder mit einer Maßeinheit wie z. B. kg zu bestücken. Siehe dazu die allgemeine Hilfe zu Zahlenformat-Codes.

Mit dem formatierten Feld ist es auch möglich, Timestamp-Felder aus Tabellen mit nur einem Feld darzustellen und zu beschreiben. Der Formularassistent nutzt dazu sonst ein Datumsfeld und ein Zeitfeld.

Nur mit Hilfe von Makros ist es bei Timestamp-Feldern möglich, Eingaben im Format Minuten:Sekunden,Hundertstelsekunden zu erreichen.

Daten

keine weiteren Besonderheiten.

Ereignisse

Es fehlt das Feld «Modifiziert». Änderungen werden über «Text modifiziert» (hier wohl nicht wörtlich zu nehmen) angesprochen.

Listenfeld

Sobald ein Listenfeld erstellt wird, erscheint standardmäßig der Listenfeldassistent. Diese Automatik lässt sich gegebenenfalls über Assistenten an/aus (Abbildung 3) abschalten.

Assistent

 

Das Formular ist bereits definiert. Es verbindet mit einer Tabelle, die den Namen "Ausleihe" trägt. Ein Listenfeld zeigt andere Daten für den Nutzer an als solche, die an die Tabelle weitergegeben werden. Diese Daten stammen bei Datenbanken in der Regel aus einer anderen Tabelle als der, mit der das Formular verbunden ist.

In der Tabelle "Ausleihe" soll verzeichnet werden, welcher "Leser" welche Medien entliehen hat. Allerdings wird in dieser Tabelle nicht der Name des Lesers gespeichert sondern der Primärschlüssel aus der Tabelle "Leser". Die Tabelle "Leser" bildet also die Grundlage für das Listenfeld.

 

Das Feld "Nachname" aus der Tabelle "Leser" soll in dem Listenfeld sichtbar sein.
Es ist also das
Anzeigefeld.

 

Das Feld "Leser_ID" befindet sich in der dem Formular zugrundeliegenden Tabelle "Ausleihe". Diese Tabelle wird hier als Wertetabelle bezeichnet. Der Primärschlüssel "ID" aus der Tabelle "Leser" soll mit diesem Feld verbunden werden. Die Tabelle "Leser" wird hier als Listentabelle bezeichnet.

Das Listenfeld ist jetzt komplett mit Daten und Standardeinstellungen erstellt und funktions­fähig.

Neben den bereits unter Standardeinstellungen vieler Kontrollfelder erklärten Eigenschaften gibt es die folgenden Besonderheiten:

Allgemein

 

Die Listeneinträge wurden bereits durch den Assistenten erstellt. Hier könnten sonst auch Einträge stehen, die in keiner Tabelle der Datenbank verzeichnet sind. Mit Listeneinträgen sind hier die sichtbaren Einträge gemeint; nicht die Einträge, die über das Formular an die Tabelle weitergegeben werden.
[StringItemList]

 

Wird das Feld als nicht aufklappbar festgelegt, so erscheinen bei Aufruf des Formulars am rechten Rand des Listenfeldes Scrollpfeile. Das Listenfeld wird dann automatisch zu einem mehrzeiligen Feld, bei dem die aktuelle Auswahl markiert ist.
[Dropdown]

 

Falls aufklappbar wird hier die maximal sichtbare Anzahl der Zeilen eingegeben. Geht der Inhalt über mehr Zeilen, so erscheint beim Aufklappen ein Scrollbalken.
[LineCount]

 

Sollen mehrere Werte selektiert werden können? Im obigen Beispiel ist das nicht möglich, da ein Fremdschlüssel abgespeichert wird.
In der Regel wird diese Funktion in Verbindung mit Datenbanken nicht genutzt werden, da jedes Feld eigentlich nur einen Wert einnehmen sollte. Gegebenenfalls kann eine Auswertung des Eintrags in das Listenfeld über Makros hier Abhilfe schaffen.
[MultiSelection] [MultiSelectionSimpleMode]

 

Schon der deaktivierte Button macht deutlich, dass auch eine Standardselektion bei einer Verbindung mit einer Datenbanktabelle, wie über den Listenfeldassistenten erzeugt, wenig Sinn macht. Schließlich kann es passieren, dass der der Standardselektion entsprechende Datensatz in der Beispieltabelle "Leser" gar nicht mehr vorhanden ist.
[DefaultSelection]

Daten

 

Neben den üblichen Daten-Eigenschaften Datenfeld und Eingabe erforderlich sind hier Eigenschaften von Bedeutung, die die Verbindung von anzuzeigenden Daten und in die dem Formular zugrundeliegende Tabelle einzutragenden Daten herstellen.

Art des Listeninhaltes: Werteliste | Tabelle | Abfrage | SQL | SQL (Native) | Tabellenfelder [ListSourceType]

Listeninhalt Werteliste: Sind unter 'Allgemein' Listeneinträge gemacht worden, so werden hier die entsprechenden Werte eingegeben, die mit dem Formular abgespeichert werden sollen. Der Listeninhalt wird bestückt, indem bei der Eingabe die Inhalte über Shift – Enter aneinandergehängt werden. Es erscheint dann in dem Listeninhalt "Wert1";"Wert2";"Wert3" … Die Eigenschaft 'Gebundenes Feld' ist inaktiv.

Listeninhalt Tabelle: Hier wird eine der Datenbanktabellen ausgesucht. Dabei muss aber berücksichtigt werden, dass dann immer das erste Feld der Tabelle in dem Listenfeld angezeigt wird.
Üblicherweise sind Tabellen so aufgebaut, dass zuerst der Primärschlüssel erscheint und anschließend die Inhalte. Solche Tabellen eignen sich nur dann für ein Listenfeld, wenn tatsächlich der Primärschlüssel angezeigt werden soll.

Listeninhalt Abfrage: Hier kann extern eine Abfrage vorformuliert werden, die dann auch als Abfrage sichtbar abgespeichert wird. Die Gestaltung solcher Abfragen wird im Kapitel 'Abfragen' erklärt. Durch die Abfrage ist es dann möglich, das Feld "ID" von der ersten Position in der ursprünglichen Tabelle an die zweite Position zu bewegen, was hier dem gebundenen Feld 1 entspricht.

Listeninhalt SQL: Hiermit bestückt der Listenfeldassistent das Listenfeld. Die von dem Assistenten konstruierte Abfrage sieht dann so aus:

 

Die Abfrage ist die einfachste Möglichkeit, die sich bietet. Das Feld "Nachname" erscheint an Position 0, das Feld "ID" an Position 1. Beide werden aus der Tabelle "Leser" ausgelesen. Da das gebundene Feld das Feld 1 ist reicht diese SQL-Formulierung aus. Schon vom Standard her sollte aber hier ergänzt werden ORDER BY "Nachname" ASC, denn ohne diese Formulierung werden die Nachnamen so wiedergegeben, dass ihre Reihenfolge der Eingabe in die Tabelle Leser entspricht. Zusätzliches Problem dürfte sein, dass "Nachname" bei einigen Lesern gleich ist. Hier muss dann "Vorname" hinzugezogen werden können und, als letztes Mittel, wohl auch der Primärschlüssel "ID". Wie so etwas genauer formuliert wird, kann im Kapitel 'Abfragen' genauer nachgelesen werden.

Listeninhalt SQL (Nativ): Die SQL-Formulierung wird direkt eingegeben, kein Assistent wird dazu aufgerufen. Base wertet die Abfrage nicht aus. Dies bietet sich an, wenn in der Abfrage Funktionen stecken, die eventuell von der GUI von Base nicht verstanden werden. Dann wird die Abfrage nicht weiter auf Fehler untersucht. Genaueres zu dem direkten SQL-Modus im Kapitel 'Abfragen'.

Listeninhalt Tabellenfelder: Hier werden die Feldnamen einer Tabelle aufgelistet, nicht die Inhalte. Für die Tabelle "Leser" erscheint dort also die Liste "ID", "Vorname", "Nachname", "Sperre", "Geschlecht_ID".

Hinweis

Für Zeitfelder, die auch Zeiten im Millisekunden-Bereich darstellen sollen, sind, wie unter «Zeitfelder in Tabellen» beschrieben, Timestamp-Felder erforderlich. Die Darstellung der Millisekunden funktioniert bei der Zusammenfügung von Zeichen in einem Listenfeld nicht. Hier muss der Timestamp in Text umgewandelt werden:

SELECT REPLACE(LEFT(RIGHT(CAST("Zeit" AS VARCHAR(30)),15),8),'.',',') AS "Listinhalt", "ID"
FROM "Leistung_erforderlich"

Dies erzeugt die Anzeige in Minuten:Sekunden,Hundertstelsekunden. (Hsqldb)

Gebundenes Feld: Im Listenfeld wird ein Inhalt angezeigt, der nicht mit dem Inhalt identisch sein muss, der auch im Formular abgespeichert werden soll. Üblicherweise wird z. B. Ein Name angezeigt und der Primärschlüssel zu diesem Namen als abzuspeicherndes Feld bestimmt.

SELECT "Name", "ID" FROM "Tabelle" ORDER BY "Name"

Das Feld "ID" wird als Fremdschlüssel in der Tabelle gespeichert, die dem Formular zugrunde liegt. Die Zählung der Felder in Datenbanken beginnt mit 0, das an das Formular gebundene Feld hat also die Position 1.

Wird stattdessen «0» gewählt, dann wird in dem Formular der Inhalt des Feldes "Name" abgespeichert. Das Feld "ID" könnte in der Abfrage entfallen.

Es ist sogar möglich, die Position «-1» zu wählen. Dann wird nicht der Inhalt der Abfrage sondern die Position des Eintrages in der Liste gespeichert. Der erste Datensatz hat dabei die Position 1.

Die oben aufgeführte Abfrage ergäbe z. B. die folgenden Daten:

Name

ID

Anneliese

2

Dorothea

3

Sieglinde

1

 

Im Listenfeld könnte nur der Name ausgewählt werden. Das Listenfeld wird auf den Namen «Dorothea» eingestellt. Folgende Abspeicherungen würden über das Listenfeld möglich:
Gebundenes Feld = 1 → «3» wird abgespeichert, da das Feld "ID" gespeichert wird.
Gebundenes Feld = 0 → «Dorothea» wird abgespeichert, da das Feld "Name" gespeichert wird.

Gebundenes Feld = -1 → «2» wird abgespeichert, da «Dorothea» als zweiter Datensatz in der Liste aufgeführt wird.

Hinweis

Die Änderung des gebundenen Feldes auf «0» oder «-1» ist erst mit der Version LO 4.1 eingeführt worden. Vorher war nur die Auswahl von Werten >= 1 möglich.

Hinweis

Ein Listenfeld zeigt in der Regel nicht nur die Werte an, die z.B. über SQL dargestellt werden. Als erstes wird ein leeres Feld (NULL) zur Auswahl angeboten. Dies ist notwendig, damit einmal eingegebene Daten über das Listenfeld auch wieder entfernt werden können.

Soll von vornherein ausgeschlossen werden, dass das leere Feld angeboten wird, so ist die zugrundeliegende Tabelle für das Formular entsprechend einzustellen. Das Feld muss über Feldeigenschaften → Eingabe erforderlich → Ja so eingestellt sein, dass NULL nicht erlaubt ist.

Ereignisse

Neben den Standardereignissen werden folgende Ereignisse hinzugefügt:

Aktion ausführen: Wird durch Tastatureingabe ein Listenfeld dazu veranlasst, einen entsprechenden Inhalt anzuzeigen, so ist dies eine Aktion, die das Listenfeld ausführt.
Auch die Auswahl des Wertes aus einem Listenfeld entspricht dieser Aktion.

Status geändert: Dies kann die Änderung des angezeigten Inhaltes eines Listenfeldes durch Betätigen des Aufklappbuttons sein. Es kann auch lediglich ein Klicken auf den Aufklappbutton des Feldes sein.

Fehler aufgetreten: Das Ereignis lässt sich leider beim Listenfeld nicht nachvollziehen.

Kombinationsfeld

Sobald ein Kombinationsfeld erstellt wird erscheint wie beim Listenfeld standardmäßig ein Assistent. Diese Automatik lässt sich gegebenenfalls über Assistenten an/aus (Abbildung 3) abschalten.

Kombinationsfelder schreiben direkt den ausgewählten Wert in die dem Formular zugrundeliegende Tabelle. Deshalb ist im folgenden Beispiel die dem Formular zugrundeliegende Tabelle die Tabelle "Leser" und die für das Kontrollfeld gewählte Tabelle ebenfalls die Tabelle "Leser".

Assistent