Base

Kapitel 4
Formulare

Dokumentationen zu LibreOffice unter de.libreoffice.org

Copyright
Dieses Dokument unterliegt dem Copyright © 2012. 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/oderweitergeben.
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

Jürgen Thomas

Michael Niedermair

Jochen Schiffers

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 undanderer persönlicher Daten, die die E-Mail enthält, wird öffentlich archiviert und kannnicht gelöscht werden. Also, schreiben Sie mit Bedacht!

Datum der Veröffentlichung und Softwareversion
Veröffentlicht am 10.8.2013. Basierend auf der LibreOffice Version 4.1

Anmerkung für Macintosh Nutzer
Einige Tastenbelegungen (Tastenkürzel) und Menüeinträge unterscheiden sich zwischen derMacintosh 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.

2

Windows/Linux

entspricht am Mac

EffektMenü-Auswahl Extras →Optionen

LibreOffice →EinstellungenZugriff auf die Programmoptionen

Rechts-Klick

Control+Klick
ControlÖffnen eines Kontextmenüs

Ctrl (Control)oder Strg (Steuerung)⌘ (Command)

Tastenkürzel in Verbindung mit anderen
TastenF5Shift+⌘
F5
Shift ⌘+F5

Öffnen des Dokumentnavigator-Dialogs

F11

⌘+T
T

Öffnen des Formatvorlagen-Dialogs

Formulare

Inhalt
Formulare als Eingabeerleichterung .............................................................................................. 4
Erstellung von Formularen ............................................................................................................. 4
Einfaches Formular ................................................................................................................... 4
Symbolleisten des Formularentwurfs ......................................................................................... 6
Formulargründung über den Navigator ................................................................................. 6
Formulargründung über ein Formularfeld .............................................................................. 7
Externe Formulare ................................................................................................................ 9
Formular-Eigenschaften ................................................................................................................. 9
Eigenschaften der Kontrollfelder .............................................................................................. 12Standardeinstellungen vieler Kontrollfelder ......................................................................... 13
Textfeld ............................................................................................................................... 20
Numerisches Feld ............................................................................................................... 21
Datumsfeld .......................................................................................................................... 21
Zeitfeld ................................................................................................................................ 22
Währungsfeld ...................................................................................................................... 23
Formatiertes Feld ................................................................................................................ 23
Listenfeld ............................................................................................................................ 24
Kombinationsfeld ................................................................................................................ 30
Markierfeld .......................................................................................................................... 32
Optionsfeld .......................................................................................................................... 34
Grafisches Kontrollfeld ........................................................................................................ 34
Maskiertes Feld ................................................................................................................... 35
Tabellen-Kontrollfeld ........................................................................................................... 36
Beschriftungsfeld ................................................................................................................ 38
Gruppierungsrahmen .......................................................................................................... 39
Schaltfläche ........................................................................................................................ 42
Grafische Schaltfläche ........................................................................................................ 44
Navigationsleiste ................................................................................................................. 44
Verstecktes Steuerelement ................................................................................................. 46
Mehrfachselektion ............................................................................................................... 47
Einfaches Formular komplett erstellt ........................................................................................ 49
Felder als Gruppe hinzufügen ............................................................................................. 49
Felder anpassen ................................................................................................................. 50
Felder einzeln hinzufügen ................................................................................................... 53
Tabellenkontrollfeld ............................................................................................................. 54
Hauptformular und Unterformular ................................................................................................. 59
Eine Ansicht – viele Formulare ..................................................................................................... 72
Fehlermeldungen bei der Eingabe in Formulare .......................................................................... 793

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 einedirekte Verwaltung der Daten unmöglich machen.
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.

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

Arbeitsfläche

Formular
Kontrollfeld 1
Kontrollfeld 2
Kontrollfeld 3
Kontrollfeld ...

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 Formulargemeint 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. Wie die
Erstellung über den Assistenten erfolgt, ist in «Erste Schritte - Einführung in Base» beschrieben:
Dort ist auch erklärt, wie nach der Nutzung des Assistenten das Formular weiter verändert werden
kann.
In diesem Handbuch wird die Erstellung des Formulars ohne den Assistenten erklärt: Außerdem
wird auf die Eigenschaften aller Kontrollfelder eines Formulars eingegangen.

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.

4

Formulare

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 automatischerscheinen, so können sie über Ansicht → Symbolleisten angewählt werden. Ohne dieseSymbolleisten 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 undeingeschaltet ist, ist an den Symbolen ganz rechts in der Leiste zum Formular-Entwurf zu
erkennen.

Erstellung von Formularen

5Abbildung 2: Alle verfügbaren
Schaltflächen der Symbolleiste FormularEntwurf

Symbolleisten des Formularentwurfs
Auf der leeren Fläche soll nun ein Formular entstehen. Dies kann auf verschiedene Artengeschehen:••

Aufruf des Formular-Navigators, von dort Gründung eines Formulars sowie
Erstellung von Formularfeldern und Gründung des Formulars über das dortige
Kontextmenü.

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, dasauf 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.

6

Formulare

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

HinweisSoll 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.

Das Formular erhält standardmäßig den Namen Formular. Diese Bezeichnung kann direkt oderspä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 FormularEntwurfs sind, folgen anschließend häufiger verwendete Formularfelder.

Erstellung von Formularen

7

Abbildung 3: Alle verfügbaren
Schaltflächen der
Symbolleiste FormularSteuerelemente

Abbildung 4: Alleverfügbaren Schaltflächen
der Symbolleiste Weitere
SteuerelementeÜber den Aufruf eines Formularfeldes wird automatisch ein Formular mit gegründet:

8

Formulare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 dergestrichelten Form entsteht anschließend ein Beschriftungsfeld. Jetzt wird zur Erstellung desFormulars 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 Writeroder 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 Formular 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 vonWebformularen ist hier eine Einstellung notwendig. (URL: Ziel, an das die Daten gesandt
werden sollen | Frame: Teil der Zielwebseite, der eventuell separat angesprochen werdenmuss | 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).

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

10•

Art des Inhalts: Hier besteht die Wahl zwischen Tabelle, Abfrage und SQL-Befehl.
Während Tabellen in der Regel immer für Eingaben in einem Formular genutzt werden
können, so ist dies bei Abfragen eventuell nicht der Fall. Näheres dazu im Kapitel'Abfragen'. Gleiches wie für Abfragen gilt auch für die direkten Eingabe eines SQLBefehls. Hier handelt es sich dann lediglich um eine Abfrage, die nicht im
Abfragecontainer von Base sichtbar ist, aber vom Prinzip her die gleiche Struktur
aufweist.

•

Inhalt: Wird unter Art des Inhaltes Tabelle oder Abfrage gewählt, so werden hier alleverfügbaren Tabellen und Abfragen gelistet. Soll ein SQL-Befehl erstellt werden, so
besteht die Möglichkeit, den Abfrageeditor dazu über den Button mit den drei Punkten
rechts von dem Inhaltsfeld aufzurufen.

•

SQL-Befehl analysieren: Wird die Analyse des SQL-Befehls nicht zugelassen (weil z. B.
mit Code gearbeitet wird, den die GUI eventuell nicht richtig deuten kann), so ist hier
'Nein' zu wählen. Allerdings schließt dies aus, dass das Formular weiterhin noch mit derFilterung oder mit der Sortierung auf die zugrundeliegenden Daten zugreifen kann.

•Filter: Hier kann ein Filter gesetzt werden. Hilfe dazu bietet ein Klick auf den Button
rechts von dem Eingabefeld. Siehe auch das Kapitel 'Tabellen'.

•Sortierung: Hier kann eine Sortierung der Daten festgelegt werden. Hilfe dazu bietet ein
Klick auf den Button rechts von dem Eingabefeld. Siehe auch hierzu das Kapitel'Tabellen'.

•Daten hinzufügen: Sollen neue Daten erstellt werden können? Standardmäßig ist dies
auf Ja eingestellt.

•

Daten ändern: Sollen Daten geändert werden können? Ebenfalls Standard Ja.

•

Daten löschen: Auch das Löschen von Daten wird standardmäßig ermöglicht.

Formulare•

Nur Daten hinzufügen: Ist dies gewählt, so erscheint immer ein leeres Formular. Auf diealten Datensätze besteht kein Zugriff, sie können nicht bearbeitet oder auch nur
angesehen werden.

•

Navigationsleiste: Das Erscheinen der Navigationsleiste am unteren Bildschirmrandkann angeschaltet oder ausgeschaltet werden. Außerdem besteht die Möglichkeit, bei
einem Unterformular immer die Navigationsleiste des darüberliegenden Hauptformulars
anzeigen zu lassen, so dass eine Betätigung der Navigationsleiste direkte Auswirkung
auf das Hauptformular hat.
Diese Einstellung zur Navigationsleiste betrifft nicht die Leiste, die gegebenenfalls als
Formularfeld eingefügt werden kann.

•Zyklus: Standard bedeutet hier für Base-Datenbanken, dass nach der Eingabe im
letzten Feld innerhalb eines Formulars mit dem Tabulator zum ersten Feld des nächsten
Datensatzes, also gegebenenfalls eines neuen Datensatzes, gesprungen wird. Dies ist
für die Datenbanken gleichbedeutend mit «Alle Datensätze». Wird hingegen bei
Datenbanken «Aktueller Datensatz» gewählt, so bewegt sich der Cursor nur innerhalb
des einen Datensatzes, beim Erreichen des letzten Feldes also zum ersten Feld desgleichen Datensatzes.
Aktuelle Seite bezieht sich wieder besonders auf HTML-Formulare. Hier springt dann
der Cursor vom Ende eines Formulars gegebenenfalls zum nächsten Formular auf der
Seite, das weiter unten liegt.

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 Formularwird 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 derNavigationsleiste aktualisiert
wird.
Entladen: Nach einigen Tests
scheint dies ohne Funktion zu
sein. Erwartet würde der Ablauf
eines Formulars beim Schließen
des Formulars.

Formular-Eigenschaften

11Datensatzaktion: Dies ist z. B. das Abspeichern mittels Button. Im Test ergibt sich, dass diese
Aktion regelmäßig doppelt erscheint, d. h. Makros werden direkt nacheinander zweimalabgearbeitet.
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.
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 dannbeim 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:•••

Die meisten zeigen den Inhalt aus der Datenbank an oder nehmen die Daten entgegen, diein die Datenbank eingefügt werden.
Andere Kontrollfelder dienen zur Navigation, zum Suchen und zur Ausführung vonBefehlen dienen (Interaktion).
Weitere Kontrollfelder sorgen für eine zusätzliche grafische Aufarbeitung des Formulars.

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 nochdie 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 ineine Datenbank über eine Pfadangabe

Maskiertes Feld

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

Tabellen-Kontrollfeld

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

12

Formulare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
GrafikNavigationsleiste

Leiste mit geringen Abweichungen zu der, die am unteren Bildschirmrandangezeigt 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

Standardeinstellungen vieler Kontrollfelder
Die Eigenschaften werden wie beim Formular in drei Kategorien unterteilt: Allgemein, Daten undEreignisse. Unter Allgemein wird all das eingestellt, was für den Nutzer sichtbar ist. In derKategorie 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.

Formular-Eigenschaften13

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

HinweisBeispiel:
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».

14

Formulare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 nichtverwendbar 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 desWertes 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 Regelmit dem Tabulator navigiert.
Ein Feld, das z. B. nur gelesen wird,
braucht keinen Stop des Tabulators,
würde also übersprungen.
[Tabstop]

Formular-Eigenschaften15

Hat das Feld einen Tabstop? Hierwird die Reihenfolge innerhalb desFormulars 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 | 3DLook | Flach[Border]
Wenn ein Rahmen, dann kann hierdie Umrandungsfarbe eingestellt
werden.
[BorderColor]Markierter Text wird so nicht mehrals markiert angezeigt, wenn das
Textfeld den Fokus verliert.
[HideInactiveSelection]
Gut nutzbar für Informationen, diemittels Makros ausgelesen werdensollen, siehe hierzu das Kapitel'Makros'.
[Tag]
16

Formulare

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 Feldausgewählt ist und die Maus sichüber dem Feld befindet; Immer
bedeutet, dass sich die Maus überdem 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 hiereinstellen, 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 Wiederholunginterpretiert wird.
[RepeatDelay]

Formular-Eigenschaften17DatenDatenfeld: 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]

18

Formulare

Ereignisse
Modifiziert: Dieses Ereignis tritt ein, wenn das Kontrollfeld geändert wurde und anschließend
den Fokus verloren hatte.
Text modifiziert: Direkt auf den Inhalt bezogen; kann Text, Zahl o.a. sein, tritt also nach jeder
Tastatureingabe auf.
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. Eine Taste wird z. B. dann bereits losgelassen, wenn die
Bewegung durch das Formular mit dem Tabulator erfolgt. Durch die Tabulatortaste erhält ein
Feld den Fokus. Jetzt kommt das Loslassen der Tabulatortaste.
Maus: selbsterklärend; Ereignisse treten nur ein, wenn vorher die Maus innerhalb des Feldes
ist oder war («außerhalb» entspricht javascript onMouseOut).
Zurücksetzen: Das Formular wird von allen Daten geleert. Dies tritt z. B. beim Anlegen eines
neuen Datensatzes ein. 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.

Formular-Eigenschaften

19

Aktualisieren: Ist dies Ereignis an ein Kontrollfeld des Formulars gebunden, so tritt die
Aktualisierung bei Fokusverlust und Sprung zu einem anderen Formularfeld auf, wenn derInhalt 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.

TextfeldNeben 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 derDatenbank ü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 werdenkann). Bei mehrzeiligen Feldern ist
die vertikale Ausrichtung nicht aktiv.
[MultiLine]
Unix oder Windows? Prinzipiell
funktionieren beide Endungen. Internmü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

20

Formulare

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 Feldeinnehmen kann. Sollte mit dem
Mindestwert übereinstimmen, der inder 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]

Formular-Eigenschaften21

Maximalwert.
[DateMax]
Kurzform wie 10.02.12 sowie
unterschiedliche Formen auch mit'/' statt '.' oder '-' inamerikanischer Schreibweise.
[DateFormat]
Hier kann ein festes Datum
vorgegeben werden. Das aktuelle
Datum (Heute) beim Aufruf desFormulars muss leider (noch) durch
ein Makro eingetragen werden.
[DefaultDate]
Ein Monatskalender zur Auswahl desTages 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.

ZeitfeldNeben 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, Langformmit Sekunden sowie Benennungenmit PM (post meridiem / Nachmittag)[TimeFormat]
Eine feste Zeit ist voreinstellbar, dieaktuelle Zeit beim Abspeichern desFormulars leider (bisher) nur mit
Makro.
[DefaultTime]

22

FormulareDatenEs 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, abernicht in der dem Formularzugrundeliegenden Tabelle mit
abgespeichert.
[CurrencySymbol]
Soll das Symbol vor oder hinter derZahl 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]

Formular-Eigenschaften

23

Abbildung 5: Formatiertes Feld mit allgemeinen ZahleneinstellungenIn 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. Siehedazu die allgemeine Hilfe zu Zahlenformat-Codes.
Datenkeine 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.

24

Formulare

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 derPrimärschlüssel aus der Tabelle "Leser". Die Tabelle "Leser" bildet also die Grundlage für das
Listenfeld.

Formular-Eigenschaften25

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
26

Formulare

"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 funktionsfä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 überdas Formular an die Tabelle
weitergegeben werden.
[StringItemList]
Wird das Feld als nicht aufklappbar
festgelegt, so erscheinen bei Aufruf
des Formulars am rechten Rand desListenfeldes 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 übermehr 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 Feldeigentlich nur einen Wert einnehmensollte. Gegebenenfalls kann eine
Auswertung des Eintrags in das
Listenfeld über Makros hier Abhilfe
schaffen.
[MultiSelection][MultiSelectionSimpleMode]

Formular-Eigenschaften27

Schon der deaktivierte Button macht
deutlich, dass auch eineStandardselektion bei einer
Verbindung mit einer
Datenbanktabelle, wie über den
Listenfeldassistenten erzeugt, wenig
Sinn macht. Schließlich kann es
passieren, dass der derStandardselektion 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 hierdie entsprechenden Werte eingegeben, die an mit dem Formular abgespeichert werden sollen.
Der Listeninhalt wird bestückt, indem bei der Eingabe die Inhalte über Shift – Enteraneinandergehä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. Allerdings ist dies nur
selten möglich, denn die Inhalte der Tabelle müssen so strukturiert sein, dass das erste
Tabellenfeld den Inhalt wiedergibt, der durch das Listenfeld angezeigt wird, eins der folgenden
Felder dann den Primärschlüssel an die dem Formular zugrundeliegende Tabelle als
Fremdschlüssel weitergibt. Die Lage dieses Feldes innerhalb der Tabelle wird über'Gebundenes Feld' angegeben, wobei die Nummerierung mit 0 für das erste Feld derDatenbanktabelle beginnt. Diese 0 ist allerdings für den anzuzeigenden Wert vorgesehen,d.h. beim obigen Beispiel für "Nachname", während die 1 auf das Feld "ID" verweist.

Hinweis28

Ab LO 4.1 ist es auch möglich, das gebundene Feld auf den Wert '-1' zu stellen. In
diesem Fall wird die Position, an der sich der Listeninhalt befindet, in der
darunterliegenden Tabelle abgespeichert.
Der Wert '0' bleibt weiterhin dem anzuzeigenden Wert vorbehalten. Wird das
gebundene Feld auf '0' eingestellt, so wird der Inhalt nicht nur angezeigt sondern
auch abgespeichert.

Formulare

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 derPrimä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".

HinweisFü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(CONVERT("Leistung_erforderlich"."Zeit",
VARCHAR),15),8),'.',',') AS "Listinhalt", "ID"FROM "Leistung_erforderlich"
Dies erzeugt die Anzeige in Minuten:Sekunden,Hundertstelsekunden.

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.

Formular-Eigenschaften

29

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 Formularzugrundeliegende 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

Das Formular ist wieder vordefiniert, diesmal als Beispiel mit der Tabelle "Leser". Da die Daten,
die in dem Listenfeld angezeigt werden, auch in dieser Tabelle abgespeichert werden sollen,
wird als Quelle für die Daten des Listenfeldes ebenfalls die Tabelle "Leser" ausgewählt.

30

FormulareIn der Tabelle "Leser" befindet sich das Feld "Vorname". Es soll im Kombinationsfeld angezeigt
werden.

Innerhalb einer Datenbank scheint es wenig Sinn zu machen, den Wert desKombinationsfeldes nicht in einem Feld zu speichern. Aus der Tabelle "Leser" sollen die
Formular-Eigenschaften

31

Vornamen ausgelesen werden und für neue Leser als Vornamen zur Verfügung stehen, damit
bei gleichen Vornamen eben nicht immer wieder eine neue Eingabe erfolgen muss. Das
Kombinationsfeld zeigt dann hier den Vornamen an und die Texteingabe braucht nicht weiter
durchgeführt zu werden.
Soll ein neuer Wert eingegeben werden, so ist dies im Kombinationsfeld ohne weiteres
möglich, denn das Kombinationsfeld zeigt genau das an, was es selbst an die
zugrundeliegende Tabelle des Formulars weitergibt.
Neben den bereits unter Standardeinstellungen vieler Kontrollfelder und beim Listenfeld erklärten
Eigenschaften gibt es die folgenden Besonderheiten:
Allgemein
Während der Eingabe von neuen
Werten wird eine Liste der eventuell
zutreffenden Werte angezeigt, dienoch zur Auswahl stehen.
[AutoComplete]
Daten

Die Datenfeldern entsprechen den bereits vorgestellten Standardeinstellungen und den
Einstellungen bei einem Listenfeld. Der SQL-Befehl weist hier allerdings eine Besonderheit auf:
SELECT DISTINCT "Vorname" FROM "Leser"
Durch den Zusatz des Begriffes DISTINCT werden gleiche Vornamen nur einmal angezeigt.
Wieder fehlt allerdings bei der Erstellung durch den Assistenten eine Sortierung der Inhalte.
Ereignisse
Die Ereignisse entsprechen denen beim Listenfeld.

Markierfeld
Das Markierfeld erscheint direkt als eine Kombination von Markierbox und Beschriftung dieser Box.
Neben den bereits unter Standardeinstellungen vieler Kontrollfelder erklärten Eigenschaften gibt es
die folgenden Besonderheiten:

32

FormulareAllgemein
Die Beschriftung dieser Box,erscheint standardmäßig rechts vonder Box. Zusätzlich ist noch eine
Verbindung zu einem
Beschriftungsfeld möglich.
[Label]Hier gibt es, abhängig von der
Auswahl in 'Dreifacher Status', bis zu
drei Möglichkeiten: Nicht ausgewählt| Ausgewählt | Nicht definiert. Nicht
definiert entspricht als Eintrag in derdem Formular zugrundeliegenden
Tabelle NULL.
[State]Standardmäßig wird der Titel nicht
umgebrochen. Ein zu langer Titel
wird abgeschnitten, wenn das Feld
nicht groß genug ist.
[MultiLine]
Hier kann eine Grafik statt bzw.
zusätzlich zum Titel eingefügt
werden. Dabei sollte beachtet
werden, dass die Grafiken
standardmäßig erst einmal nicht indas *.odb-Dokument eingebunden
werden. Sinnvoll bei kleinen
Grafiken ist es, die Grafiken
einzubetten und nicht zu verknüpfen.
[Graphic]
Ist eine Grafik ausgewählt, so kannsie im Verhältnis zum Titel
ausgerichtet werden.
[ImagePosition](0=links | 1=zentriert | 2=rechts)
Standardmäßig gibt es fürMarkierfelder nur Ausgewählt(Wert: 1) und Nicht ausgewählt(Wert: 0). Beim dreifachen Status
kommt die Definition als leeres Feld
(NULL) hinzu.
[TriState]

Formular-Eigenschaften33

DatenDem Markierfeld kann ein Referenzwert zugewiesen werden. Allerdings wird an das
darunterliegende Datenfeld nur der Wert 1 für (ein) und 0 für (aus) weitergegeben. Schließlich
werden Markierfelder als Felder für die Auswahl von 'Ja' und 'Nein' genutzt.
Ereignisse
Es fehlen die Felder «Modifiziert», «Text modifiziert». «Vor der Aktualisieren» und «Nach dem
Aktualisieren».
Zusätzlich erscheinen «Aktion ausführen» (siehe Listenfeld) und «Status geändert» (entspricht«Modifiziert»).

Optionsfeld
Das Optionsfeld entspricht bis auf eine Ausnahme in den allgemeinen Eigenschaften und dieäußerlich andere Form (rund) dem eben beschriebenen Markierfeld.
Werden mehrere Optionsfelder mit einem Tabellenfeld über das Formular verbunden, so kann vonden Optionen immer nur eine Option gewählt werden.
Allgemein
Das Optionsfeld wird bevorzugt für
Gruppierungen verwandt. Zwischen
mehreren Optionen kann dannausgewählt werden. Deswegenerscheint hier auch derGruppenname, unter dem die Option
angesprochen werden kann.
[GroupName]
Daten
Siehe Markierfeld, hier werden aber die Referenzwerte, die eingetragen wurden, auchtatsächlich an das Datenfeld weitergegeben.
Ereignisse
Siehe Markierfeld

Grafisches Kontrollfeld
Ein grafisches Kontrollfeld übernimmt die Eingabe und Ausgabe von Bildmaterial in die Datenbank.
Das darunterliegende Datenfeld muss ein Binärfeld sein.

34

Formulare

Die Eingabe in das grafische Kontrollfeld erfolgt entweder über einen Doppelklick mit der Maus;
dann erscheint ein Dateiauswahlfenster. Oder sie erfolgt über einen Klick der rechten Maustaste;dann kann ausgewählt werden, ob die Grafik nur gelöscht oder eine andere geladen werden soll.
Ein Grafisches Kontrollfeld erhält standardmäßig erst einmal keinen Tabstop.
Neben den bereits unter Standardeinstellungen vieler Kontrollfelder erklärten Eigenschaften gibt es
die folgenden Besonderheiten:
Allgemein
Die hier ausgesuchte Grafik wird nur
im Kontrollfeld angezeigt, wenn das
Formular bearbeitet wird. Für die
spätere Eingabe ist sie ohne
Bedeutung.
[Graphic]
Nein: Das Bild wird nicht an das
Kontrollfeld angepasst. Ist das Bildzu groß, so wird ein Ausschnitt desBildes gezeigt. Das Bild wird nichtverzerrt.
Seitenverhältnis beibehalten: Das
Bild wird in das Kontrollfeld
eingepasst, aber nicht verzerrt
dargestellt.
Autom. Größe: Das Bild wird derGröße des Kontrollfeldes angepasst
und gegebenenfalls verzerrt
dargestellt.
[ScaleImage] [ScaleMode]Datenkeine weiteren Besonderheiten
Ereignisse
Es fehlen die Ereignisse «Modifiziert», «Text modifiziert», «Vor dem Aktualisieren» und «Nach
dem Aktualisieren».

Maskiertes Feld
Mittels einer Eingabemaske wird hier die Eingabe in das Feld gesteuert. Zeichen werden für einebestimmte Position vorgegeben, einzugebende Zeichen in ihrer Eigenschaft festgelegt. Die
vorgegebenen Zeichen werden dann mit abgespeichert.
Neben den bereits unter Standardeinstellungen vieler Kontrollfelder erklärten Eigenschaften gibt es
die folgenden Besonderheiten:
Allgemein
Hier wird festgelegt, welche Inhalte
eingegeben werden können.
[EditMask]

Formular-Eigenschaften

35Diese Ansicht wird dem
Formularnutzer präsentiert.
[LiteralMask]
Der folgende Inhalt entstammt der LibreOffice-Hilfe:
Die Länge der Eingabemaske bestimmt, wie viele Stellen die mögliche Eingabe haben darf.
Sollten die vom Benutzer eingegebenen Zeichen der Eingabemaske nicht entsprechen, so wird
die Eingabe beim Verlassen des Kontrollfelds verworfen. Zur Definition der Eingabemaske
stehen die folgenden Zeichen zur Verfügung:
ZeichenL

BedeutungEine Textkonstante. Diese Stelle kann nicht editiert werden. Das Zeichen wird an
der entsprechenden Position der Zeichenmaske angezeigt.

aEs können die Buchstaben a-z und A-Z eingegeben werden. Großbuchstaben
werden nicht in Kleinbuchstaben konvertiert.

A

Es können die Buchstaben A-Z eingegeben werden. Eingegebene Kleinbuchstaben
werden automatisch in Großbuchstaben konvertiert.

c

Es können die Buchstaben a-z und A-Z sowie die Ziffern 0-9 eingegeben werden.
Großbuchstaben werden nicht in Kleinbuchstaben konvertiert.

C

An dieser Stelle können die Zeichen A-Z und 0-9 angegeben werden. Wird ein
Kleinbuchstabe angegeben, wird automatisch in Großschrift umgewandelt.

N

Es können nur die Zeichen 0-9 angegeben werden.

x

Es können alle druckbaren Zeichen angegeben werden.

X

Es können alle druckbaren Zeichen angegeben werden. Wird dabei ein
Kleinbuchstabe verwendet, wird automatisch in Großschrift umgewandelt.

Definieren Sie z. B. für die Zeichenmaske «__.__.2000» die Eingabemaske «NNLNNLLLLL»,
um dem Benutzer nur noch die Eingabe von 4 Ziffern zur Datumsangabe zu ermöglichen.
Datenkeine weiteren Besonderheiten
Ereignisse
Es fehlt das Ereignis «Modifiziert»

Tabellen-Kontrollfeld
Dieses Kontrollfeld ist das umfassendste Feld. Es stellt eine Tabelle bereit, die wiederum durch
Kontrollfelder für die einzelnen Spalten beschickt werden kann. Damit ist bei der Eingabe nicht nur
der Blick auf die aktuell einzugebenden Daten, sondern auch auf vorher eingegebene Datenmöglich, ohne mit der Navigationsleiste durch die Datensätze zu scrollen.
Nicht alle Felder, die auch im Formular möglich sind, können im Tabellen-Kontrollfeld wieder
ausgewählt werden. So fehlen z. B. Schaltflächen, das grafische Kontrollfeld und das Optionsfeld.
Ein Assistent für das Tabellen-Kontrollfeld stellt in einem Fenster die Felder zusammen, dieanschließend in der Tabelle zur Verfügung stehen sollen.

36

FormulareIn dem Kontrollfeld soll die Tabelle "Ausleihe" zur Bearbeitung zur Verfügung stehen. Bis auf die
Felder "ID" (Primärschlüssel) und das Feld "Medien_ID_BC" (Eingabe der Medien über einen
Barcodescanner) sollen alle Felder in dem Kontrollelement benutzt werde.

Abbildung 6: Ergebnis des Tabellen-Kontrollfeld-Assistenten
Das erst einmal erstellte Tabellen-Kontrollelement muss hier noch weiter bearbeitet werden, da ja
nur die Eingaben der Tabelle "Ausleihe" ermöglicht werden. Für Felder wie "Leser_ID" oder"Medien_ID" wäre es aber sinnvoller, statt einer Nummer den Leser bzw. das Medium selbst
auswählen zu können. Herzu werden innerhalb des Tabellen-Kontrollelementes z. B. Listenfelder
eingesetzt. Entsprechendes ist weiter unten beschrieben. Auch die Formatierung des Feldes"Verlängerung" mit zwei Nachkommastellen ist sicher nicht gewollt.
Neben den bereits unter Standardeinstellungen vieler Kontrollfelder erklärten Eigenschaften gibt es
die folgenden Besonderheiten:

Formular-Eigenschaften37

Allgemein
In welcher Höhe sollen die einzelnen
Zeilen angezeigt werden. Ohneeinen Wert wird die Höhe
automatisch der Schriftgröße
angepasst. Mehrzeilige Textfelder
würden so nur einzeilig zum Scrollen
angezeigt.
[RowHeight]
Wie bei Tabellen werden am unteren
Rand des Kontrollfeldes die
Datensatznummer und
Navigationshilfen angezeigt.
[HasNavigationBar]
Am linken Rand des Kontrollfeldes
befindet sich standardmäßig derDatensatzmarkierer. Er zeigt den
aktuellen Datensatz an. Über den
Datensatzmarkierer wird die
Löschfunktion für den gesamten
Datensatz zur Verfügung gestellt.
[HasRecordMarker]
Daten
Da es sich um ein Feld handelt, das selbst keine Daten anzeigt oder abspeichert, sondern
stattdessen andere Felder verwaltet, die dies tun, gibt es keine Eigenschaft Daten.
Ereignisse
Es fehlt das Ereignis «Modifiziert» und «Text modifiziert». Das Ereignis «Fehler aufgetreten»kommt hinzu.

Beschriftungsfeld
Neben den bereits unter Standardeinstellungen vieler Kontrollfelder erklärten Eigenschaften gibt es
die folgenden Besonderheiten:
Allgemein
Der Titel dient als Beschriftung für
ein anderes Kontrollfeld. Wird der
Titel mit einem Kontrollfeld
verbunden, dann kann er auch als
Sprungziel für dieses Kontrollfeld
festgelegt werden. Mit einem
eingefügten «~» kann ein
bestimmter Buchstabe des Titels als
Sprungziel angegeben werden.
«Na~me» definiert das «m» als
Sprungziel. Befindet sich der Cursor
in dem Formular, so wird die
Schaltfläche über Alt + m erreicht.

38

Formulare

Standardmäßig wird die Beschriftung
nicht umgebrochen. Ein zu langer
Titel wird abgeschnitten, wenn das
Feld nicht groß genug ist. Der Wortumbruch hat allerdings keine
Trennfunktion, so dass bei zu
kleinen Feldern innerhalb eines
Wortes ein Umbruch erfolgt.
[MultiLine]
Daten
keine
Ereignisse
Selbst das Beschriftungsfeld reagiert noch auf Ereignisse, die mit der Maus einer Taste oderdem Fokuserhalt zusammenhängen.

Gruppierungsrahmen
Der Gruppierungsrahmen fasst lediglich grafisch mehrere Kontrollfelder zu einer Gruppe
zusammen und versieht sie mit einem zusätzlich grafisch eingebundenen Titel.
Wird ein Gruppierungsrahmen mit eingeschaltetem Assistenten aufgezogen, so geht des Assistent
davon aus, dass mehrere Optionsfelder zusammen in diesem Rahmen erscheinen sollen.

Dem Formular liegt die Tabelle Leser zugrunde. Hier wird gerade die Auswahl des Geschlechtes
zusammengestellt. Die Einträge sind anschließend die Beschriftungen der Optionsfelder.

Formular-Eigenschaften

39

Standardmäßig wird hier vorgewählt, dass das Geschlecht «weiblich» angewählt wird. Wird kein
Feld vorgewählt, so ist der Standardeintrag in die zugrundeliegende Tabelle NULL.

Den Optionsfeldern wird bereits standardmäßig durch den Assistenten ein jeweils separater Wert
zugeteilt. Da dieser Wert in unseremn Fall nicht dem des Primärschlüssels entspricht, wird er
geändert, und zwar für «männlich» auf den Wert 'm', für «weiblich» auf den Wert 'w'. Diese Werte
entsprechen in dem Beispiel den Primärschlüsselfeldern der Tabelle "Geschlecht"

40

Formulare

Der jeweils in den Optionsfeldern angeklickte Wert wird an das Feld "Geschlecht_ID" der dem
Formular zugrundeliegenden Tabelle "Leser" übertragen. Die Tabelle "Leser" wird also über ein
Optionsfeld mit den entsprechenden Fremdschlüsseln der Tabelle "Geschlecht" versorgt.

Die Gruppe der Optionsfelder erhält einen Rahmen, in den die Beschriftung 'Geschlecht' eingefügt
wird.

Formular-Eigenschaften41

Wird jetzt bei aktivem Formular 'männlich' ausgewählt, so wird gleichzeitig 'weiblich' abgewählt.
Dies ist ein Kennzeichen der Optionsfelder, wenn sie mit dem gleichen Feld der dem Formularzugrundeliegenden Tabelle verbunden sind. In dem obigen Beispiel ersetzen die Optionsfelder so
ein Listenfeld mit zwei Einträgen.
Neben den bereits unter Standardeinstellungen vieler Kontrollfelder erklärten Eigenschaften gibt es
die folgenden Besonderheiten:
Allgemein
Der Titel kann neben den Standardeinstellungen verändert werden. Eine Veränderung desRahmens (Liniendicke, Linienfarbe) ist zur Zeit nicht vorgesehen, wohl aber eine Formatierung
der Schrift.
Daten
Keine, fasst schließlich Eingabefelder nur optisch zusammen.
Ereignisse
Auch der Gruppierungsrahmen reagiert noch auf Ereignisse, die mit der Maus einer Taste oderdem Fokuserhalt zusammenhängen.

Schaltfläche
Neben den bereits unter Standardeinstellungen vieler Kontrollfelder erklärten Eigenschaften gibt es
die folgenden Besonderheiten:
Allgemein
Beschriftung auf der Schaltfläche.
Mit einem eingefügten «~» kann ein
bestimmter Buchstabe des Titels als
Sprungziel angegeben werden.
«Schal~fläche» definiert das «f» als
Sprungziel. Befindet sich der Cursor
in dem Formular, so wird die
Schaltfläche über Alt + f erreicht.
[Label]Die Schaltfläche erhält den Fokus,
wenn auf sie geklickt wird.
[FocusOnClick]
Wenn ja, so kann die Schaltfläche
auch eingedrückt dargestellt werden.
Der Schaltzustand wird wie bei
einem Schalter angezeigt – imGegensatz zu einem Taster wie
sonst bei Buttons.
[Toggle]42

Formulare

Aktiv, wenn Umschalten auf Ja
gesetzt ist. Ausgewählt ist dann dereingedrückte Zustand.
[DefaultState]
Wortumbruch, wenn die Schaltfläche
zu schmal ist.
[MultiLine]
Verschiedene Aktionen ähnlichdenen der Navigationsleiste stehen
zur Verfügung.
Es kann hier auch ein Dokumentoder eine Webseite geöffnet werden.
Hierzu ist die URL in dem folgenden
Feld einzugeben.
HTML: Datei, die hiermit aufgerufen
werden soll. Hierzu muss unter'Aktion' 'Dokument/Webseite öffnen'
gewählt werden.
Neben HTML kann dies auchgenutzt werden, um bestimmte
Programmmodule von LO
aufzurufen. So wird mit dem hiereinzutragenden Befehl'.uno:RecSearch' z. B. die
Suchfunktion aus dem
Formularnavigator auf einen Button
gelegt.
Außerdem lassen sich auch z. B.
Writerdateien öffnen, dieanschließend per Druck einen mit
der Datenbank
zusammenhängenden Serienbriefausgeben.
Welche Befehle hier zur Verfügung
stehen lässt sich über den
Makrorecorder gegebenenfalls
feststellen.
[TargetURL]
Nur für HTML-Formulare: Der
Ziel-Frame (Rahmeneinteilung fürverschiedene HTML-Seiten) , in dem
die Datei geöffnet werden soll.
[TargetFrame]

Formular-Eigenschaften43

Schaltfläche wird bei Ja zusätzlichumrandet. Bei mehreren alternativen
Schaltflächen auf einem Formularsoll dies die übliche Schaltfläche
kennzeichnen. Sie wird durch
Betätigung der Eingabetaste
ausgelöst, wenn keine andere Aktion
gerade auf die Eingabetaste
reagieren muss. Nur eine
Schaltfläche sollte im Formular die
Standardschaltfläche sein.
[DefaultButton]
Soll eine Grafik auf der Schaltfläche
erscheinen?
[Graphic] [ImageURL]
Nur aktiv, wenn eine Grafik
ausgewählt wurde. Die Grafik wird
im Verhältnis zum Text angeordnet.
[ImagePosition] [ImageAlign]
Daten
Keine, es werden nur Aktionen ausgeführt.
Ereignisse«Aktion bestätigen», «Aktion ausführen» und «Statusänderung»Grafische Schaltfläche
Neben den bereits unter Eigenschaften der Kontrollfelder erklärten Eigenschaften gibt es die
folgenden Besonderheiten:
Allgemein
Entspricht der normalen Schaltfläche. Allerdings wird diese Schaltfläche ohne Text und ohneeinen sichtbaren Button dargestellt. Lediglich eine Rahmen um die Grafik kann eingestellt
werden.
Eine grafische Schaltfläche erhält standardmäßig erst einmal keinen Tabstop.
Achtung: zur Zeitpunkt der Handbucherstellung funktioniert nahezu keine Aktion mit dieser
Schaltfläche. Sie ist fast ausschließlich mit Makros nutzbar.
Daten
Keine, es werden nur Aktionen ausgeführt.
Ereignisse«Aktion bestätigen» sowie alle Ereignisse, die die Maus, eine Taste oder den Fokus betreffen.

Navigationsleiste

Abbildung 7: Formularkontrollelement Navigationsleiste

44

Formulare

Die Standardnavigationsleiste wird beim Formular am unteren Bildrand eingeblendet. Durch das
Einblenden dieser Leiste kann es beim Bildschirmaufbau zu einem kurzen Zurechtschieben desFormulars kommen. Dies ist vor allem dann störend, wenn die Navigationsleiste eventuell in Teilen
des sichtbaren Formulars ausgeschaltet ist.
Eine separat zu den jeweiligen Elementen eines Formulars angeordnete Navigationsleiste macht
dagegen klar, durch welche Elemente mit der Leiste navigiert wird. Diese Navigationsleiste bietet
die folgenden Elemente:

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

Formular-Eigenschaften45

Allgemein
Die Größe der Symbole kanneingestellt werden. Außerdem ist
auswählbar, welche Gruppen
angezeigt werden. Dies sind in
Abbildung 7 von links nach rechts,
bei den Symbolen durch eine
senkrechte Linie getrennt, die
Positionierung, die Navigation, dieDatensatzaktionen sowie die Gruppe
zur Filterung und Sortierung.
[IconSize][ShowPosition][ShowNavigation][ShowRecordActions][ShowFilterSort]
Daten
Keine, es werden nur Aktionen ausgeführt.
Ereignisse
Alle Ereignisse, die die Maus, eine Taste oder den Fokus betreffen.
Unabhängig von diesem Formularkontrollelement existiert natürlich auch die unten einblendbare
Navigationsleiste mit den Elementen der obigen Abbildung.
Diese einblendbare Navigationsleiste bietet neben den Elementen des entsprechenden
Formularkontrollelementes noch die allgemeine Datensatzsuche, den formularbasierten Filter und
die Darstellung der dem Formular zugrundeliegenden Datenquelle in der Tabellenansicht oberhalb
des Formulars.
Wird nicht nur mit einem Formular, sondern mit Unterformularen und Nebenformularen gearbeitet,
so ist darauf zu achten, dass diese einblendbare Navigationsleiste nicht beim Formularwechsel jenach Einstellung verschwindet. Das erzeugt nur Unruhe auf dem Bildschirm.

Verstecktes Steuerelement

Ein Kontrollfeld, das nicht über die Symbolleisten einfügbar ist, ist das versteckte Steuerelement.
Es wird über den Formularnavigator im Kontextmenü eines Formulars neu erstellt.

46

Formulare

Das versteckte Steuerelement erscheint wie jedes andere Kontrollfeld als Teil des Formulars. Es
ist auf der Benutzeroberfläche nicht sichtbar.

Die kompletten Eigenschaften des versteckten Steuerelementes sind recht spärlich. Der Name und
die Zusatzinformationen sind von den anderen Steuerelemente bekannt. Zusätzlich kann hier ein
Wert angegeben werden. [HiddenValue]
Für die Nutzung ohne Makros ist dies sicher nicht weiter von Bedeutung. Bei der Arbeit mit Makros
kann es aber sinnvoll sein, an einer Stelle des Formular Werte zwischenspeichern zu können, um
auf sie bei einer weiteren Aktion wieder zugreifen zu können. Ein entsprechendes
Anwendungsbeispiel findet sich bei den Makros im Kapitel «Hierarchische Listenfelder».

Mehrfachselektion
Wird mit dem Auswahlpfeil (siehe Abbildung 3) ein größerer Bereich oder sogar sämtliche
Elemente eines Formulars ausgewählt, so sind über diese Mehrfachselektion die Änderungennach Abbildung 8 möglich.

Formular-Eigenschaften47

Abbildung 8: Allgemeine Eigenschaften vonFormularfeldern in der Mehrfachselektion
Den Namen sollte hier möglichst nicht geändert werden. Schließlich lauten so plötzlich alle
Elemente gleich. Das Auffinden eines einzelnen Elementes über den Formularnavigator wird
erschwert, die Verarbeitung des Formulars nach Namensbezeichnung der Kontrollfelder in
Makros unmöglich.
Eher bietet sich eine Mehrfachselektion an, wenn insgesamt die Schriftart, die Höhe oder die
Hintergrundfarbe gewechselt werden soll. Allerdings wirkt sich natürlich die Hintergrundfarbeauch auf die Beschriftungsfelder aus.
Sollen z. B. nur die Beschriftungsfelder geändert werden, so bietet es sich an, bei gedrückter StrgTaste mit der linken Maustaste diese Felder direkt oder im Navigator anzuklicken, mit der rechten
Maustaste über eins der Felder zu gehen und die Kontrollfeldeigenschaften aufzurufen. Jetzt wird
die Auswahl der änderbaren Eigenschaften größer, da ja nur gleiche Felder ausgewählt wurden.
Entsprechend kann hier auch all das geändert werden, was sonst in einem Beschriftungsfeld zur
Verfügung steht.
Die Möglichkeiten der Mehrfachselektion richten sich also nach der Auswahl der Felder. Kontrollfelder der gleichen Art können in allen allgemeinen Eigenschaften, die das einzelne Kontrollfeld
bietet, auf diese Art gemeinsam angepasst werden.

48

Formulare

Einfaches Formular komplett erstellt
Ein einfaches Formular stellt Formularkontrollfelder für das Schreiben oder Lesen von Datensätzen
aus einer einzigen Tabelle oder Abfrage zur Verfügung. Seiner Konstruktion entspricht dem
folgenden Schaubild:Arbeitsfläche

Formular
Kontrollfeld 1
Kontrollfeld 2
Kontrollfeld 3
Kontrollfeld ...

Am Beispiel eines einfachen Formulars für die Bibliotheksausleihe sollen hier verschiedenen
Varianten eines Formulars vorgestellt werden. Die schnelle Variante über den Formularassistenten
schildert bereits das Handbuch «Erste Schritte Base», so dass hier die Erstellung über die
Entwurfsansicht dargestellt wird.

Die Überschrift für das Formular wurde über ein Beschriftungsfeld erzeugt. Die Schrift wurde
geändert. Das Beschriftungsfeld ist am Absatz verankert, der sich in dem Dokument an der linken
oberen Ecke befindet. Über das Kontextmenü des Beschriftungsfeldes wurde ein Formularerzeugt, das mit der Tabelle Ausleihe verbunden wurde (siehe: Formulargründung über ein
Formularfeld). Die Seite wurde außerdem mit einem einfarbigen Hintergrund versehen.

Felder als Gruppe hinzufügen
Eine schnelle Variante, direkt Felder mit Beschriftungen einzufügen, bietet die Funktion
Feld hinzufügen.

Über diese auf der Symbolleiste Formular-Entwurf (siehe Abbildung 2) erreichbaren Funktion
lassen sich alle Felder der dem Formular zugrundeliegenden Tabelle auswählen

Formular-Eigenschaften49Über einen Doppelklick auf die Felder werden sie als Gruppierung zusammen mit einer
Beschriftung (leider alle an die gleiche Stelle) in das Formular eingegliedert. Die Gruppen müssen
also auf jeden Fall noch verschoben werden, damit anschließend das Formular im Einsatz wie das
folgende Bild aussehen kann. Für die bessere Übersicht wurden alle unnötigen Leisten desFensters entfernt und das Fenster entsprechend schmal zusammengeschoben, so dass nicht
mehr alle Elemente der Navigationsleiste sichtbar sind.
Es wurden alle Felder bis auf "Medien_ID_BC" ausgewählt, da dies speziell für die Bedienung mit
einem Barcodescanner gedacht ist.

Abbildung 9: Einfaches Formular über «Feld hinzufügen"Für alle Tabellenfelder wurden die korrekten Formularkontrollfelder ausgesucht. Zahlen werden in
Nummerische Felder gesetzt und gleich als Ganzzahlen ohne Nachkommastellen erkannt.
Datumsfelder werden ebenfalls korrekt als Datumsfelder wiedergegeben. Alle Felder werden in
gleicher Breite dargestellt. Würde ein Grafisches Kontrollfeld eingesetzt, so würde hier ein
quadratisches Feld erzeugt.

Felder anpassen
Gestalterisch kann jetzt einiges getan werden, indem die Felder von der Länge her angepasst
werden und die Datumsfelder aufklappbar gemacht werden. Wichtiger ist aber, dass die Felder fürdie "Medien_ID" und die "Leser_ID" für den Nutzer lösbar werden – es sei denn, jeder

50

FormulareBibliotheksbesucher muss einen Ausweis mit der "ID" mitbringen und jedes Medium wird bei der
Aufnahme mit der "ID" versehen. Hiervon wurde im Folgenden nicht ausgegangen.
Um einzelne Felder anzupassen, muss zuerst einmal die Gruppe betreten werden. Dies kann übereinen rechten Mausklick auf die Gruppe und das entsprechende Kontextmenü erfolgen.
Übersichtlicher für die späteren Verfahren ist allerdings die Arbeit mit dem Formularnavigator.

Abbildung 10: Formularkontrollelemente: Gruppe betreten

Abbildung 11: Formularkontrollelemente über den Formularnavigator direkt
anwählen
Formular-Eigenschaften51

Der Formularnavigator stellt alle Elemente des Formulars mit ihren Bezeichnungen dar. Für die
Kontrollfelder wurden als Bezeichnungen direkt die Namen der Felder aus der dem Formularzugrundeliegenden Tabelle genommen. Die Beschriftungselemente haben den Zusatz«Beschriftung».
Durch einen Klick auf "Medien_ID" ist dieses Feld ausgewählt. Mit einem Rechtsklick wird esüber das Kontextmenü möglich, das ausgewählte Feld durch eine andere Feldart zu ersetzen:

Abbildung 12: Kontrollelemente über den Formularnavigator durchandere Kontrollelemente ersetzen
Diese Ersetzung wird in dem Formular für "Medien_ID" und "Leser_ID" vorgenommen.

Die Änderung ist im Formularnavigator über die Symbole sichtbar.

52

Formulare

Die SQL-Abfragen für die Listenfelder können jetzt über den rechten Button mit der grafischen
Benutzeroberfläche erstellt werden. Der Listenfeldassistent steht hier nicht zur Verfügung.
Er springt nur automatisch ein, wenn ein Listenfeld direkt neu gegründet, nicht aber durch
Umwandlung von einem anderen Feld aus erstellt wird. Zum SQL-Befehl siehe das Kapitel«Abfragen für die Erstellung von Listenfeldern».
Nachdem die Listenfelder als aufklappbar angepasst wurden, können noch die folgenden Mängel
behoben werden:•

Die Beschriftung der Listenfelder sollte auf "Medien" statt "Medien_ID" und "Leser" statt"Leser-ID" geändert werden.

••

Das Kontrollfeld "ID" sollte als nicht beschreibbar erklärt werden.

•

Soll über das Formular die Ausleihe erfolgen, so ist es eigentlich unnötig und auch
unübersichtlich, bereits zurückgegebene Medien angezeigt zu bekommen. Medien mit
einem Rückgabedatum sollten ausgefiltert werden. Außerdem könnte die Reihenfolge derAnzeige nach dem Leser sortiert werden, damit Medien, die von der gleichen Person
entliehen wurden, nacheinander aufgezeigt werden. Siehe dazu die Hinweise unter
Formular-Eigenschaften. Speziell die Lesersortierung hat hier allerdings den Haken, dasslediglich nach der ID, nicht aber nach dem Alphabet sortiert werden kann, da die Tabelle
für das Formular ja nur die ID enthält.

Alle Felder, die nicht beim Aufruf der Ausleihe auf jeden Fall durchlaufen werden müssen,wenn ein neues Medium ausgeliehen wird, benötigen keinen Tabstop. Ohne den Tabstop
geht es schneller durch das Formular. Eventuell muss der Tabstop auch über die
Aktivierungsreihenfolge (siehe Abbildung 2) nachjustiert werden. Lediglich die Felder
Medien, Leser und Leihdatum müssen für eine Ausleihe auf jeden Fall über den Tabulator
erreichbar sein.

Felder einzeln hinzufügen
Das Hinzufügen einzelner Felder gestaltet sich zuerst einmal etwas aufwändiger. Die Felder
müssen ausgewählt, auf der Formularfläche aufgezogen und dem Feld der dem Formularzugrundeliegenden Tabelle zugewiesen werden. Außerdem ist noch die Art des Feldes richtig
einzustellen, da z. B. numerische Felder standardmäßig erst einmal 2 Nachkommastellen haben.
Lediglich beim Aufziehen der Listenfelder kommt der Assistent zum Einsatz, der die Schritte zur
Erstellung eines korrekten Feldes für Ungeübte vereinfacht. Nach kurzer Anwendungsphase wird
der Assistent allerdings den Ansprüchen nicht mehr gerecht, da er••

Die Einträge nicht automatisch sortiert.
Eine Zusammenfassung von mehreren Feldern im aufzulistenden Inhalt nicht ermöglicht.

Hier muss dann immer wieder nachgebessert werden, so dass ganz schnell der SQL-Code direktüber den eingeblendeten Abfrageeditor erstellt wird.

Formular-Eigenschaften

53

Beim Hinzufügen einzelner Felder müsste eine Gruppierung von Feld und Beschriftung gesondert
vorgenommen werden (siehe Standardeinstellungen vieler Kontrollfelder). In der Praxis kann sichaber die fehlende Verknüpfung auch positiv bemerkbar machen, da der Zugang zu den
Eigenschaften eines Kontrollfeldes über das Kontextmenü sofort möglich ist und nicht erst ein
Betreten der Gruppe erfordert.

Tabellenkontrollfeld
Unter der Beschreibung zum Tabellen-Kontrollfeld wurde bereits über den Tabellenassistenten das
entsprechende Tabellenkontrollfeld erstellt. Es hat allerdings noch einige Nachteile, die zu
verbessern sind:••Aus den Feldern "Medien_ID" und "Leser_ID" muss ein Listenfeld erstellt werden.
Numerische Felder müssen gegebenenfalls auf Felder ohne Nachkommastellen umgestellt
werden, da der Assistent hier grundsätzlich 2 Nachkommastellen belässt.

Die Änderung von Feldern innerhalb des Tabellen-Kontrollfeldes ist allerdings nicht auf die gleiche
Art möglich, wie es oben für andere Kontrollfelder beschrieben wurde. Im Navigator endet die
Beschreibung der Felder beim Tabellen-Kontrollfeld. Von den im Tabellen-Kontrollfeld liegenden
Kontrollfeldern für die dem Formular zugrundeliegenden Tabelle weiß der Navigator nichts.
Dies gilt in gleichem Maße übrigens später auch, wenn mittels Makros auf die Felder zugegriffen
werden soll. Sie sind mit Namen nicht ansprechbar.

Die Kontrollfelder innerhalb des Tabellenkontrollfeldes werden als Spalten bezeichnet. Über das
Kontextmenü ist es jetzt möglich, Felder durch andere Felder zu ersetzen. Allerdings steht nicht dieganze Palette an Feldern zur Verfügung. So fehlen Buttons, Optionsfelder oder das grafische
Kontrollfeld.

54

Formulare

Die Eigenschaften der Felder sind über das Kontextmenü unter dem Begriff Spalte verborgen.
Hier kann dann z. B. das Numerische Feld Verlängerung geändert werden, so dass keine
Nachkommastellen mehr angezeigt werden. Auch der dort standardmäßig eingetragene minimale
Wert von –1.000.000,00 macht wohl für Verlängerungen wenig Sinn. Die Anzahl dürfte wohl impositiven einstelligen Bereich bleiben.
Sobald die Eigenschaften einer Spalte aufgerufen sind, lässt sich ohne das Eigenschaftsfeld
zu schließen auch eine andere Spalte aufrufen. Ohne eine separate Speicherung ist es somöglich, alle Felder nacheinander abzuarbeiten.
Die Speicherung erfolgt schließlich im gesamten Formular und letztlich mit dem
Datenbankdokument selbst.
Die Eigenschaften dieser in das Tabellenkontrollfeld eingebauten Felder sind übrigens nicht ganz
so umfangreich wie die der Felder außerhalb. Die Schrift z. B. lässt sich nur für das ganze
Tabellenkontrollfeld einstellen. Außerdem gibt es hier nicht die Möglichkeit, einzelne Spalten ohne
Tabulatorstop zu überspringen.

Tipp

Durch ein Formular erfolgt die Bewegung entweder mit der Maus oder mit dem
Tabulator.
Gerät ein Tabulator einmal in ein Tabellenkontrollfeld, so bewegt sich der Cursor dort mit
jeder Tabulatorbewegung ein Feld weiter nach rechts und bei Zeilenende schließlich
zum ersten Feld des nächsten Datensatzes im Tabellenkontrollfeld.
Aus dem Tabellenkontrollfeld heraus geht es mittels Strg + Tab .

Die Anordnung der Spalten lässt sich über das Verschieben der Spaltenköpfe ändern:Wird diese Verschiebung im Formularentwurf gemacht, so ist sie dauerhaft wirksam.
Vorübergehend lässt sich so eine Verschiebung auch im Formular erledigen, wenn es zur Eingabe
von Daten geöffnet ist.
Sollen nur bestimmte Felder zum Bearbeiten offen stehen, so bietet es sich an, das Formulargleich mit mehreren Tabellenkontrollfeldern zu bestücken, denn der Tabulator wird standardmäßig
von einem Tabellenkontrollfeld gefangen.
In dem in Abbildung 13 aufgezeigten Formular wird oben die Ausgabe von Medien geregelt. Hiersind nur die direkt notwendigen Felder.
Im unteren Tabellen-Kontrollfeld erscheinen noch einmal alle Felder, damit auch ersichtlich ist, fürwelche Person und welches Medium denn die Rückgabe erfolgt.

Formular-Eigenschaften55

Abbildung 13: Ein Formular - mehrere Tabellen-Kontrollfelder
Diese Abbildung zeigt allerdings noch einen Schönheitsfehler, der dringend behoben werden sollte.
In dem oberen Tabellenkontrollfeld fällt auf, dass das gleiche Medium mehrmals auftaucht. Dies
liegt daran, dass auch die Medien angezeigt werden, die eigentlich zurückgegeben wurden. Die
Daten müssen für eine saubere Ausleihe also gefiltert werden. Daten mit Rückgabedatum
brauchen gar nicht erst zu erscheinen.
Diese Filterung ist entweder über eine Abfrage oder direkt in den Formulareigenschaften möglich.
Wird in den Formulareigenschaften eine Filterung erstellt, so kann diese auch bei der Eingabe indas Formular vorübergehend ausgeschaltet werden. Die Filterung mittels Abfrage wird in dem
entsprechenden Kapitel 'Abfragen' aufgegriffen. Hier wird jetzt der Weg über die
Formulareigenschaften gezeigt:

56

Formulare

Die Filterung wird über den Button mit den drei Punkten gestartet. Sie könnte allerdings auch direkt
in das Textfeld eingegeben werden, wenn die SQL-Formulierung bekannt ist.

In der grafischen Benutzeroberfläche lässt sich jetzt das Feld mit dem Namen "Rueck_Datum"
auswählen. Angezeigt werden sollen nur die Datensätze, bei denen diese Feld «leer» ist, wobei«leer» für die SQL-Bezeichnung «NULL» steht.
Das auf diese Art bereinigte Formular sieht dann schon etwas übersichtlicher aus:

Formular-Eigenschaften57

Sicher ist dies noch verbesserbar, bietet aber neben der Funktionalität der anderen Formulare den
unbestreitbaren Vorteil, dass alle Medien auf einen Blick sichtbar sind.
Die Bearbeitung von Daten mit Tabellenkontrollfeldern ist ähnlich der von Tabellen. Mit einem
Rechtsklick auf den Datensatzmarkierer wird bei existierenden Datensätzen die Löschung desDatensatzes angeboten, bei Neueingaben kann die Dateneingabe rückgängig gemacht oderabgespeichert werden.
Wird eine Zeile verlassen, so wird der Datensatz automatisch abgespeichert.
Noch ist das Formular zur Medienausleihe in vielen Bereichen zu verbessern.

•

Es wäre wünschenswert, wenn an einer Stelle der Leser ausgewählt würde und an anderer
Stelle zu diesem Leser die entliehenen Medien erscheinen.

•

In der oberen Tabelle sind lauter Datensätze zu sehen, die dort eigentlich gar nicht
notwendig sind. Die Medien sind ja schon entliehen. Das obere Tabellenblatt ist abererstellt worden, um die Ausleihe zu ermöglichen. Besser wäre es, wenn hier nur ein leeres
Blatt erscheint, das dann mit den neuen Ausleihen ausgefüllt wird.

Solche Lösungen sind mit Hilfe von weiteren Formularen möglich, die hierarchisch aufeinander
aufgebaut sind und eine getrennte Sicht auf die Daten ermöglichen.
Das Tabellenkontrollfeld kann mit anderen Feldern im Formular kombiniert werden.
In dem Tabellenkontrollfeld werden z. B. nur die Medientitel angezeigt, in den
darunter stehenden Formularfeldern dann an diesem Datensatz Änderungenvorgenommen.

Tipp

58

Bei der Kombination von Tabellenkontrollfeld und weiteren Formularfeldern gibt es
einen kleinen, leicht behebbaren Bug. Wenn beide Feldarten zusammen in einem
Formular liegen, so läuft der Cursor von den anderen Formularfeldern automatischin das Tabellenkontrollfeld, obwohl dieses Feld standardmäßig auf «Tabstop» =«Nein» eingestellt ist. Das kann behoben werden, indem der Tabstop einmal auf«Ja» und anschließend wieder auf «Nein» eingestellt wird. Dann erst wird «Nein»wirklich übernommen.

FormulareHauptformular und Unterformular
Ein Unterformular liegt wie ein Formularkontrollfeld innerhalb eines Formulars. Wie ein
Formularkontrollfeld wird es mit den Daten des (Haupt)-Formulars verbunden. Allerdings kannes als Datenquelle eine andere Tabelle oder eine Abfrage (bzw. einen SQL-Befehl) beinhalten.
Für ein Unterformular ist nur wichtig, dass seine Datenquelle irgendwie mit der Datenquelle desHauptformulars verbunden werden kann.

Arbeitsfläche

Formular

Unterformular

Kontrollfeld 1

Kontrollfeld 1

Kontrollfeld 2

Kontrollfeld 2

Kontrollfeld 3

Kontrollfeld 3

Kontrollfeld ...

Kontrollfeld ...

Typische Tabellenkonstruktionen, die sich für Unterformulare eignen, sind Tabellen mit einer Eins
-zu-viele Beziehung. Hauptformulare zeigen eine Tabelle an, zu deren Datensatz dann in den
Unterformularen viele abhängige Datensätze aufgezeigt werden.
Wir nutzen jetzt erst einmal die Beziehung der Tabelle "Leser" zur Tabelle "Ausleihe" (siehe«Tabellen Ausleihe»). Die Tabelle "Leser" wird Grundlage für das Hauptformular, die Tabelle"Ausleihe" wird in dem Unterformular wiedergegeben.

Hauptformular und Unterformular

59

Das Hauptformular wird auf die Tabelle "Leser" eingestellt. Damit die Leser auch schnell genug
gefunden werden, wird die Tabelle sortiert wiedergegeben. Auf eine Navigationsleiste wird
verzichtet, weil zwischen Hauptformular und Navigationsleiste der Inhalt des Unterformulars
angezeigt wird. Stattdessen soll das Formularkontrollelement Navigationsleiste eingebaut werden.

Durch Rechtsklick auf das Hauptformular im Formular-Navigator wird über das Kontextmenü ein
neues Formular gegründet. Das Formular hat standardmäßig wieder den Namen Formular, ist jetzt
aber ein Element im Unterverzeichnis des Hauptformulars.

Die Eigenschaften des Unterformulars müssen jetzt entsprechend eingestellt werden, damit es dierichtige Datenquelle und die zu dem entsprechenden Leser gehörigen Daten wiedergibt.

60

Formulare

Für das Unterformular wird die Tabelle Ausleihe gewählt. Beim Filter wird eingestellt, dass das
Rückgabedatum leer sein soll ("Rueck_Datum" IS NULL). Dadurch werden keine bereits
zurückgegebenen Medien angezeigt. Die Datensätze sollen nach dem Entleihdatum vorsortiert
werden. Diese Sortierung zeigt das am längsten entliehene Medium am weitesten oben an.
Über Verknüpfen von und Verknüpfen nach wird eine Verbindung zum Hauptformular hergestellt, indem das Unterformular liegt. Der Button mit den drei Punkten zeigt wieder an, dass es hier ein
helfendes Fenster für die Auswahl der Einstellungen gibt.

Unter Ausleihe werden die Felder der Tabelle Ausleihe angezeigt, unter Leser die der Tabelle
Leser. Die Leser_ID der Ausleihe soll gleichbedeutend sein mit der ID der Tabelle Leser.
Obwohl diese Verknüpfung bereits in der Datenbank unter Extras → Beziehungen erstellt wurde(siehe Kapitel 'Tabellen') greift die hinter dem Button Vorschlagen liegende Funktion hierauf nicht
zurück und möchte stattdessen den ersten Fremdschlüssel aus der Tabelle "Ausleihe", nämlich"Medien_ID", mit "ID" aus der Tabelle "Leser" verbinden. Dies gelingt dem Assistenten zur
Erstellung von Formularen besser.

Die ausgewählte Verknüpfung von der Tabelle des Unterformulars nach der Tabelle desHauptformulars wird jetzt mit den entsprechenden Feldern der Tabellen angegeben.
Um jetzt ein Tabellenkontrollfeld für das Hauptformular zu erstellen, muss das Hauptformular im
Formular-Navigator markiert sein. Dann zeigt bei eingeschaltetem Tabellenkontrollfeld-Assistenten
der Assistent die Felder an, die im Hauptformular zur Verfügung stehen. Entsprechend wird mit
dem Unterformular verfahren.
Nachdem so die Tabellenkontrollfelder aufgezogen wurden werden die entsprechendenÄnderungen durchgeführt, die schon beim einfachen Formular erklärt wurden:

•
•
•
•
•

Ersetzen des numerischen Feldes "Medien_ID" im Unterformular durch ein Listenfeld.
Umbenennung des Feldes "Medien_ID" in Medien.
Anpassung der numerischen Felder an ein Format ohne Nachkommastellen.
Eingrenzung der minimalen und maximalen Werte.
Umbenennung anderer Felder, um Platz zu sparen oder Umlaute darzustellen, die bei der
Feldbenennung in den Datenbanktabellen vermieden wurden.

Sortier- und Filterfunktion werden für das Hauptformular ergänzt, indem eine Navigationsleiste
hinzugefügt wird. Die anderen Felder der Navigationsleiste werden nicht benötigt, da sie vom
Tabellenkontrollfeld weitgehend zur Verfügung gestellt werden. (Datensatzanzeige,
Hauptformular und Unterformular61

Datensatznavigation) bzw. durch die Bewegung im Tabellenkontrollfeld erledigt werden(Speicherung von Daten).
Das erstellte Formular könnte schließlich wie in der folgenden Abbildung aussehen:

Abbildung 14: Formular, bestehend aus Hauptformular (oben) und Unterformular(unten).
Wird jetzt im Hauptformular ein Leser ausgewählt, so werden im Unterformular nur die Medien
aufgezeigt, die der Leser zur Zeit entliehen hat. Wird ein Medium zurückgegeben, so erscheint
dies noch so lange im Formular, bis das Formular selbst aktualisiert wird. Dies geschieht
automatisch, wenn im Hauptformular ein anderer Datensatz gewählt wurde. Bei der erneuten
Anwahl des ursprünglichen Lesers sind also die zurückgegebenen Medien nicht mehr in derAnzeige.
Diese verzögerte Aktualisierung ist in diesem Fall wohl auch erwünscht, da so direkt eingesehen
werden kann, welche Medien denn jetzt gerade auf der Theke der Mediothek liegen und ob dieseschon registriert wurden.
Diese Formularkonstruktion bietet schon deutlich mehr Komfort als die vorherige mit nur einem
einzigen Formular. Allerdings gibt es noch Details, die verbesserungswürdig erscheinen:

62•

Medien und Ausleihdaten können geändert werden, wenn die Medien schon länger
entliehen sind.
Eine Änderung der Medien-Daten führt dazu, dass nicht mehr nachvollzogen werden kann,welches Medium denn nun noch in der Mediothek vorhanden ist und welches entliehen
wurde.
Eine Änderung des Ausleihdatums kann zu fehlerhaften bzw. nicht beweisbaren
Anmahnungen führen.

•

Wird ein Leser nicht durch Klick auf den Datensatzmarkierer markiert, so zeigt nur derkleine grüne Pfeil auf dem Markierer an, welcher Datensatz gerade aktiv ist. Es ist auchmöglich, den aktiven Datensatz komplett aus dem Tabellenkontrollfenster zu scrollen.
Statt des Textes «Ausgeliehene Medien des ausgewählten Lesers» würde hier besser auchder Name erwähnt.

•Es ist möglich, mehrmals das gleiche Medium auszuleihen, ohne dass es zurückgegeben
wurde.
Formulare••Es ist möglich, die Datensätze für ausgeliehene Medien einfach zu löschen.
Auch im Hauptformular sind Änderung und Löschung von Daten möglich. Dies kann bei
kleinen Mediotheken mit wenig Publikumsbetrieb sinnvoll sein. Sobald aber am
Ausgabeschalter größere Hektik entsteht, ist die Bearbeitung von Nutzerdaten nicht an der
gleichen Stelle vorzunehmen wie die Ausleihe.
Eine Vereinfachung wäre schon, wenn eine Neuaufnahme ermöglicht würde, alte Datenaber nicht angerührt werden dürfen. Denn ob nun Löschung oder komplette Veränderung
des Namens – das Ergebnis bleibt für die Mediothek das Gleiche.

Zuerst wird einmal die Auswahl der Leser verbessert. Dies soll vor Änderungen in der Ausleihe
schützen. Eine einfache Lösung wäre, keine Änderungen zuzulassen, aber neue Datensätze
eingeben zu können. Dazu wird immer noch eine Suchfunktion benötigt, wenn ein Leser ein
Medium entleihen will. Besser wäre, in einem Listenfeld die Leser auszusuchen und invoneinander getrennten Tabellenkontrollfeldern die Ausgabe und die Rückgabe zu erledigen.
Für das Hauptformular benötigen wir eine Tabelle, in die das Listenfeld seinen mit dieser Tabelle
verbundenen Wert schreiben kann. Die Tabelle muss also ein Integer-Feld und einen
Primärschlüssel haben. Sie wird beständig nur einen Datensatz enthalten; daher kann das Feld ID
als Primärschlüssel ruhig 'Tiny Integer' sein. Die folgende Tabelle mit der Bezeichnung "Filter" soll
also gebildet werden:
Tabellenname: Filter
Feldname

FeldtypID

Tiny Integer, Primärschlüssel

Integer

Integer

Die Tabelle wird mit einem Primärschlüsselwert gefüllt, und zwar dem Wert 0. Diesen Datensatz
wird das Hauptformular beständig lesen und neu schreiben.

Das Hauptformular beruht auf der Tabelle "Filter". Es wird nur der Wert aus der Tabelle gelesen,bei dem der Primärschlüssel "ID" '0' ist. Es sollen keine Daten hinzugefügt werden, sondern nur
der aktuelle Datensatz beständig neu geschrieben werden. Daher ist hier nur das Ändern erlaubt,
eine Navigationsleiste sowieso überflüssig.

Hauptformular und Unterformular

63

Das Hauptformular wird mit dem Unterformular so verknüpft, dass der Wert aus dem Feld "Integer"
der Tabelle "Filter" gleich dem Wert aus dem Feld "Leser_ID" aus der Tabelle "Ausleihe" ist. Das
Unterformular bleibt in seinen Eigenschaften ansonsten gegenüber der Vorversion unberührt.
Bevor jetzt im Hauptformular ein Listenfeld aufgezogen wird, wird erst einmal der Assistentausgeschaltet. Mit dem Assistenten könnte nur ein Feld erzeugt werden, das lediglich einen
Feldinhalt anzeigt; es wäre unmöglich, Nachname und Vorname und zusätzlich noch eine Nummer
in dem Anzeigefeld des Listenfeldes zu positionieren. Wie bereits bei dem einfachen Formular wird
jetzt das Listenfeld mit Nachname, Vorname – Nr. ID bestückt. Das Listenfeld gibt außerdem die ID
an die darunterliegende Tabelle weiter.

Neben dem Listenfeld wird ein Button erstellt. Dieser Button ist allerdings Bestandteil desUnterformulars. Er soll gleichzeitig zwei Funktionen übernehmen: Abspeicherung des Datensatzes
aus dem Hauptformular und Aktualisierung der Tabelle im Unterformular. Dazu reicht es, dem
Button im Unterformular die Aktualisierung zuzuweisen. Der Speichervorgang für das veränderte
Hauptformular wird dadurch automatisch ausgelöst.
Der Button kann einfach mit 'OK' als Aufschrift versehen werden. Als Aktion wird Formularaktualisieren zugewiesen.

Abbildung 15: Hauptformular als Filter für ein Unterformular

64

Formulare

Das Hauptformular besteht nur aus der Überschrift und dem Listenfeld, das Unterformular aus
einer weiteren Überschrift, dem Tabellen-Kontrollfeld der vorherigen Version und dem Button.
Das Formular funktioniert jetzt schon insofern besser, als••

keine Leser mehr bearbeitet, vor allem verändert und gelöscht werden können undLeser schneller über das Eintippen in das Kontrollfeld gefunden werden als über Filter.

Für eine weitreichendere Funktionalität (Rückgabe ohne Änderung der vorherigen Daten) muss ein
zweites Unterformular gegründet werden, das sich auf die gleiche Tabelle "Ausleihe" bezieht.
Damit dennoch die Funktionalität des Listenfeldes aus Abbildung 15 gewährleistet wird, müssen
beide Unterformulare allerdings noch eine Ebene tiefer gelegt werden, also Unterformulare eines
Unterformulars werden. Eine Aktualisierung von Daten verläuft in der Hierarchie nur vom
Hauptformular zum Unterformular abwärts. Der Button im letzten vorgestellten Formular würde nur
ein Unterformular aktualisieren, nicht aber das zweite, daneben liegende Unterformular.

Der Formularnavigator zeigt hier die verschiedenen Ebenen an. Im Hauptformular befindet sichdas Beschriftungsfeld für die Formularüberschrift und das Listenfeld, in dem die Leser ausgesucht
werden. Das Listenfeld steht in der Ansicht ganz unten, da es nach dem Unterformular gegründet
wurde. Diese Reihenfolge der Anzeige lässt sich leider nicht beeinflussen. Das Unterformular hat
lediglich eine Schaltfläche, mit der sein Inhalt aktualisiert und der des Hauptformulars gleichzeitig
abgespeichert wird. Noch eine Ebene tiefer liegen dann zwei Unter-Unterformulare. Diese werden
bei der Gründung bereits unterschiedlich benannt, so dass in keiner Ebene von der Benennung
her Verwechselungen auftreten können.

HinweisGrundsätzlich sind die Benennungen der Formulare und Kontrollfelder erst einmal
ohne Bedeutung. Wenn sie aber über den Namen durch Makros angesprochen
werden sollen, müssen sie unterscheidbar sein. Gleiche Namen in der gleichen
Formularebene erlauben keine Unterscheidung.
Natürlich ist es sinnvoll bei, bei größeren Formularkonstruktionen aussagekräftigere
Namen für die Formulare und ihre Kontrollfelder zu nutzen. Ansonsten dürfte ein
Auffinden des richtigen Feldes schnell zum Problem werden.

Hauptformular und Unterformular

65

Das Hauptformular und das Unterformular nutzen einfach die gleiche Tabelle. Im Unterformularwerden keine Daten eingegeben. Deshalb stehen alle diesbezüglichen Felder auf Nein. Verknüpft
werden Hauptformular und Unterformular durch das Feld, dessen Wert auch an die
Unter-Unterformulare weitergegeben werden soll: das Feld "Integer" der Tabelle "Filter".

Im ersten Unter-Unterformular werden keine alten Daten angezeigt sondern nur neue Datenverarbeitet. Hierzu reicht der Filter, der gesetzt wurde. Es werden nur Daten angezeigt, die zu der"Leser_ID" passen und deren Leihdatum leer ist ("Leih_Datum" IS NULL). Das bedeutet beim
Aufruf ein leeres Tabellen-Kontrollfeld. Da das Tabellen-Kontrollfeld zwischendurch nicht laufend
aktualisiert wird bleiben die gerade neu ausgeliehenen Medien so lange in dem TabellenKontrollfeld stehen, bis über den Aktualisierungsbutton 'OK' entweder ein neuer Name ausgewählt
oder auch nur die Übernahme der Daten in das zweite Unter-Unterformular veranlasst wird.

66

Formulare

Das zweite Unter-Unterformular erfordert mehr Einstellungen. Auch dieses Formular enthält die
Tabelle "Ausleihe". Hier werden aber die Daten gefiltert, bei denen das Rückgabedatum leer ist("Rueck_Dat" IS NULL). Die Daten wird wie im vorhergehenden Formular so sortiert, dass die amlängsten entliehenen Medien direkt sichtbar sind.
Wichtig sind jetzt auch die weiter unten stehenden Einträge. Alte Datensätze können geändert
werden, aber es können keine neuen Datensätze hinzugefügt werden. Ein Löschen ist nicht
möglich. Damit ist der erste Schritt gemacht, der notwendig ist, um später nicht Entleihdaten
einfach zu löschen. Noch wäre es aber möglich, z. B. das Medium und das Entleihdatum zuändern. Hier muss in den Eigenschaften der Spalten weiter justiert werden. Schließlich soll das
Medium und das Entleihdatum nur angezeigt, aber von der Änderung ausgeschlossen werden.
Das Tabellen-Kontrollfeld wird nach der Erstellung der Formulare einfach verdoppelt. Dazu wirdes markiert, anschließend kopiert, danach wird die Markierung aufgehoben und aus der
Zwischenablage wieder eingeführt. Das Doppel befindet sich an der gleichen Position wie das
Original, muss also noch verschoben werden. Danach können beide Tabellenkontrolfelder
entsprechend bearbeitet werden. Das Tabellenkontrollfeld zur Medienrückgabe bleibt nahezu
unverändert. Lediglich die Schreibrechte für die Spalten 'Medien' und 'Ausleihdatum' müssen
geändert werden.

Hauptformular und Unterformular67

Während bei 'Ausleihdatum' lediglich Nur lesen gewählt werden muss ist dies bei Listenfeldern
nicht ausreichend. Diese Einstellung verhindert nicht, dass das Listenfeld weiterhin betätigt werden
kann. Wird aber 'Aktiviert' auf Nein gestellt, so kann dort eine Auswahl nicht mehr stattfinden. Im
Tabellen-Kontrollfeld wird ein enthaltenes Listenfeld dann wie ein nicht veränderbares Textfeld
angezeigt.
Im oberen Tabellen-Kontrollfeld werden alle Felder entfernt, die nichts mit der Ausleihe zu tun
haben. Es beliebt lediglich das Medium als Auswahlfeld sowie das Ausleihdatum "Leih_Dat"
stehen.
Wird schließlich noch die Abfrage für das Listenfeld im oberen Tabellen-Kontrollfeld entsprechend
gewählt, so werden dort nur Medien angezeigt, die noch entliehen werden können. Mehr dazu im
Kapitel 'Abfragen'.

68

Formulare

Abbildung 16: Das Auswahlfeld im oberen Unterformular zeigt nur Medien an, dienicht ausgeliehen sind.
Das Formular zur Medienausleihe ist jetzt schon wesentlich besser zu bedienen. Kommt ein Leseran die Ausleihtheke, so wird der Name herausgesucht. Die zu entleihenden Medien können aus
dem Listenfeld gewählt und das Entleihdatum eingestellt werden. Mit dem Tabulator geht es dann
zum nächsten Datensatz.
Eine letzte Verbesserung wäre noch wünschenswert: Das Entleihdatum muss jedes Mal gewählt
werden. Stellen wir uns einen Tag in der Mediothek mit vielleicht 200 Entleihvorgängen vor,
vielleicht auch nur eine Person, die gleich 10 Medien auf einmal entleiht. Das wären mehrmals
hintereinander die gleichen Eingabevorgänge für ein Feld. Hier muss eine Einsparmöglichkeit her.
Unser Hauptformular beruht auf einer Tabelle "Filter". Das Hauptformular arbeitet dabei immer nur
mit dem Datensatz, der als Primärschlüssel die "ID" '0' hat. In die Tabelle "Filter" können ohne
weiteres noch mehr Felder eingebaut werden. Da noch kein Feld enthalten ist, das ein Datum
speichern kann gründen wir einfach ein neues Feld mit dem Feldnamen "Datum" und dem Feldtyp'Datum'. In der Tabelle "Filter" wird jetzt nicht nur die "Leser_ID" ("Filter"."Integer") sondern auchdas "Leih_Datum" ("Filter"."Datum") gespeichert.

Hauptformular und Unterformular69

Im Hauptformular erscheint jetzt zusätzlich ein Datumsfeld, außerdem noch ein Beschriftungsfeld,
das auf den Inhalt des Datumsfeldes hinweist. Der Wert aus dem Datumsfeld wird in der Tabelle"Filter" gespeichert und über die Verbindung vom Unterformular zum Unter-Unterformularweitergegeben.

Die Verknüpfung zwischen beiden Formularen weist jetzt zwei Felder auf. Das Feld "Integer" wird
mit dem Feld "Leser_ID" des Unter-Unterformulars verbunden. Das Feld "Datum" mit dem Feld
"Leih_Datum". Damit wird das "Leih_Datum" automatisch aus der Tabelle "Filter" bei der Ausleihe
in die Tabelle "Ausleihe" übertragen.

Abbildung 17: Das Datum der Ausleihe wird einmal eingestellt. Bei einem Wechseldes Lesers muss es nicht neu eingegeben werden.
Aus dem Tabellenkontrollfeld wurde jetzt auch noch das Datumsfeld entfernt.
Das Tabellenkontrollfeld besteht jetzt lediglich noch aus einem Auswahlfeld. Dies wäre die ideale
Voraussetzung um bei einer Mediothek noch an der Beschleunigungsschraube zu drehen.
Denn eigentlich haben die Medien ja eine Nummer. Wozu müssen sie also ausgesucht werden.
Da könnte doch gleich die Nummer eingetragen werden. Oder, noch besser, die Medien könnten
mit Barcode-Etiketten versorgt werden. Ein Scanner dafür ist mit ca. 50.- € mittlerweile recht
preisgünstig zu haben. Dann würden die Medien schneller ausgeliehen als der Entleiher sie in dieTasche packen kann.
In der Beispieldatenbank ist dies entsprechend aufgezeigt. Zur Vorstellung des ersten
Formularentwurfs sollte das obige Beispiel aber erst einmal ausreichend sein.
Da allerdings das letztlich in der Beispieldatenbank «Medien_ohne_Makros.odb» vorgesehene
Formular noch weiter entwickelt wurde sollen die Erweiterungen hier noch kurz vorgestellt werden.

70

FormulareIn die Ausleihe wurden die folgenden Eigenschaften aufgenommen:•

In einem Tabellenkontrollfeld werden die Leser und Leserinnen angezeigt. Hier können
auch neue Leser und Leserinnen eingegeben werden.

•Über einen Filter, der mit der Tabelle "Filter" zusammenarbeitet, kann nach den
Anfangsbuchstaben des Namens gefiltert werden. So werden bei einem «A» nur die
Personen angezeigt, deren Nachname mit «A» beginnt. Die Filterung ist dabei unabhängig
von der Eingabe von Groß- und Kleinschreibung.

•

Im Untertitel wird noch einmal der Name der Person aufgezeigt, für die die Ausleihe
erfolgen soll. Ist die Ausleihe für die Person gesperrt, so wird dies angezeigt.

•

Das Entleihdatum ist auf das aktuelle Datum eingestellt. Dazu wurde die Filtertabelle überSQL so eingestellt, dass bei einem nicht eingegebenen Datum der Default-Wert dasaktuelle Datum abspeichert.

•

Die noch entleihbaren Medien werden in einem Listenfeld ausgewählt. Über den Button'Aktualisieren' wird die Ausleihe in das darunterstehende Tabellenkontrollfeld übertragen.

Hauptformular und Unterformular71•

Das mittlere Tabellenkontrollfeld dient lediglich der Anzeige der zu dem angegebenen
aktuellen Datum ausgeliehenen Medien. Hier kann auch eine irrtümliche Ausleihe durch
Löschen der Zeile rückgängig gemacht werden.

•

Im unteren Tabellenkontrollfeld ist wie im vorher gezeigten Beispiel die Änderung vonMedien aus Ausleihdatum nicht möglich. Auch eine Löschung ist nicht möglich.

•

Neben der Eingabe des Rückgabedatums oder gegebenenfalls einer Verlängerung wird
angezeigt, für wie viele Tage das Medium entliehen werden darf und wie viele Tage die
restliche Entleihzeit beträgt.

•

Geht die Restzeit in den negativen Bereich, so muss das Medium sofort zurückgegeben
werden. Die Ausgabe ist deswegen gesperrt. Sie wird dadurch wieder ermöglicht, dass die
Medien zurückgegeben werden. Nach der Medienrückgabe muss lediglich einmal auf'Aktualisieren' gedrückt werden.

Dieses Formular ist mit Hilfe von Abfragen wesentlich komplexer strukturiert als die vorher
vorgestellte Variante. Mehr zu den Grundlagen ist deshalb im Kapitel 'Abfragen' zu erfahren.

Eine Ansicht – viele Formulare
Während das Beispiel für die Ausleihe nur Eingaben in eine Tabelle erforderte (Tabelle "Ausleihe")und zusätzlich die Eingabe in der einfacheren Form auch für neue Leser ermöglichte, ist die
Eingabe für die Medien wesentlich umfassender. Schließlich spielen rund um die Medien-Tabelle
insgesamt 8 zusätzliche Tabellen mit (siehe «Tabellen Medienaufnahme»).
Durch die Zuordnung im Verhältnis n:1 bieten sich die Tabellen "Untertitel" und"rel_Medien_Verfasser" als Unterformulare zum Formular 'Medien' an. Tabellen, die hingegen ein
Verhältnis von 1:n zur Tabelle "Medien" haben, müssten eigentlich ein Formular bilden, das überdem der Tabelle Medien liegt. Da es sich aber um mehrere entsprechende Tabellen handelt,
werden deren Werte über Listenfelder in das Hauptformular eingetragen.
Die Tabelle eines Hauptformulars steht zur Tabelle eines Unterformulars grundsätzlich im
Verhältnis 1:n, in seltenen Ausnahmen im Verhältnis 1:1. Das Hauptformular beherbergt in derRegel nach längerem Gebrauch der Datenbank also eine Tabelle, die deutlich weniger Datensätze
hat als die Tabelle des Unterformulars.
Mehrere Hauptformulare können nicht auf ein Unterformular zugreifen. Es ist also nicht möglich,viele 1:n-Beziehungen gleichzeitig über die Formularanordnung zu lösen, bei denen das
Unterformular den gleichen Inhalt hat. Gibt es eine 1:n-Beziehung für die Tabelle eines Formulars,
so lässt sich dies über ein Listenfeld regeln. Hier stehen wenige Begriffe aus einer anderen Tabelle
zur Auswahl, deren Fremdschlüssel auf diese Art in die Tabelle des Hauptformulars eingetragenwerden.

Listenfeld

Listenfeld

Listenfeld

1

1

1

n

n

n

Hauptformular
1

72

1

n

n

Unterformular

Unterformular

FormulareÜber Listenfelder werden dem Hauptformular, das auf der Tabelle "Medien" basiert, z. B. die
Inhalte der Tabellen "Kategorie", "Ort" oder "Verlag" zugewiesen. Über Unterformulare sind die
Tabelle "rel_Medien_Verfasser" und "Untertitel" mit dem Hauptformular und damit mit der Tabelle"Medien" verbunden.
Das Unterformular für die Tabelle "rel_Medien_Verfasser" besteht außerdem wieder aus zwei
Listenfeldern, damit nicht die Fremdschlüssel der Tabelle "Verfasser" und "Verf_Zusatz" (Zusätze
wie Hrsg., Gesang usw.) direkt als Ziffern eingegeben werden müssen.
Bei dem Formular für die Medieneingabe müssen die Listenfelder meist während der Eingabe
nach und nach aufgefüllt werden. Hierzu werden neben dem Hauptformular weitere Formulare
eingebaut. Sie existieren unabhängig vom Hauptformular:

Arbeitsfläche

Formular 1
Kontrollfeld 1
Kontrollfeld 2
Kontrollfeld ...

Formular 2
Kontrollfeld 1
Kontrollfeld 2
Kontrollfeld ...
Das gesamte Formular zur Medieneingabe sieht so aus:Eine Ansicht – viele Formulare

73

Auf der linken Seite befindet sich das Hauptformular mit Blick auf die Suche und Eingabe vonneuen Medien. Auf der rechten Seite des Formulars ist durch einen Gruppierungsrahmen mit derBezeichnung 'Listfeldinhalte bearbeiten' eine Bereich abgegrenzt, der zum Auffüllen derListenfelder (hier verkürzt: 'Listfeld') im Hauptformular gedacht ist. Existiert die Datenbank erst
kurz, so wird hier wohl häufig eine Eingabe erledigt werden müssen. Je mehr Eingaben allerdings
in den Listenfeldern des Hauptformulars zur Verfügung stehen, desto seltener ist ein Zugriff auf die
Tabellenkontrollfelder aus dem Gruppierungsrahmen notwendig.
Die folgenden Tabellenkontrollfelder sind alle in einzelnen Nebenformularen zum Hautformular,
dem Eingabeformular, untergebracht:

74

Formulare

Hier werden jeweils die kompletten Daten für eine Tabelle eingegeben. Am Anfang ist es häufig
erforderlich, auf diese Nebenformulare auszuweichen, da z. B. nicht viele Verfasser in derentsprechenden Tabelle bereits abgespeichert wurden.
Wurde in einem der Tabellenkontrollfelder ein neuer Datensatz abgespeichert, so ist in dem
Hauptformular das entsprechende Listenfeld aufzusuchen und über 'Kontrollfeld aktualisieren'(siehe 'Navigationsleiste') neu einzulesen.
Der Formularnavigator zeigt entsprechend viele Formulare an:

Eine Ansicht – viele Formulare

75

Die Formulare sind einzeln benannt, so dass sie erkennbar bleiben. Lediglich das Hauptformular
hat vom Formularassistenten noch die Bezeichnung MainForm behalten. Insgesamt existieren also
8 Formulare parallel. Das Formular Filter beherbergt eine Suchfunktion, das Formular MainForm
die Haupteingabefläche. Alle anderen Formulare stehen für je eins der oben abgebildeten
Tabellenkontrollfelder.
Ohne die Tabellenkontrollfelder erscheint das Hauptformular schon etwas übersichtlicher:

Das Feld für den Suchbegriff liegt in dem Nebenformular Filter, die beiden Tabellenkontrollfelder(für die Verfasser und für die Untertitel) liegen in Unterformularen zum Hauptformular derMedieneingabe.
Im Formularnavigator sieht das Formular selbst dann schon wesentlich unübersichtlicher aus, danatürlich alle Kontrollfelder, auch die Beschriftungen, dort auftauchen. In den vorhergehenden
Formularen waren ja die meisten Felder als Spalten von Tabellen-Kontrollfeldern im
Formularnavigator nicht zu sehen.

76

Formulare

Die Reihenfolge innerhalb des Formularnavigators lässt sich leider nicht so einfach verändern.
So erscheint es z. B. sinnvoll, die Unterformulare Untertitel und Formular_Verfasser als
Verzweigung direkt zum Beginn des Formulars MainForm auftauchen zu lassen. Innerhalb desFormularnavigators werden die einzelnen Kontrollfelder und Unterformulare einfach in der
Reihenfolge aufgelistet, in der sie gegründet wurden.
Durch den Formularassistenten werden die Elemente mit bestimmten Kürzeln versehen, die neben
den Symbolen andeuten, um welche Art Feld es sich handelt. Mit 'lbl' beginnen Beschriftungsfelder('label'), mit 'txt' Textfelder usw. Sämtliche Beschriftungsfelder interessieren für die Eingabe vonDaten eigentlich nur als zusätzliche Informationen. Sie können auch direkt über Textrahmen erstellt
werden und würden dann im Formularnavigator nicht erscheinen.
Die Reihenfolge, in der die Elemente im Navigator auftauchen, hat aber nichts damit zu tun, in
welcher Reihenfolge die Elemente durch einen Tabulatorsprung erreicht werden. Dies wird durch
die Aktivierungsreihenfolge bestimmt.
Eine Ansicht – viele Formulare

77Die Aktivierungsreihenfolge für ein bestimmtes Formular wird aufgerufen, indem ein Element
dieses Formulars markiert wird und dann erst der Button Aktivierungsreihenfolge betätigt wird. Bei
einem einzigen Formular ist diese Reihenfolge natürlich nicht notwendig. Die Funktion muss aberbei vielen parallel liegenden Formularen erst einmal wissen, welches Formular denn nun
ausgewählt werden soll. Standardmäßig ist es sonst das erste Formular im Formularnavigator –und das enthält im obigen Beispiel nur ein Textfeld.

Über die Aktivierungsreihenfolge werden alle Elemente, die Daten an die dem Formularzugrundeliegende Tabelle weitergeben oder Aktionen hervorrufen können, in ihrer Reihenfolge
zueinander festgelegt. Dies entspricht der Einstellung in den Eigenschaften inStandardeinstellungen vieler Kontrollfelder zur Aktivierungsreihenfolge.
In der Aktivierungsreihenfolge tauchen allerdings auch die Elemente auf, bei denen der Tabstop
eigentlich abgeschaltet ist. Sie werden zwar in die Nummerierung aufgenommen, aber tatsächlichbei der Arbeit mit dem Formular über die Tastatur nicht angesprungen.
Automatisch werden die Felder nach der Lage auf dem Formularhintergrund sortiert. Je weiteroben ein Feld liegt, desto eher wird es über die Auto Sortierung angesprungen. Je weiter links ein
Feld bei gleicher Höhe liegt, desto eher wird es angesprungen. Diese Sortierung funktioniert danntadellos, wenn die Elemente wirklich genau ausgerichtet sind (Raster bei der Formularerstellung).
Ansonsten muss nachgebessert werden. Hierzu wird ein Element einfach markiert und z. B. über'Nach unten' weiter nach unten in der Reihenfolge verlegt.
Existiert ein Unterformular, so wird bei der 'Auto Sortierung' das Ganze so eingestellt, dass nachdem Hauptformular direkt in das Unterformular gesprungen wird. Bei einem Tabellenkontrollfeld
führt dies über die Tastatureingabe dann dazu, dass der Cursor in diesem Unterformular gefangen
ist und nur mit der Maus oder über Strg + Tab aus dem Subformular wieder herausbewegt
werden kann.
Die 'Auto Sortierung' funktioniert allerdings, bezogen auf das Tabellenkontrollfeld, nur einmal.
Ein weiteres Unterformular mit Tabellenkontrollfeld wird nicht mit einbezogen. Parallel liegende
Formulare werden also nicht berücksichtigt. Eine 'Auto Sortierung' kann in Bezug auf ein
Unterformular mit Tabellenkontrollfeld auch nicht rückgängig gemacht werden. Hierzu müsste
78

Formularedas Unterformular komplett entfernt (oder vorübergehend in ein anderes Formular verschoben)
werden.

Die Datengrundlage für das Formular zur Medieneingabe ist in diesem Fall nicht eine Tabelle
sondern eine Abfrage. Dies ist notwendig, da das Formular nicht nur zur Eingabe sondern auch
zur Suche benutzt werden soll. Auch wird in dem Formular noch in einem Textfeld nach dem
Abspeichern darüber aufgeklärt, ob die eingegebene ISBN-Nummer korrekt ist. Auch dies ist
nur über eine umfassende Abfrage möglich. Um diese Hintergründe zu verstehen ist es also
notwendig, sich erst einmal mit den Grundlagen von Abfragen auseinander zu setzen.

Fehlermeldungen bei der Eingabe in Formulare
Einige Fehlermeldungen treten gerade bei den ersten Formularerstellungen gehäuft auf, so dasssie hier kurz erklärt werden sollen:
Attempt to insert null into a non-nullable column: column: ID table:
Tabellenname in statement …
Es gibt Felder, die nicht leer sein dürfen. Wird dies nur in der Tabelle definiert (NOT NULL), so
erscheint eine englischsprachige Fehlermeldung. Erfolgt die Definition auch in den Kontrollfeldern
des Formulars, dann erscheint eine deutschsprachige Meldung mit dem genauen Hinweis,
welches Feld denn nun ausgefüllt werden muss.
Die obige Meldung passiert besonders häufig, wenn das Primärschlüsselfeld, hier 'ID', nicht indas Formular mit aufgenommen wurde, da es ja als automatisch hoch zählendes AutoWert-Feld
gedacht war. Leider wurde aber die entsprechende Definition als AutoWert-Feld schlichtvergessen. Also muss dies entweder nachgeholt werden oder das Feld muss im Formular mit
erscheinen, damit ein Wert eingegeben werden kann.
Die nachträgliche Definition eines Feldes als AutoWert-Feld ist manchmal etwas schwierig, wenn
die Tabelle mit anderen in der Beziehungsdefinition bereits verknüpft wurde oder wenn bereits mit
einer Ansicht auf die Tabelle zugegriffen wird. Hier müssen alle Verbindungen gelöst werden damit
die Tabelle gerade im Bereich des Primärschlüssels wieder editierbar wird. Der Inhalt des SQLBefehls, mit dem z. B. eine Ansicht erstellt wurde, kann ja gegebenenfalls als Abfrage
zwischendurch abgespeichert werden.
Integrity constraint violation - no parent SYS_FK_95 table: Tabellenname in statement …
Hier besteht eine Verknüpfung der dem Formular zugrundeliegenden Tabelle mit einer anderen
Tabelle. Diese Tabelle soll ein Fremdschlüsselfeld mit seinem Primärschlüssel belegen. Diesgeschieht in der Regel durch Listenfelder, die den Inhalt der Tabelle richtig abfragen. Ist aber gar
kein Listenfeld vorhanden oder die Konstruktion des Listenfeldes falsch, so kann in das
Fremdschlüsselfeld auch irrtümlich ein Wert eingegeben werden, der in der zweiten Tabelle gar
nicht als Primärschlüssel vorhanden ist. Dies wird als 'Integritäts-Verletzung' bezeichnet. 'noparent SYS_FK_95' deutet darauf hin, dass in der zweiten Tabelle, der abgebenden'Elterntabelle', der entsprechende Indexwert mit dem Namen 'SYS_FK_95' nicht vorhanden ist.
Fehler beim Einfügen des neuen Datensatzes.
Fehler in der Funktionsfolge
Einem Unterformular werden Daten von den darüber liegenden Formularen weitergegeben. Dies
sieht Base nicht als eine Änderung eines Feldes an. Die grafische Benutzeroberfläche bietet zwar
das Speichern an – nur scheint der Datensatz dann leer zu sein. Hier hilft es, ein einfaches Feldwie z. B. ein Ja/Nein-Feld in die dem Formular zugrundeliegende Tabelle einzubauen. Jetzt wird

Fehlermeldungen bei der Eingabe in Formulare

79vor dem Abspeichern dieses Feld abgehakt und der Datensatz kann problemlos gespeichert
werden.
Die über die anderen Formulare weitergegebenen Werte werden anscheinend erst dann in die
entsprechenden Felder eingefügt, wenn wenigstens eine zusätzliche Aktion im Formular stattfindet.

80

Formulare