Abfragen und Formulare

(Hinweis: Dieser Theorieteil behandelt Abfragen und Formulare in LibreOffice Base)

Inhalt

1. Abfragen erstellen
1.1 Tabellen auswählen
1.2 Attribute auswählen
1.3 Berechnete Attribute
1.4 Aggregatsfunktionen

2. Formulare erstellen
2.1 Einleitung
2.2 Gebundenes Formular
2.3 Formular mit Assistenten oder in der Entwurfsansicht erstellen
2.4 Formularvariante "Datenblatt"
2.5 Formularvariante "Subformular"
2.6 OpenOfficeBase-Formulartipps


1. Abfragen erstellen

1.1 Tabellen auswählen

Wählen Sie die Tabellen aus, aus denen Sie Daten beziehen möchten. Es können nachträglich weitere Tabellen hinzugefügt werden. Überprüfen Sie, ob die Beziehungen (Relationen) zwischen den Tabellen erstellt sind.

Hinweis: Wenn keine Relationen existieren, erstellt die DB eine vollständige Kombination der beteiligten Tabellen (Jeder Datensatz wird mit jedem Datensatz kombiniert), was kaum erwünscht ist.

1.2 Attribute auswählen

Klicken Sie in den Tabellen die Attribute an, die angezeigt werden sollen. Die Attribute werden automatisch in die unteren Felder eingetragen und können, wenn erforderlich, auch wieder von dort entfernt oder in der Anordnung verschoben werden. Mit der Funktionstaste F5 können Sie sich direkt das Resultat anzeigen lassen. Mit F4 lässt sich diese Resultats-Anzeige wieder ausblenden.

Um die Datensätze nach bestimmten Bedingungen zu filtern, können Kriterien eingegebene werden (Siehe Abfrageentwurf "Kriterium")

  • «6717» filtert PLZ, so dass nur Datensätze mit PLZ=6717 angezeigt werden.
  • «'Meier'» filtert Nachname nach Meier.
  • «Wie 'Me?er'» Das ? wirkt als Wildcard (ein Buchstabe kann beliebig sein). Damit würde man Meier und Meyer finden.
  • «Wie 'Me*er'» Der * wirkt als Wildcard (mehrere Buchstaben können beliebig sein). Damit würde man Meier, Meyer aber z.B. auch Meiser finden.
  • ODER-Verknüpfung von Kriterien: Unter Kriterium bzw. der darunterliegenden Zeile "oder" kann man mehrere Kriterien erfassen, die dann ODER-Verknüpft sind.
  • UND-Verknüpfung von Kriterien: Attribut zweimal auswählen und mit Kriterien versehen. Zum Beispiel: PLZ mit Kriterium  «>8000» und daneben PLZ mit Kriterium «<9000» würde alle PLZ anzeigen die zwischen 8000 und 9000 liegen.
    Dasselbe kann auch erreicht werden, wenn man PLZ nur einmal einträgt und als Kriterium folgendes angibt: «>8000 UND <9000»
  • Kriterium: > #01.01.2010# zeigt jedes Datum nach dem 1.1.2010 an.
  • Feld MONTH( [Geburtsdatum] ) zeigt nur den Monat des Geburtsdatums an.
  • Feld DATEDIFF( 'dd', [Geburtsdatum], '1980-01-01' ) zeigt die Differenz in Anzahl Tagen vom 1.1.1980.
  • Weitere Möglichkeiten zur Filterung entnehme man den LibreOffice Base Manuals.

1.3 Berechnete Attribute

Grundsätzlich sollten in Datenbanken keine Werte abgespeichert werden, die errechnet werden können (Redundanz). Somit ist die Tabelle "TUmsatz" nicht korrekt, weil mit dem Attribut "Umsatz CHF" genau dies getan wird. Mittels Abfragen, können wir aber eine solche Spalte "Umsatz CHF" definieren. Der Vorteil ist, dass dieser Werte bei jedem Aufruf der Abfrage neu berechnet wird und somit immer aktuell ist.

1.4 Aggregatsfunktionen

Diesen sind wir beim Thema Statistik bereits einmal begegnet. Aggregatsfunktionen sind aber auch hier möglich. Wichtig ist die Reihenfoge und Auswahl der Attribute. Es ist also wesentlich, ob man bei dem Beispiel unten das Attribut "ID_Rechnung" mit aufnehmen will und dann die Summe aller Positionen einer Rechnung erhält oder ob dieses Attribut weglassen wird und man dann die Summe der Umsätze der einzelnen Personen bekommt.


2. Formulare erstellen

2.1 Einleitung

Zum Nachvollziehen und Ergänzen steht diese OpenOfficeBase-Datenbank hier zur Verfügung: FormularBsp.odb Das verwendete Fallbeispiel ist eine Personen-Kontrollschild-Fahrzeug-Verwaltung, also eine mc-mc Beziehung Person zu Fahrzeug, die eine Zwischentabelle Kontrollschild erforderlich macht. Dazu das ERD:

2.2 Gebundenes Formular

Ein gebundenes Formular ist ein Datenbankobjekt, mit dem man eine Benutzeroberfläche für eine Datenbankanwendung erstellen kann. Es wird direkt mit einer Datenquelle verbunden, z.B. mit einer Tabelle oder Abfrage, und zum Eingeben, Bearbeiten oder Anzeigen von Daten aus einer Datenquelle verwendet.

2.3 Formular mit Assistenten oder in der Entwurfsansicht erstellen

Um in OpenOfficeBase Formulare zu erstellen, wechselt man zuerst in das Datenbank-Fenster (Linkes Fenster) und wählt dort «Formulare». Nun hat man zwei Möglichekeiten, sein Formular zu erstellen:

  • Formular in Entwurfsansicht erstellen...
  • Formular unter Verwendung des Assistenten erstellen...

Um ein neues Formular anzulegen, empfiehlt es sich, zuerst einmal den Assistenten zu benutzen. Danach muss, insbesondere bei komplexeren Ausgabenstellungen wo der Assistent bald einmal überfodert ist, in der Entwurfsansicht die Detailarbeit erledigt werden.

Hinweis: Das "einfache" Formular (Bild links) findet man in der OpenOfficeBase-DB «FormularBsp.odb» unter Formulare «F1_Liste». Das komplexere Formular mit Subformular (Bild rechts) findet man in der OpenOfficeBase-DB «FormularBsp.odb» unter Formulare «F5_Subform».


Die Datenbank-Eingabefelder (Formulare und Subformulare) können auf verschiedene Arten angelegt werden:

  • In Spalten - Beschriftungen links oder oben
  • Als Datenblatt
  • In Blöcken - Beschriftungen oben

2.4 Formularvariante "Datenblatt"

Personen-Kontrollschild-Fahrzeug-Verwaltung als Datenblatt: So soll es am Schluss aussehen:

Das Vorgehen

Der erste Formularentwurf wird mit dem Assistenten erstellt. Nur der «Feldauswahl» muss man besondere Beachtung schenken. Die weiteren Schritte können wie von OpenOfficeBase vorgeschlagen übernommen und allenfalls später im Entwurfsmodus angepasst werden.

Nachdem man das Formular mit dem Assistenten erstellt hat, wird es nun im Bearbeitungsmodus (=Entwurfsansicht) angepasst. Dazu das Formular anwählen, danach Rechtsklick - Bearbeiten.

  1. Spalte «F_Person» (=Fremdschlüssel Person) wählen und Rechtsklick, danach «Ersetzen durch» und «Listenfeld».
  2. Die Eigenschaften der Spalte ändern durch Rechtsklick auf «F_Person» und «Spalte...».
  3. In den «Eigenschaften Listenfeld» die Datenquelle «Daten» auf «SQL» ändern. Damit soll erreicht werden, dass anstatt dem Fremdschlüssel «F_Person» der Name der betreffenden Person angezeigt wird. Dies erfolgt über eine Abfrage aus der Tabelle «T_Person».
  4. Nun muss noch die Datenquelle definiert werden. Dazu in den «Eigenschaften Listenfeld» den «Listeninhalt» anpassen > Den Button mit den drei Pünktchen anwählen und es öffnet sich der Abfrageassistent. Bei «Tabelle oder Abfrage hinzufügen» die Tabelle «T_Person» hinzufügen und den Dialog schliessen.
  5. Im oberen Teil des Abfrageassistenten ist nun die Tabelle «T_Person» aufgeführt. In dieser nacheinander die Felder «Name» und «P_Person» anklicken. Die Attribute erscheinen nun im unteren Teil des Abfrageassistenten. Die Kolonne ganz rechts muss das Attribut sein, das in die Tabelle «T_Kontrollschild» geschrieben wird, in unserem Fall der Fremdschlüssel «F_Person».

Hinweis: Dieses Datenblatt-Formular findet man in der OpenOfficeBase-DB «FormularBsp.odb» unter Formulare «F2_ListeListe».


An dieser Stelle eine kleine Ergänzung:
Will man zusätzlich zum Personennamen «Name» auch noch das weitere Attribut «PLZ» anzeigen, muss wie folgt vorgegangen werden:

  • Im Abfrageassistenten zusätzlich das Attribut «PLZ» anwählen
  • Als «Listeninhalt» wird nun das folgende SQL-Kommando angezeigt:
    SELECT "Name", "PLZ", "P_Person" FROM "T_Person"
  • Da im Datenblatt nur eine Kolonne zur Verfügung steht, müssen die beiden Attribute «Name» und «PLZ» im SQL-Kommando wie folgt verknüpft werden:
    SELECT "Name"||', '|| "PLZ", "P_Person" FROM "T_Person"

Hinweis: Dieses Datenblatt-Formular findet man in der OpenOfficeBase-DB «FormularBsp.odb» unter Formulare «F3_ListeListe».


Aufgabe: Ersetzen sie nun in der OpenOfficeBase-DB «FormularBsp.odb» im Formular «F3_ListeListe» den Fremdschlüssel «F_Autotyp» durch die Fahrzeugbezeichnung «Bezeichnung», wiederum als Abfrage aus der Tabelle «T_Autotyp».

2.5 Formularvariante "Subformular"

Personen-Kontrollschild-Fahrzeug-Verwaltung mit Subformular: Die ist eine Alternative zu dem Formular als Datenblatt und so soll es am Schluss aussehen:

Das Vorgehen

Der erste Formularentwurf wird wiederum mit dem Assistenten erstellt. Die Schritte werden in der folgenden Abbildung gezeigt:

Hinweis: Dieses Formular mit Subformular findet man in der OpenOfficeBase-DB «FormularBsp.odb» unter Formulare «F4_Subform».

Bemerkung: «Subformular basiert auf bestehender Beziehung» bedeutet, dass die Beziehungen zwischen den Tabellen (siehe  Topmenu «Extras / Beziehungen») richtig erstellt wurden.

Aufgabe: Ersetzen sie nun in der OpenOfficeBase-DB «FormularBsp.odb» im Formular «F4_Subform» den Fremdschlüssel «F_Autotyp» durch die Fahrzeugbezeichnung «Bezeichnung», wiederum als Abfrage aus der Tabelle «T_Autotyp».

Soll nun auch noch die Tabelle «T_Autotyp» bearbeitet werden können, muss dafür ein weiteres Formular erstellt werden. Wie das etwa aussehen könnte, zeigt die OpenOfficeBase-DB «FormularBsp.odb» mit dem Formular «F5_Subform».

2.6 OpenOfficeBase-Formulartipps

Folgende Symbolleisten sollten im Fenster des Bearbeitungsmodus verfügbar sein (Wählbar im Topmenü unter Ansicht/Symbolleisten):

  • Formular-Steuerelemente (Beinhaltet z.B. Schaltflächen, Listen- und Kombinationsfelder etc.)
  • Formular-Navigator (Wichtig für die Übersicht Formular/Unterfomular und entsprechende Elemente)
  • Formular-Entwurf (Enthält z.B. den Umschaltknopf Entwurfsmodus an/aus und den Knopf für den Formular-Navigator)
  • Zeichnung (Enthält grafische Formen und ein Textwerkzeug)

Beim Erstellen von Formularen und Unterformularen ist folgendes zu beachten:

  • Der Formular-Navigator ist wichtigstes Instrument zum Überprüfen der Formularstruktur.
  • Die Formulare/Unterformulare sind im Formular-Navigator hierarchisch angeordnet.
  • Soll in einem Formular ein Unterformular erstellt werden, muss im Formular-Navigator das entsprechende überzuordnende Formular mit Rechtsmausklick selektiert werden. Danach Neu/Formular wählen. Durch Einrücken des neu erstellten Unterformulars wird angezeigt, dass dies hierarchisch unter dem bereits bestehenden Formular angeordnet ist.
  • Das Formular (bzw. Unterformular) dient lediglich als Datenquelle. Zu erkennen durch das Selektieren des Formulars mit Rechtsmausklick und danach Eigenschaften wählen. Bei dem nun sich öffnenden Formular-Eigenschaftsfenster interessiert vor allem die Datenherkunft unter Daten/Inhalt.
  • Das Formular kann nicht für Eingaben verwendet werden. Dazu muss man dem Formular nun Eingabefelder wie Listen- und Kombinationsfelder etc. einverleiben. Durch Rechtsklick auf das entsprechende Feld können unter Kontrollfeld wichtige Eigenschaften ergänzt oder überprüft werden wie z.B. Daten/Datenfeld.
  • Auch bei den Schaltflächen muss beachtet werden, welchem Formular diese man hinzufügt.
  • Als Unterformular empfiehlt sich die Verwendung eines Grids. (Tabellen-Kontrollfeld). Dies kann man bei den Formular-Steuerelementen finden. Aus Platzgründen werden einige Felder, mitunter auch das Tabellen-Kontrollfeld nicht direkt angezeigt. Darum zuerst das Icon «Weitere Steuerelemente» anklicken (Icon mit zwei Symbolen und drei Punkten darunter)
  • Ein Tabellen-Kontrollfeld kann mehrere Spalten mit z.B. Listenfelder enthalten.