Einführung
in
MS Access

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Karel  ŠTÍPEK
www.geocities.com/kstipek
kstipek@gmx.net

 


Einleitung

Was ist MS Access?

Microsoft Access ist ein Mitglied der Microsoft-Office Familie, wohin Word, Excel und PowerPoint auch gehören. Alle Programme aus dieser Familie haben ähnliche Bedienung. Die Strukturen der Menüpunkte und der Schaltflächenleisten, die in allen Produkten vorkommen, sind gleich. Dadurch ist es einfacher, wenn man schon ein Produkt kennt (z.B. Word), auch ein weiteres zu erlernen.

Die Zusammengehörigkeit hat auch andere Vorteile. Alle Programme können problemlos miteinander kommunizieren und Daten austauschen. Es ist z.b. möglich, eine Excel-Tabelle in ein Word-Dokument einzufügen oder sogar ein Programm aus dem anderen aufzurufen.

Alle Office-Produkte sind auch programmierbar. Diese Möglichkeit bietet noch viel mehr als die übliche Ausnutzung der vorhandenen Funktionalität. Die dafür notwendige Programmiersprache VBA (Visual Basic for Applications) ist ebenso für alle Programme gemeinsam.

Jedes Office Produkt hat bestimmte Aufgabengebiete, für die es am besten geeignet ist.

Ziel des Kurses

Wie auch viele andere Programme, ist MS Access sehr komplex. Aus der Office-Familie ist es zweifellos gerade deswegen am wenigsten bekannt, weil es schwieriger zu erlernen ist. Das intuitive "Learning by Doing" wie bei Word oder Excel kann entweder scheitern oder bringt nur teilweise befriedigende Ergebnisse ohne dass man die wichtigsten Vorteile überhaupt entdeckt.

Aber Sie brauchen keine Angst haben. Auch komplizierte Sachen gehen von einfachen Prinzipien aus. Wenn man die richtigen Zusammenhänge lernt, meistert man auch problemlos komplizierte Aufgaben. Wenn Sie wissen werden WAS und WARUM, finden Sie auch WIE. Mit anderen Worten: Probieren über Studieren.

Wir werden uns wenig mit trockenen Theorien beschäftigen, sondern im Rahmen unseres Kurses ein richtiges, brauchbares Programm gemeinsam bauen.

Wie wäre es mit einer Datenbank für die Evidenz von CDs für den Heimgebrauch?

Es gibt bei der Entwicklung eines Computerprogramms immer viele unterschiedliche Wege zum gleichen Ziel. Sie kennen aus Ihrer Praxis sicher Programme, die wirklich Helfer und Zeitsparer sind, weil sie zuverlässig, leistungsfähig und einfach zu Bedienen sind. Dagegen gibt es Lösungen, die keine Freude machen – fehlerhaft, mit nicht ausreichender Funktionalität oder mit komplizierter Bedienung.

Mit MS Access habe ich schon unzählige Applikationen aus vielen Bereichen erfolgreich fertiggestellt. In diesem Kurs möchte ich Ihnen auch einige guten Gewohnheiten aus der professionellen Praxis zeigen. Eine besondere Aufmerksamkeit werden wir der Datenmodellierung widmen. Das ist nämlich die wichtigste Grundlage für ein gutes Datenbankprogramm.

Ein Thema schaffen wir in unserem Einführungskurs aus Zeitgründen leider nicht – die VBA-Programmierung. Es wird nur ganz kurz am Ende aufgerissen – als ein Vorgeschmack für Ihren nächsten Kurs „VBA-Programmierung im MS Access“.

Die Beispiele im Skriptum wurden mit MS-Access Version 2000 erstellt. Wenn Sie mit einer neueren Version arbeiten, kann das Aussehen der Formulare geringfügig abweichen.

Schon gespannt? Haben Sie, bitte, noch ein bisschen Geduld.

Das nächste Thema hat mit MS Access nichts zu tun, ist aber trotzdem sehr wichtig.


Bevor wir anfangen

Bevor es richtig los geht noch ein paar allgemeine Ratschläge aus der Praxis. Viele verzweifelte Menschen habe ich schon gesehen, die Stunden und Tage ihrer Arbeit verloren haben, weil sie plötzlich diese oder jene Datei nicht öffnen oder finden konnten und vom Anfang an alles neu tippen mussten.

Ein paar Ideen können Ihnen viel Ärger und Arbeit ersparen:


Zu diesem Zeitpunkt, wenn ich das Skriptum schreibe, schaut es auf meiner Festplatte so aus:

Textfeld:

Die Dateien sind nach dem Datum absteigend sortiert.

Ganz oben ist also die gerade bearbeitete Version, darunter einige Zwischen-Kopien.

Ganz unten ist eine Version, die unter dem Namen mit Datum fixiert wurde.

 

 

 

 

 

Übung

 

 


Datenbank

Was ist eine Datenbank?

Eine Datenbank ist eine spezielle Applikation, womit große Mengen von Informationen, sog. Daten gespeichert werden können. Informationen kann man auf unterschiedliche Art und Weise speichern. Auch mit Programmen wie Word oder Excel ist es möglich, Tabellen zu erstellen und Daten eingeben. Doch kann man mit diesen Mitteln keine richtige Datenbank bilden.

Die Daten in einer Datenbank werden nach genauen Regeln der Datenmodellierung gespeichert. Das bringt folgende Vorteile:

Die Speicherung der Daten erfolgt in einem Teil der Applikation, der auch als Back-End bezeichnet wird.
Die Eingabe, Abfragen und Präsentation von Daten erledigt der für den Anwender sichtbare Teil, der sog. Front-End. Mit MS Access ist es möglich, beide Teile zu realisieren.

MS Access Datenbank

Eine MS-Access Datenbank besteht aus vielen Teilen, den sog. Objekten, die Sie fast alle in dem Kurs kennen lernen werden. Technisch gesehen sind alle Objekte einer Datenbank in einer gemeinsamen Datei gespeichert, die die Erweiterung .MDB hat.

Einstiegsdialog

Nachdem Sie MS Access gestartet haben, erscheint der  Einstiegsdialog mit folgenden vier Möglichkeiten:

Textfeld:

  1. Wenn Sie nur auf OK klicken, wird der Standard-Dialog „Öffnen“ angezeigt und Sie können eine Datenbank auswählen.
  2. Sie können eine Datenbank aus der Liste der zuletzt geöffneten Dateien auswählen.
  3. Nach der Auswahl einer leeren Access-Datenbank kommt wieder ein Standard-Dialog.
  4. Mit den Access-Datenbank-Assistenten können Sie eine vorgefertigte Datenbank schnell erstellen. Diese Möglichkeit werden wir am Ende des Kurses ausprobieren.

 

 

 

Dieser Dialog wird ausgeblendet, wenn Sie auf  <Abbrechen> klicken oder eine Datenbank schließen ohne MS Access zu beenden. Sie können dann trotzdem eine Datenbank über den Menüpunkt Datei oder die entsprechenden Schaltflächen erstellen oder öffnen.


Datenbankfenster

Das Datenbankfenster ist die Steuerzentrale Ihrer Datenbank. Hier werden alle vorhandenen Objekte angezeigt. Wenn Sie dieses Fenster schließen, haben Sie damit auch die ganze Datenbank geschlossen.

Beachten Sie zuerst die drei Schaltflächen links oben.

Textfeld:

Öffnen
ein bestehendes Objekt wird so geöffnet wie es der Anwender sieht.

Entwurf
ein bestehendes Objekt wird in der Entwurfsansicht geöffnet und kann geändert werden

Neu
ein neues Objekt wird entweder manuell oder mit Hilfe von Assistenten erstellt.

 

Mit den daneben liegenden Schaltflächen können Sie ein Objekt löschen oder das Layout der Auflistung ändern.

Datenbankobjekte

Im linken Teil des Fensters können Sie sehen, dass es mehrere Typen von Objekten gibt. Mit den ersten vier werden wir uns in diesem Kurs am meisten beschäftigen.

Tabellen

In Tabellen werden die Daten gespeichert.

Abfragen

Mit Abfragen werden vor allem die Daten nach bestimmten Kriterien selektiert.

Formulare

Formulare haben in der Datenbank zwei wichtige Aufgaben:

1.       Sie ermöglichen eine komfortable und übersichtliche Eingabe und Anzeige von Daten

  1. Mittels der Formulare wird die ganze Applikation gesteuert.
Berichte

Berichte dienen wie die Formulare zur Anzeige von Daten. Sie werden so formatiert, dass sie übersichtlich ausgedruckt werden können.

Seiten

Es handelt sich hier um spezielle Web-Seiten, womit Daten im Internet oder Intranet angezeigt werden können..

Makros

Mit Hilfe von Makros können Vorgänge in einer Datenbank automatisiert werden.

Module

Module speichern Teile des VBA-Codes, gehören also in den Bereich der Programmierung.


Namenskonventionen für Datenbankobjekte

Eine komplexe Datenbank kann auch mehrere Hunderte von Objekten enthalten. Damit man dabei die Übersicht nicht verliert, ist es empfehlenswert, bestimmte Namenskonventionen zu beachten. Besonders bei der Programmierung, wenn Objekte aus dem Programmcode angesprochen werden, ist es günstig, sofort zu erkennen, um welchen Objekttyp es sich handelt.

Wir werden den Namen der Objekte je nach dem Typ folgende Präfixe voranstellen:

tbl...

Tabelle

qry...

Abfrage

frm...

Formular

rpt...

Bericht

Für die Vergabe von Namen der Datenbankobjekte gilt die gleiche Empfehlung wie in der Einleitung für die Dateinamen. Es wird empfohlen, keine Leerzeichen zu verwenden.

Arbeiten mit dem Hilfesystem

MS Access bietet umfangreiche Unterstützung durch das Hilfesystem. Der Aufruf ist jederzeit mit der Taste <F1> möglich und arbeitet kontextsensitiv, das heißt, bietet das Thema an, das gerade ihrem aktuellen Arbeitsschritt entspricht. Das Hilfefenster hat sonst drei Möglichkeiten, wie das entsprechende Thema gesucht werden kann:

Textfeld:

Inhalt
Alle Themen werden in einer Baumstruktur dargestellt.

Antwort-Assistent
Eine frei formulierte Frage kann eingegeben werden, die entsprechenden Themen werden zur Auswahl angeboten.

Index
Auf dieser Registerseite können die Themen zu einem eingegebenen Schlüsselwort gesucht werden.

 

Übung


Tabellen

Grundbegriffe

Stellen Sie sich vor, dass Sie in einem Personalbüro arbeiten und die Personaldaten von allen Mitarbeitern Ihrer Firma zusammenfassen sollen. Wie würden Sie in den Zeiten vorgehen, als es noch keine Computer gab und wie werden Sie ihre Aufgabe mit Hilfe einer Datenbank erledigen?

Machen wir einen Vergleich:

manuell

mit einer Datenbank

Eine Kartei für die Ablage von ausgefüllten Personalbogen aufstellen.

Eine Datenbank erstellen.

Ein Formular für die Datenerfassung entwerfen, d.h. die Eingabefelder für Name, Vorname, Geburtsdatum, Geburtsort, Ausbildung, usw. auf Papierblätter ausdrucken lassen.

Die Tabellenstruktur entwerfen, die aus Tabellenfeldern besteht.

Für jeden Mitarbeiter ein Blatt ausfüllen.

Für jeden Mitarbeiter einen Datensatz in die Tabelle eingeben.

Überprüfen, ob die Formulare richtig ausgefüllt sind.

Die Datenüberprüfung erfolgt bei der Eingabe automatisch, weil die Bedingungen beim Tabellenentwurf festgelegt wurden.

Die Mitarbeiter, die bestimmte Kriterien erfüllen (z.B. Matura-Absolventen) aussuchen.

Eine Abfrage erstellen und öffnen.

Das Formular von einem ausgeschiedenen Mitarbeiter aussortieren.

Einen Datensatz in der Tabelle löschen

Tabelle erstellen

 Aufgabe

Erstellen Sie eine Tabelle für die Speicherung von Adressen.

Die Tabelle soll folgende Datenfelder enthalten:

Nachname

das Feld muss eingegeben werden

Vorname

 

Geburtsdatum

auch den Wochentag anzeigen

Verheiratet

nur Werte Ja oder Nein

Anzahl der Kinder

darf nicht negativ sein

Firmenname

 

Firmentelefonnummer

 

Notiz

ein beliebig langer Text

Kategorie

erlaubte Werte: Familie, Schulfreund, Arbeitskollege

Jeder  Datensatz soll eine eindeutige Nummer haben.

Speichern Sie die Tabelle unter dem Namen tblPerson.
(Es kann darüber diskutiert werden, ob Einzahl oder Mehrzahl für die Tabellennamen besser ist. Aus der Sicht der Datenmodellierung (später) scheint die Einzahl geeigneter zu sein).


Technische Namen der Tabellenfelder

Damit Sie sich in einer Datenbank mit mehreren Tabellen gut auskennen, ist es empfehlenswert den Namen der Tabellenfelder eine Abkürzung des Tabellennamens voranzustellen, z.B. PERS_Nachname statt nur Nachname.

Sie werden später sehen, dass diese „unschönen“, sog. technischen Namen nur intern verwendet werden und für den Anwender der Datenbank verborgen bleiben.

Entwurfsansicht

Klicken Sie im Datenbankfenster der Datenbank CD_Evidenz.mdb auf die Lasche Tabellen und klicken Sie doppelt auf die erste Zeile Erstellt eine Tabelle in der Entwurfsansicht.

Textfeld:  

Das leere Fenster für den Entwurf einer Tabelle wird geöffnet. Auf dem folgenden Bild ist es schon ausgefüllt, damit es besser beschrieben werden kann.

 

Im oberen Bereich werden die Namen und Datentypen der Tabellenfelder  definiert. Eine Zeile entspricht einem Feld (einer Spalte).

In die Spalte Beschreibung kann bei Bedarf erklärender Text eingetragen werden.

 

 

 

Im unteren Teil können zusätzliche Feldeigenschaften festgelegt werden.

Rechts wird automatisch ein erklärender Text eingeblendet.

 

 

Felddatentypen

Folgende Felddatentypen stehen Ihnen zur Auswahl:

Text

Maximal 255 beliebige Zeichen können eingegeben werden.

Memo

Ein Textfeld ohne Längenbegrenzung

Zahl

In Feldern dieses Typs werden Zahlen eingegeben.

Datum/Uhrzeit

Die Gültigkeit der Eingabe wird automatisch überprüft.

Währung
Ein Zahlen-Feld mit dem in der Windows-Systemsteuerung festgelegten Währungszusatz.

Autowert

Eine automatisch generierte in der Tabelle eindeutige Nummer. Der Inhalt kann nicht geändert werden.

Ja/Nein
Nur diese zwei Werte können eingegeben werden.

OLE-Objekt

In diesem Feld können Objekte aus anderer Windows-Anwendungen gespeichert werden (z.B. Excel-Tabelle)

Hyperlink

Damit können Sie zu einer Stelle in einer anderen Datei oder zu einer Internet-Seite springen.

Nachschlage-Assistent

Die Menge der erlaubten Werte kann in der sog. Nachschlagetabelle eingetragen werden.

Feldeigenschaften

Die Auswahlmöglichkeiten der Feldeigenschaften sind von dem jeweiligen Felddatentyp abhängig. Die wichtigsten werden in der folgenden Tabelle aufgelistet:

Feldgröße

Anzahl von Zeichen, die in ein Textfeld eingegeben werden können.

Format

Anzeigeformat für den Feldinhalt

Eingabeformat

Muster für die Eingabe von Daten

Dezimalstellenanzeige

Anzahl der Dezimalstellen bei Zahlen- und Währungsfeldern

Beschriftung

Feldbezeichnung in Tabellen, Formularen und Berichten

Standardwert

Vorbelegung des Feldes bei neuen Datensätzen

Gültigkeitsregel

Regel zur Überprüfung einer konkreten Eingabe

Gültigkeitsmeldung

Fehlermeldung bei falscher Eingabe aufgrund der Gültigkeitsregel

Die Eigenschaft Beschriftung ermöglicht die Trennung zwischen dem technischen Feldnamen und dem Feldnamen, den der Anwender sehen soll. Den Unterschied können Sie im oberen Bild sehen.
Sie benennen das Feld PERS_Anzahl_Kinder, in den Tabellen bei der Eingabe, Formularen und Berichten werden Sie aber die Beschriftung Anzahl der Kinder sehen.

Wenn Sie die Eigenschaft Format beim Geburtsdatum auf Datum,lang einstellen, wird beim Datum auch der Wochentag angezeigt.

Die Kombination der Eigenschaften Gültigkeitsregel und Gültigkeitsmeldung ermöglichen die Überprüfung der eingegebenen Werte. Bei numerischen Feldern sind die üblichen mathematischen Ausdrücke als Gültigkeitsregel einzutragen. Um zu vermeiden, dass das Feld leer bleibt, schreiben Sie hinein Ist Nicht Null. Der Termin Null ist in diesem Fall nicht die Zahl Null, sondern die Bezeichnung für einen leeren Feldinhalt.

Primärer Schlüssel

Wie Sie später noch erfahren werden, ist es in einer Datenbank besonders wichtig, dass jeder Datensatz eindeutig identifizierbar ist. Man muss einen sog. primären Schlüssel definieren. Die Eindeutigkeit aufgrund der eingegebenen Daten festzulegen ist schwierig. Nicht einmal die Kombination Nachname + Vorname + Geburtsdatum kann in größeren Datenmengen (z.B. Kunden einer Versicherungsanstalt) die Eindeutigkeit gewährleisten.

MS Access bietet uns zu diesem Zweck den Datentyp Autowert an. Dessen Wert ist immer garantiert eindeutig. Um in unserer Tabelle das Feld PERS_ID zum primären Schlüssel zu machen, markieren Sie es und klicken in der Schaltflächenleiste auf das Schlüsselsymbol.

Entwurfs- und Datenblattansicht

Nachdem Sie alle notwendigen Definitionen durchgeführt haben, können Sie die Tabelle unter den Namen tblPerson speichern.

Wenn Sie jetzt auf die erste Schalfläche links klicken, kommen Sie zu der sog. Datenblattansicht dieser Tabelle. In dieser Ansicht können Sie Daten eingeben. Sie können natürlich immer (mit der ersten Schaltfläche) zwischen diesen beiden Sichten wechseln, z.B.  in der Entwurfsansicht die Gültigkeitsregeln ändern, in der Datenblattansicht sie sofort bei der Eingabe überprüfen.


Übung

Nachschlage-Assistent

Es bleibt noch ein Punkt des Entwurfs der Tabelle tblPerson offen – die Einschränkung der möglichen Kategorienwerte auf eine vordefinierte Menge. Die Werte sind schon in der sog. Nachschlagetabelle tblKategorie vorbereitet. Wir müssen sie nur mehr mit der Tabelle tblPerson richtig verbinden.

Öffnen Sie die Tabelle tblPerson in der Entwurfsansicht und ändern Sie den Felddatentyp des Feldes PERS_Kategorie auf Nachschlage-Assistent. Auf Ihrem Bildschirm erscheint folgendes Fenster:

Textfeld:

Da Sie die Werte in der Tabelle tblKategorie haben, lassen Sie die Standardwahl unverändert. Die Lösung in am flexibelsten – eine neue Kategorie zu definieren heißt nur einen neuen Datensatz in die Nachschlagetabelle zu schreiben.

Wenn Sie Werte in die Liste eingeben, müssten Sie immer den Tabellenentwurf der Tabelle tblPerson ändern. Solche Manipulationen sollten dem Entwickler vorbehalten werden.

Textfeld:  Klicken Sie auf Weiter

 

 

Auf dieser Maske haben Sie eine leichte Wahl.

 

 

 

 

 

 

 

Klicken Sie auf Weiter

 

Textfeld:

Übernehmen Sie das einzige Feld aus den verfügbaren in die ausgewählten mit der ersten Schaltfläche oben.

 

 

 

 

 

 

Klicken Sie auf Weiter

Textfeld:

 

In dieser Maske legen Sie die Breite des Nachschlagefeldes mit Rücksicht auf die gespeicherten Werte fest.

 

 

 

 

 

 

Klicken Sie auf Weiter

Textfeld:

 

 

Die Arbeit mit dem Nachschlage-Assistenten beenden Sie mit der Eingabe der gewünschten Aufschrift und dem Klick auf Fertig stellen.

 

 

 

 

 

 

 

In der Datenblattansicht der Tabelle tblPerson können Sie die Auswirkungen sehen. Im Feld Kategorie können Sie die in der Tabelle tblKategorie eingetragenen Werte auswählen.

Übung

Erweitern Sie die Auswahl der Kategorien um einen neuen Eintrag Sportverein.

Arbeit in der Datenblattansicht

In der Datenblattansicht stehen Ihnen viele Funktionen zur Verfügung. Die meisten sind sowohl über das Menü als auch über das Kontextmenü (rechte Maustaste) aufrufbar. Viele arbeiten praktisch gleich wie im Excel.

Navigieren

Ganz unten am Fensterrand liegt die Navigationsleiste.

Damit können Sie zum erstem, vorigen, nächsten, letzten oder einem neuen Datensatz springen.

Daten bearbeiten und einfügen

Die Dateneingabe erfolgt direkt in die Felder der Tabelle. Von einem Feld zum nächsten können Sie mit der Tabulatortaste oder mit der <Enter>  springen. Nachdem Sie am Ende des Datensatzes angelangt sind, springen Sie zum nächsten Datensatz.

Einige Tasten, bzw. Tastenkombination erleichtern die Dateneingabe.

<Strg><+>

Sprung zum neuen Datensatz

F2

Schaltet zwischen der Markierung des ganzen Feldes und dem Eingabecursor um

<Strg><#>

Kopiert den Feldinhalt aus dem vorherigen Datensatz

<Shift><F2>

Der Inhalt des Feldes wird im Zoom-Fenster angezeigt

Daten löschen

Markieren Sie ein Felder, einen oder mehrere Datensätze oder die ganze Tabelle (in der linken oberen Ecke) und drücken Sie die Taste <Entf>.

Layout ändern

Sie können die Spaltenbreiten anpassen, einzelne Spalten aus- und einblenden, aufsteigen oder absteigend sortieren.

Suchen und ersetzen

Die Dialogfenster werden mit den Tastenkombinationen <Strg><F>, bzw. <Strg><H> aufgerufen.

Filtern

Filtern heißt die Menge der angezeigten Daten nach bestimmten Selektionskriterien einzuschränken. Alle Filterwerkzeuge sind über das Menü Datensätze->Filter abrufbar. Die am häufigsten verwendeten Filter sind auch über die Schaltflächen erreichbar:

Textfeld:  Auswahlbasierter Filter wählt alle Datensätze aus, die den markierten Text auf einer beliebigen Position in der jeweiligen Spalten enthalten

Textfeld:  Formularbasierter Filter ermöglicht die direkte Eingabe von Selektionswerten in eine oder mehrere Spalten. Auch komplexe Selektionsausdrücke sind mit diesem Filter möglich.

Übung

Öffnen Sie in der Datenbank Access_Beispiele.mdb die  Tabelle tblArtikelDenorm in der Datenblattansicht und probieren Sie die oben beschriebene Funktionalität aus..

 

 


Datenmodellierung

Der Entwurf der Tabelle tblPerson ist FALSCH

Warum? So eine schöne Tabelle! (Einige Felder sind hier wegen der Übersichtlichkeit ausgeblendet)

Wir haben doch alles schön beieinander. Einige Angaben zur Person, einige zur Firma, wir können alle Mitarbeiter einer Firma selektieren und alles Mögliche und Unmögliche tun.

Es ist doch einiges einzuwenden

Bevor Sie über folgende Fragen nachdenken, gehen Sie davon aus, dass eine solche Tabelle nicht sechs sondern sechs Millionen Datensätze hat. Die Millionen sind nicht selten, stellen Sie sich vor, wie viel Kunden, Artikel oder Bestellungen eine große Firma hat.

So geht’s einfach nicht. Oder nur schwierig, langsam und fehleranfällig.

Was ist die richtige Lösung?

Die Personen und die Firmen müssen wir voneinander trennen. Die Angaben (in weiterem Attribute genannt) zu einer Person speichern wir in einer Tabelle, die Attribute einer Firma in einer anderen Tabelle. Wie werde ich aber dann festlegen, welche Person bei welcher Firma arbeitet?

Die Lösung ist einfach und heißt
Fremder Schlüssel

Sie wissen schon, was der primäre Schlüssel einer Tabelle ist. Es ist die Nummer, mit der jeder Datensatz eindeutig identifiziert wird. Wir nummerieren so die Personentabelle und auch die Firmentabelle. Und den primären Schlüssel der Firma speichern wir als ein neues Feld in die Personentabelle. Er ist zwar ein Schlüssel, der aber in der Personentabelle fremd ist, wird also als fremder Schlüssel bezeichnet.

Aha, dann muss ich aber, wenn ich eine Person eingebe immer in die Firmentabelle schauen, damit ich die Nummer weiß, die ich als fremden Schlüssel eintragen soll?
Natürlich nicht.
Die Verknüpfung der Tabellen wird über ein Nachschlagefeld organisiert, fast genau so, wie die Eingabe der Kategorie in unsere erste Tabelle. Sie werden die Firmen aus ihren Namen auswählen, nach der Auswahl wird aber nicht der Name, sondern der Schlüssel der Firma als fremder Schlüssel in die Personentabelle gespeichert. In der Datenblattansicht selbst wird der Name der Firma, nicht der numerische Schlüssel angezeigt.

Wenn der Firmenname geändert wird, wird die Änderung nur einmal in der Firmentabelle durchgeführt, alle (egal wie viele) Einträge in der Personentabelle werden automatisch geändert.
Das Ergebnis schaut so aus:

Der technische Namen des fremden Schlüssels setzt sich aus der Abkürzung für die Tabelle, wo er gespeichert ist und dem Namen der Tabelle, woher er kommt (dort ist er als primärer Schlüssel vorhanden). Diese Namenskonvention trägt der guten Übersichtlichkeit bei.

Der Felddatentyp für die Speicherung des fremden Schlüssels muss Zahl / Long Integer sein

So wird eine Datenbank gebaut

Der richtige Entwurf von Tabellen nach Prinzipien der Datenmodellierung ist der wichtigste Faktor für die gute  Funktionalität einer Datenbankapplikation. Die Theorien, wie z.B. die sog. Normalformen würden den Rahmen dieses Kurses bei Weitem sprengen. Wir kommen in unserer Datenbank mit einfachen Fragen und Überlegungen auch ohne die exakte Theorie zum richtigen Ergebnis.

Entitäten

Zuerst müssen sog. Entitäten gefunden werden. Die Entitäten sind Objekte der realen Welt, die aber nicht nur physikalische Gegenstände oder Lebewesen sein können, sondern auch z.B. Ereignisse, Vorgänge u.v.a.). Die Zusammenfassung aller Entitäten des gleichen Typs (ein sog. Entitätstyp) wird in der Datenbank als eine Tabelle implementiert.

In unserem ersten Beispiel erkennen wir zwei Entitäten

  1. Person
  2. Firma

Zwischen den Entitäten existieren Beziehungen, die man mit folgenden Aussagen beschreiben kann:

Eine Firma kann mehrere Personen beschäftigen.
Eine Person kann bei einer Firma angestellt werden.

Beziehung 1:N

Die Beziehung wird durch die Häufigkeit der Auftritte des Schlüsselwertes in beiden Entitäten charakterisiert.

Auf der Firmenseite kommt jeder Firmenschlüssel nur einmal vor.

Auf der Personenseite kann jeder Firmenschlüssel mehrmals vorkommen, weil mehrere Personen bei der gleichen Firma arbeiten können.

Solche Situation wird als die Beziehung 1:N bezeichnet.

Beziehung M:N

Die Struktur des Datenmodells, besonders die Problematik der Beziehungen hängt stark von der Aufgabenstellung ab. Die Beziehung 1:N ist in Ordnung, wenn es darum geht zu den Personen die Information über nur eine Firma (die aktuelle) zu  speichern. Für folgende Aufgaben reicht es aber nicht:

Wenn Sie die oben erklärte Beziehung 1:N einfach umdrehen, könnten Sie einer Person mehrere Firmen zuordnen, nicht aber gleichzeitig einer Firma mehrere Personen.

Die Beziehung, wo auf beiden Seiten die Schlüsselwerte mehrmals vorkommen,
wird als die Beziehung M:N bezeichnet. Sie lässt sich nur mit Hilfe einer dritten Entität, einer sog. Beziehungsentität realisieren.

Wir benennen die Entität Anstellung. Die entsprechende Tabelle tblAnstellung wird folgende Felder haben:

ANST_PERS_ID

Prim. Schlüssel der Person

 

ANST_FIRMA_ID

Prim. Schlüssel der Firma

ANST_Von

Anfang der Anstellung

Diese Felder gehören weder zur Person noch zur Firma – es sind Attribute der Beziehungsentität

ANST_Bis

Ende der Anstellung

Das Beziehungsfenster

Die mit dem Nachschlage-Assistenten erstellten Tabellenbeziehungen können im Beziehungsfenster (Menü Extras->Beziehungen) um die referentielle Integrität ergänzt werden. Sie garantiert die Konsistenz der Datenbank.

Die Beziehung 1:N schaut im Beziehungsfenster so aus:

Textfeld:

Symbol 1 bezeichnet die 1-Seite, das „Unendlich“ Symbol die N-Seite der Beziehung.

Klicken Sie mit der rechten Maustaste auf die Verbindungslinie und wählen „Beziehung bearbeiten“ aus. 

 

 

Mit dieser Einstellung werden

 

 
Die Beziehung M:N schaut im Beziehungsfenster so aus:

 

 

 

 

 

 

 

 

Aus dem Bild ist ersichtlich, dass die Beziehungsentität die Beziehung M:N eigentlich in zwei Beziehungen 1:N umwandelt.


Übungen

1. Wie wird die Definition einer Anstellung eingeschränkt, wenn Sie in der Tabelle tblAnstellung die Kombination der Felder ANST_PERS_ID und ANST_FIRM_ID als primären Schlüssel definieren?

2. Auf dem folgenden Bild ist das Datenmodell der Beispieldatenbank Nordwind.mdb, die mit MS Access mitgeliefert wird.

 

3. Eine Applikation für die Verteilung der Weihnachtsgeschenke speichert alle Daten in folgender Tabelle.

 

 

 

 


Datenmodell der CD-Evidenz

Nach dem schwierigen aber wichtigen Kapitel über die Datenmodellierung werden wir uns jetzt nur mehr unserem praktischen Ziel widmen – dem Aufbau der Datenbank für die CD-Evidenz.

Aufgabenstellung

Unsere Datenbank soll die Informationen über die CDs und ihre Inhalte speichern.. Die CDs sollen vordefinierten Kategorien zugeordnet werden. Für jede CD werden die Namen aller Lieder (entsprechen den  Spuren auf der CD – es können auch Musik- oder Textstücke sein) und die Namen der Interpreten gespeichert.

Für die Eingabe und Anzeige der Daten werden Formulare erstellt. Es soll möglich sein, eine CD nach dem Namen oder Kategorie zu suchen und den gesamten Inhalt in einem Formular anzuzeigen.

Es werden auch zwei Berichte implementiert.

  1. Die Gesamtübersicht aller CDs nach Kategorien.
  2. Der Inhalt der ausgewählten CD mit allen Liedern und Interpreten.

Alle Funktionen des Programms werden aus einem Hauptformular über die Schaltflächen aufgerufen. Dieses Formular wird automatisch angezeigt, wenn die Datenbank geöffnet wird.

Basis-Entitäten

Der erste Schritt beim Entwurf des Datenmodells ist die Definition der notwendigen Entitäten und ihrer Attributen. Jede Entität wird in der Datenbank in Form einer Tabelle dargestellt.

Die Attribute werden die Datenfelder der Tabelle bilden. Wir werden richtig unterscheiden müssen, welche Attribute zu welcher Entität zugeordnet werden.

CD-Packung

Die erste Entität, die wir brauchen werden, ist die CD selbst. Wir werden aber nicht die einzelne Scheibe, sondern die gekaufte Packung als eine Entität betrachten. Oft befinden sich nämlich mehrere CDs in einer Packung. Deswegen benennen wir auch die Entität CD-Packung.

Die Tabelle tblCdPackung wird folgende Datenfelder enthalten:

Beschriftung

Feldname

Felddatentyp

Bemerkung

nicht notwendig

CDP_ID

Autowert

Primärer Schlüssel

Titel

CDP_Titel

Text

max. Länge 255 Zeichen

Kategorie

CDP_KATEG_ID

Zahl/Long Integer

nachschlagen aus der Tabelle tblKategorie

Anzahl der CDs

CDP_Anzahl_CD

Zahl/Integer

 

Ausgabejahr

CDP_Ausgabejahr

Zahl/Integer

 

IdentifikationsNr

CDP_IdentNr

Text

Std.Länge 50 Zeichen

 

Im Feld IdentifikationsNr wird die eindeutige Bezeichnung der CD-Packung gespeichert, die an der Verpackung angedruckt ist. Es handelt sich eigentlich um keine richtige Nummer, weil es auch Buchstaben enthalten kann. Das entsprechende Datenfeld wird also den Felddatentyp Text haben, damit auch Buchstaben eingegeben werden können.


Kategorie

Die Tabelle tblKategorie wird ähnliche Funktion haben, wie in der ersten Datenbank mit den Personendaten. Wir machen sie aber diesmal etwas ordentlicher:


Beschriftung

Feldname

Felddatentyp

Bemerkung

nicht notwendig

KATEG _ID

Autowert

Primärer Schlüssel

Kategorie

KATEG _Name

Text

Std.Länge 50 Zeichen
keine Duplikate möglich

Ordnungsbegriff

KATEG_Ob

Zahl/Integer

keine Duplikate möglich

Textfeld:

Die Duplikate in einem anderen Datenfeld als dem primären Schlüssel vermeiden Sie dadurch, dass Sie für die letzten zwei Felder in der Eigenschaft Indiziert den Eintrag Ja (Ohne Duplikate) auswählen.

Alle für diese Tabelle definierten Indizes können Sie dann über die Schaltfläche mit dem Blitzsymbol in einem neuen Fenster anzeigen lassen.

 

 

 

Übung


Interpret

Warum wird der Interpret als eine eigene Entität modelliert und nicht als Attribut der CD-Packung gespeichert? Der Grund ist der, dass es CDs gibt, die mehrere Interpreten enthalten. Wenn wir den Interpreten in einem Feld der Tabelle tblCDPackung speichern würden,  könnten wir dann nicht mehrere Interpreten zu einer CD-Packung angeben..

Beim Entwurf dieser Entität werden wir eine Vereinfachung akzeptieren. Wir werden als den Interpreten eventuell auch eine Gruppe speichern. Die Felder, die in dem Fall nicht sinnvoll ausgefüllt werden können, lassen wir einfach leer.

Die Tabelle tblInterpret kann folgende Datenfelder enthalten:

Beschriftung

Feldname

Felddatentyp

Bemerkung

nicht notwendig

INTR_ID

Autowert

Primärer Schlüssel

Interpret

INTR_Name

Text

max. Länge 255 Zeichen
keine Duplikate möglich

Geburtsdatum

INTR_Geburtsdatum

Datum/Uhrzeit

 

Geburtsort

INTR_Geburtsort

Text

Std.Länge 50 Zeichen

Geburtsland

INTR_Geburtsland

Text

Std.Länge 50 Zeichen

Telefon

INTR_Telefon

Text

Std.Länge 50 Zeichen

E-Mail

INTR_Email

Text

Std.Länge 50 Zeichen

Notiz

INTR_Notiz

Memo

ein beliebig langer Text

Lied

Wie schon oben erwähnt, wird diese Entität Lied genannt, weil die meisten CD-Inhalte Lieder sind. In Wirklichkeit werden wir aber darunter die  Spuren auf der CD verstehen. Wir brauchen nichts anderes speichern als primären Schlüssel und den Titel. Deswegen wird die Struktur der Tabelle tblLied nur aus zwei Datenfeldern bestehen.

Beschriftung

Feldname

Felddatentyp

Bemerkung

nicht notwendig

LIED_ID

Autowert

Primärer Schlüssel

Lied

LIED _Titel

Text

max. Länge 255 Zeichen
keine Duplikate möglich

Übung


Beziehungsentität – Daten werden verknüpft

Wir haben jetzt Tabellen für unsere Basis-Entitäten fertig. Wir können in der Tabelle tblCdPackung die Informationen über die CD-Packung speichern, die Tabelle tblKategorie gibt uns die erlaubten Werte für die Kategorie vor. Die Tabellen tblInterpret und tblLied enthalten die Daten über die Interpreten und die Lieder.

Wir müssen jetzt die Beziehungen zwischen den Daten erstellen. Es ist nicht ganz trivial darauf zu kommen, wie das am besten zu machen ist.

Wir brauchen eine neue Entität, die jede Ausprägung einer Beziehung zwischen der CD-Packung, Interpret und Lied speichern kann. Diese Beziehung entspricht einer Position auf der CD, deswegen wird die Beziehungsentität Position genannt und mit der Tabelle tblPosition realisiert.

Struktur der Tabelle tblPosition

Wenn die Tabelle die Beziehungen zwischen drei Tabellen speichern soll, muss sie die primären Schlüssel der Tabellen als fremde Schlüssel enthalten. Diese drei Felder werden gemeinsam den primären Schlüssel der Tabelle tblPosition bilden.

Die Beziehungsentität hat auch eigene Attribute, die sonst in keiner anderen Tabelle gespeichert werden können. Es sind in unserem Fall die Nummer der CD in der Packung und die Nummer der Position (Spur) auf der CD.

Beschriftung

Feldname

Felddatentyp

CD-Packung

POS_CDP_ID

Zahl/Long Integer

Interpret

POS_INTR_ID

Zahl/Long Integer

Lied

POS_LIED_ID

Zahl/Long Integer

CD-Nummer

POS_CDNr

Zahl/Integer

Position

POS_PosNr

Zahl/Integer

 

Übung


Beziehungen und referentielle Integrität

Nachdem wir die Beziehungen zwischen den Tabellen und referentielle Integrität im Beziehungsfenster definiert haben, ist das Datenmodell der CD-Evidenz komplett fertig.

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Datenmodell ist nicht immer gleich

Die Datenmodellierung hat bestimmte Grundsätze, aber keine genauen Vorgaben für den Aufbau der Entitäten und Beziehungen. Die Struktur hängt stark von der Aufgabenstellung  ab. Für unseren Zweck wird es reichen, wenn wir als sowohl eine Einzelperson als auch eine Gruppe in der Interpretentabelle speichern. Uns geht es in erster Reihe darum, die Übersicht über vorhandenen CDs, Lieder und Interpreten zu haben.

Hausaufgabe

Überlegen Sie, welche Entitäten und Beziehungen Sie zusätzlich brauchen werden, wenn Sie in Ihrer Datenbank auch folgende Daten und Zusammenhänge speichern möchten. Wann brauchen Sie keine neue Entität sondern nur ein neues Attribut zu einer bestehenden Entität?

 

 


Abfragen

Bedeutung von Abfragen

Datenspeicherung

Bis jetzt haben wir uns bemüht, ein optimales Datenmodell zu entwerfen. Jede Tabelle soll nur Daten zu einer Entität enthalten und die Beziehungen garantieren die Konsistenz der gesamten Datenmenge. Jede Angabe wird nur einmal eingegeben (z.B. Name des Interpreten oder des Lieds) unabhängig davon, wie viel Beziehungen sie mit einer anderen Entität bildet (ein Interpret singt mehrere Lieder). Im Entwurf der Tabellen haben wir auch verschiedene Kontrollen der eingegebenen Werte eingebaut, die die fehlerhafte Eingabe sofort ausschließen sollen.

Mit anderen Worten – wir haben die optimale Datenspeicherung realisiert.

Datenpräsentation

Die Daten sind in Tabellen nicht umsonst gespeichert. Das Ziel der Datenbankapplikation ist die Informationen in einer für den Anwender sinnvoller Form aussuchen, anzeigen bzw. ausdrucken zu können. Wir werden nicht die CD-Packungen, Interpreten und Lieder in selbständigen Tabellen sehen wollen, sondern auch samt ihrer Beziehungen – alle Lieder auf einer CD, alle Lieder eines Interpreten, usw. Dabei wollen wir weder technische Feldnamen noch die nummerischen Schlüsselwerte sehen.

Die Form der Darstellung der Daten nennen wir Datenpräsentation und wird überwiegend mit den Abfragen realisiert.

Erstellen einer Selektionsabfrage

Aufgabenstellung

Erstellen Sie eine Abfrage in der Sie die Namen der CD-Packung, der Interpreten und der Lieder nebeneinander sehen können.

Lösung

Ähnlich wie bei Tabellen wird eine Abfrage zuerst in der Entwurfsansicht erstellt und das Ergebnis dann in der Datenblattansicht dargestellt. Zwischen den Sichten kann beliebig umgeschaltet werden.

Klicken Sie im Datenbankfenster der Datenbank CD_Evidenz.mdb auf die Lasche Abfragen und klicken Sie doppelt auf die erste Zeile Erstellt eine Abfrage in der Entwurfsansicht. Auf dem Bildschirm erscheint folgendes Fenster:

Textfeld:

Wir wählen die Tabellen aus, aus denen wir die Daten brauchen werden.  In unse-rem Fall sind es alle bis auf tblKategorie.

Beachten Sie, dass sowohl Tabellen als auch Abfragen angeboten  werden. Eine Abfrage kann die Ergebnisse einer anderen Abfrage auf die gleiche Art und Weise wie die Daten einer Tabelle verarbeiten.

 

 

 

 

Nachdem Sie die Tabellen ausgewählt haben, erscheinen sie im oberen Teil des Fensters. Die Beziehungen, die Sie beim Entwurf des Datenmodells erstellt haben, werden auch in den Abfragenentwurf automatisch übernommen. Die Tabellen können verschoben und die  Größe ihrer Darstellung angepasst werden, damit der gesamte Dateninhalt unserer Datenbank schön übersichtlich zu sehen ist. Der obere Teil des Fensters beschreibt also die Quellen für die Abfrage.

Im unteren Teil des Fensters wird das Ergebnis der Abfrage gebildet. Jede Spalte entspricht einem Feld. Sie können mit der Maus die Felder aus dem oberen in den unteren Teil ziehen und so den Inhalt der Abfrage definieren. Der Name des Feldes und der Tabelle werden automatisch in die erste und zweite Zeile übernommen. Die Schlüsselfelder müssen wir nicht übernehmen.

Textfeld:  In der dritten Zeile können Sie die Sortierung der Ergebnisdaten angeben. Wenn über mehrere Felder sortiert werden soll, gilt die Sortierreihenfolge von links nach rechts. Den gesamten Entwurf der Abfrage können Sie auf dem folgenden Bild sehen:

Sie können jetzt die Abfrage speichern, aber bitte NICHT unter dem vorgeschlagenen Namen Abfrage1, sondern unter einem sprechenden Namen, qryCdPackung_Inhalt. Danach können Sie  das Ergebnis in der Datenblattansicht anzeigen lassen.

Textfeld:   

 

Beachten Sie, dass Sie in der Datenblattansicht keine physikalischen Feldnamen sondern die im Tabellen-entwurf definierten Beschriftungen (z.B. CD-Nummer statt POS_CDNr) sehen.

Die Tabellen sind intern über die primären Schlüssel (die Felder ..._ID verknüpft), in der Abfrage müssen sie aber nicht angezeigt werden.

Selektion der Daten

Die bereits erstellte Abfrage zeigt alle Daten ohne Einschränkung an. In der Praxis wird aber eine Abfrage gerade dazu verwendet, die Daten nach bestimmten Kriterien auszuwählen. Sie können in die Zeile Kriterien und die darunter liegenden Zeilen  zu jedem Feld Selektionsausdrücke eingeben. Dafür gibt es folgende Grundregeln:

Text selektieren

Bei einem Textfeld können Sie entweder einen Text genau suchen oder mit den Jokern arbeiten. Ein Stern kann einen beliebig langen Text, ein Fragezeichen ein einziges Zeichen ersetzen. Als Beispiel können Sie die Datensätze nach dem Titel der Lieder auswählen.

Tragen Sie die Selektionskriterien in die Spalte LIED_Titel ein. Beachten Sie dabei, dass MS Access die eingegebenen Ausdrücke selbst syntaktisch anpasst, z.B. sie automatisch in Hochkommas einklammert und bei den Ausdrücken mit Jokern das Wort Wie voranstellt. Wechseln Sie danach in die Datenblattansicht um die Auswirkungen sofort zu sehen. Die konkreten Werte der Kriterien werden Sie allerdings den von Ihnen eingegebenen Daten anpassen müssen.

Textfeld:

Es werden nur die Datensätze angezeigt, in denen das Lied „Alle Lichter vorkommt. Es können auch mehrere sein, weil das gleiche Lied auf mehreren CDs auftreten kann.

 

Textfeld:

Mit diesem Ausdruck werden alle Lieder ausgewählt, die auf einer beliebigen Position im Titel das Wort „Liebe“ enthalten. Groß- und Kleinschreibung wird dabei nicht berücksichtigt.

 

Numerische Werte selektieren

Bei numerischen Feldern können Sie einen beliebigen arithmetischen Ausdruck als Kriterium eingeben.
Z.B. wenn Sie in der Spalte POS_PosNr den Ausdruck <=5 eintragen, bekommen Sie nur die ersten 5 Lieder jeder CD angezeigt. Sie können auch den Ausdruck z.B. Zwischen 3 Und 4 eingeben.

Datum/Uhrzeit Werte selektieren

Die Eingabe funktioniert genauso wie bei numerischen Feldern, die Werte werden automatisch in #-Zeichen eingerahmt. Beispiel: Zwischen #01.01.56# Und #04.05.77#

Ja/Nein Felder selektieren

Als Kriterium kann Ja oder Nein, Wahr oder Falsch eingetragen werden.

Parameterabfrage

Wenn Sie statt dem Kriterium einen Titel in eckigen Klammern eingeben, wird der gewünschte Selektionsausdruck erst unmittelbar vor der Datenanzeige abgefragt. Ihre Abfrage wird dadurch universell.

Textfeld:  Textfeld:

 

 

 

Mehrere Bedingungen gleichzeitig

Sie können auch mehrere Selektionsausdrücke in mehrere Spalten oder mehrere Kriterien-Zeilen eintragen. Damit ist es möglich auch komplexere Bedingungen zu bilden. Es gelten folgende Regeln, wie die einzelnen Bedingungen miteinander verknüpft werden.

Die Bedingungen können ziemlich komplex sein. Auf dem folgenden Bild sehen Sie eine Selektion, die alle Lieder auswählt, die auf einer beliebigen CD auf der Position zwischen 5 und 10 liegen und mindestens eines der Worte „Liebe“, „Love“, „Amore“ enthalten. (Über den Sinn einer solchen Selektion kann man natürlich streiten).

Textfeld:

Was würde passieren, wenn die Bedingung in der Spalte POS_PosNr nicht in jeder Zeile wiederholt wäre ?

 

 

Übung

Öffnen Sie die Datenbank Access_Beispiele.mdb und erstellen Sie folgende Abfragen aus der Tabelle tblArtikelDenorm:

Vergleich von Tabellen und Abfragen

Wenn Sie die Abfrage qryCD-Inhalt näher beobachten, können Sie einwenden, dass wir eigentlich dort sind, wo wir nicht wollten – Sie sehen mehrfach die gleichen Inhalte in den Spalten der Abfrage. Das ist aber in Ordnung. Eine Abfrage enthält physikalisch keine Daten. Die Daten sind ordentlich in den Tabellen gespeichert und die Abfrage ist nur eine Formel, wie man diese Daten anzeigen will.

Die Abfrage enthält physikalisch nur einen sog. SQL-Ausdruck, der vom MS Access generiert wurde und in der SQL-Ansicht der Abfrage sichtbar und editierbar ist. Dafür würden Sie aber einen SQL-Kurs brauchen.

Aktionsabfragen

Mit einer Abfrage können Sie nicht nur Daten selektieren, sondern auf verändern oder löschen. Diese sog. Aktionsabfragen können Sie im Entwurfsfenster unter dem Menüpunkt Abfragen erstellen, ausführlichere Beschreibung würde aber den Rahmen dieses Kurses sprengen.

Übung

 


Formulare

Formulare für die Dateneingabe

Bis jetzt haben Sie alle Daten direkt in die Tabellen in der Datenblattansicht eingegeben. Diese Arbeitsweise ist aber nicht sehr komfortabel, besonders dann nicht, wenn die Tabelle mehrere Felder hat und damit breiter als der Bildschirm ist.

Mit der Dateneingabe mittels eines Formulars werden Sie wesentlich besser bedient. Sie bekommen viele Möglichkeiten, die mit der Tabelle selbst nicht möglich sind, wie z.B.

·         beliebige Anordnung von Eingabefeldern

·         zusätzliche Erklärungstexte

·         die Felder dynamisch ein- und ausblenden

·         andere Elemente, wie z. b. Bilder anzeigen lassen

In einem Formular können Sie auch mit Farben und unterschiedlichen Schrifttypen und –größen arbeiten. Allerdings sollten Sie die Formulare nicht zu bunt gestalten. Wenn mehrere Daten eingegeben werden, wird vor allem der Eingabekomfort geschätzt, zu grelle Farben beanspruchen zu viel die Augen.

Arbeit mit dem Assistenten

Wie bei allen anderen Objekten im MS-Access ist es am schnellsten, ein Formular mit einem Assistenten zu erstellen. Sie sparen sich Menge Arbeit. Später werden Sie erfahren, dass Sie alles, was der Assistent generiert hat, nachträglich in der Entwurfsansicht ändern können.

Fangen wir mit der einfachsten Aufgabe an – mit dem Formular für die Eingabe der Daten in die Tabelle tblKategorie.

Wählen Sie im Datenbankfester die Lasche Formulare, klicken Sie auf die Schaltfläche Neu und wählen Sie dann Formular-Assistent. Auf Ihrem Bildschirm erscheint folgendes Fenster:

Textfeld:

Hier können Sie Tabelle oder Abfrage und Felder auswählen, die in Ihrem Formular angezeigt  werden sollen.

Sie wissen schon, dass das Feld KATEG_ID vom Typ Autowert ist. Sein Inhalt wird automatisch generiert, brauchen Sie es also nicht im Formular anzeigen lassen.

 

 

 

 

 

 

Im nächsten Fenster werden Sie entscheiden, welches Layout grundsätzlich Ihr Formular haben soll. Die einzelnen Typen werden etwas ausführlicher beschrieben, damit Ihnen die Entscheidung leichter fällt.


·         Einspaltig
Dieser Typ zeigt gleichzeitig die Felder eines einzigen Datensatzes an. Sie haben dabei die meisten Formatierungsmöglichkeiten, Sie können die Felder auch in mehreren Spalten anordnen, eingerahmte Gruppen bilden, die Formatierung dynamisch je nach den Dateninhalten ändern, u.v.a.

·         Tabellarisch
Mehrere Datensätze gleichzeitig werden angezeigt. Die Feldbeschriftungen bleiben im Kopfbereich und werden nicht bei jedem Datensatz wiederholt. Im Fußbereich können Sie Summen der bereits eingegebenen Daten bilden.

·         Datenblatt
Das Formular schaut ähnlich wie die Tabelle in der Datenblattansicht aus. Dieser Typ ist am besten geeignet um die Daten in einem Unterformular anzuzeigen.

·         In Blöcken
Dies ist eine spezielle Form des einspaltigen Formulars. In einem Formular wird ein Datensatz angezeigt, die Titel stehen über den Eingabefeldern

.Textfeld:

Da wir in der Tabelle tblKategorie nur zwei Felder bearbeiten und dabei den Überblick nicht verlieren wollen, wählen Sie, bitte, den Typ Tabellarisch aus. 

 

 

 

 

 

 

 

 

MS-Access bietet Ihnen einige vordefinierte Formularlayouts im nächsten Fenster an.

Textfeld:

Schauen Sie sich alle an und entscheiden Sie sich für das, was Ihnen am besten gefällt.


Als Name des Formulars wird Ihnen der Name der Tabelle angeboten. Bitte, akzeptieren Sie diesen Vorschlag nicht und benennen Sie das Formular mit einem für alle Formulare spezifischen Präfix – hier frmKategorie.

Textfeld:

Wir werden das Formular sofort öffnen, damit wir zuerst das Ergebnis sehen können.

Wenn Sie allerdings schon vorher wissen, dass Sie das Layout werden ändern wollen, können Sie sofort in die Entwurfsansicht übergehen.

 

 

 

 

 

 

 

Nach dem Klick auf Fertig stellen wird der Assistent beendet und das erstellte Formular geöffnet.

Textfeld:

Sie können in das Formular die Daten genauso eingeben, bearbeiten und löschen wie in die Tabelle direkt.

Der große Vorteil des Formulars liegt in der Möglichkeit das Layout in der Entwurfsansicht zu gestalten, die demnächst vorgestellt wird.

 

 

 

 

 

 

 

 

 

Übung

Erstellen Sie mit dem Formularassistenten Formulare für die Eingabe von folgenden Daten

Beachten Sie, wie die Naschlagefelder der Tabelle tblPosition ins Formular frmPosition übernommen wurden.

 

Formular in der Entwurfsansicht

Wie die Tabellen und Abfragen haben auch die Formulare eine Entwurfsansicht. Wenn das Formular offen ist, können Sie mit der ersten Schaltfläche links oben zwischen den Ansichten umschalten oder im Datenbankfenster mit der Schaltfläche Entwurf das Formular sofort in der Entwurfsansicht öffnen.

Es erscheint folgendes Bild, auf dem die innere Struktur des Formulars ersichtlich ist.

 

Das Formular ist in Bereiche geteilt

·         Formularkopf
enthält die Feldtitel (Aufschriften), die nur einmal angezeigt werden.

·         Detailbereich
hier sind Eingabefelder definiert, die bei dem tabellarischen Formulartyp für alle vorhandenen Datensätze wiederholt werden.

·         Formularfuß
wird in diesem Formular nicht verwendet. Hier können z.B. Felder für Summen der angezeigten Daten angeordnet werden.

Steuerelemente und Eigenschaften

Die rechteckigen Objekte für Aufschriften oder Eingabefelder sind zwei von vielen Typen von Steuerelementen, die auf einem Formular auftreten können. Einen weiteren wichtigen Typ, das Kombinationsfeld implementiert  der Assistent für die Nachschlagefelder, die Sie im Formular für die Eingabe der Position sehen können.

Weitere Typen stehen Ihnen beim manuellen Entwurf eines Formulars auf der Schaltflächenleiste Toolbox zur Verfügung.

Die Position und Größe der Steuerelemente kann mit Drag and Drop mittels der kleinen schwarzen Quadrate geändert werden.

Das Formular, seine Bereiche und Steuerelemente besitzen Eigenschaften die im sog. Eigenschaftsfenster (aufrufbar über das Kontextmenü) änderbar sind. Mit der kontextsensitiven Hilfe (Taste F1) können Sie zu der gerade bearbeiteten Eigenschaft die entsprechende Erklärung aufrufen.

Übung

Verändern Sie in einem Formular in der Entwurfsansicht die Formatierung einiger Steuerelemente durch Drag and Drop und durch die Änderungen von Eigenschaften.

 

Bemerkung

Sie werden sehen, dass einige Eigenschaften der Textfelder (z. B. Standardwert oder Gültigkeitsregel) gleich mit den Eigenschaften der Tabellenfelder sind, die man in der Entwurfsansicht einer Tabelle festlegen kann. Sie können sich die Frage stellen: „Soll ich diese Definitionen in der Tabelle oder im Formular durchführen?“.

Es wird empfohlen, dieses beim Tabellenentwurf zu tun, weil dann diese Eigenschaften automatisch in alle Formularfelder auch in mehreren Formularen übertragen werden. Sie können allerdings im Formular die von der Tabelle übernommenen Definitionen ändern.

Formular mit Unterformular

Eine Tabellenbeziehung 1:N, die in der Praxis am häufigsten vorkommt, wird am besten in einem Formular mit Unterformular abgebildet. Zu einem Datensatz im Hauptformular werden alle über den fremden Schlüssel verknüpften Detaildatensätze im Unterformular angezeigt.

Aufgabenstellung

Bauen wir gemeinsam ein einspaltiges Formular in dem alle Angaben zu der CD-Packung dargestellt werden. In einem Unterformular werden zu der jeweiligen CD-Packung alle darauf befindliche Lieder und Interpreten mit der Nummer der CD und der Positionsnummer (Track) angezeigt.

Realisierung mit dem Assistenten

Als Datenquelle für diese Aufgabe werden wir die früher erstellte Abfrage qryCdPackung_Inhalt verwenden.

Textfeld:

 

 

 

 

 

Wir werden alle Felder der Abfrage übernehmen.

 

 

 

 

 

 

 

Der Assistent erkennt, dass es sich um eine Abfrage mit mehreren verknüpften Tabellen handelt und fragt zuerst, aus welcher Tabelle die Daten im Hauptformular angezeigt werden. Wir werden im Hauptformular die Angaben zu der CD-Packung, die Kategorie und im Unterformular alle restlichen Daten anzeigen lassen.

Wir wählen die erste Alternative Formular mit Unterfomular(en) aus. Mit Verknüpfte Formulare  würde das Formular mit detaillierten Daten erst nach dem Klick auf eine automatisch generierte Umschaltfläche im Hauptformular geöffnet.

 

 

 

 

 

Textfeld:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Im nächsten Fenstern entscheiden Sie über das Layout des Unterformulars.

Textfeld:

 

 

 

 

 

 

 

 

 

 

 

 

 

Die restlichen zwei Fenster sind praktisch gleich wie beim Erstellen eines einzelnen Formulars. Das ausgewählte Format wird auf das Unterformular nur dann angewendet, wenn Sie im vorigen Fenster das Layout Tabellarisch gewählt haben. Das Layout Datenblatt wird von der Einstellung des Formats nicht beeinflusst.

Speichern Sie das Hauptformular unter dem Namen frmCdPackung_Übersicht und das Unterformular unter dem Namen frmCdPackung_Unterformular.

Übung

Probieren Sie im 2. Fenster des Assistenten die Wahl nach tblKategorie aus.

Das Ergebnis des Assistenten muss nicht immer optimal aussehen. Öffnen Sie das erstellte Formular in der Entwurfansicht und führen Sie die notwendigen Formatänderungen durch, damit Sie alle angezeigten Daten gleichzeitig sehen können.


Hauptformular der Datenbank

Das Öffnen der einzelnen Objekte aus dem Datenbankfenster ist nicht besonders komfortabel und übersichtlich. Der Endanwender des Programms sollte sogar das Fenster überhaupt nicht sehen, sondern nur die für ihn bestimmten Steuerelemente bedienen können. Der unberechtigte Zugriff zu allen Datenbankobjekten (besonders in der Entwurfansicht) kann die Funktionalität der Applikation zerstören.

Wir werden ein Hauptformular bauen, aus dem alle bisher fertiggestellten Formulare aufgerufen werden. Zu dem Zweck werden wir nicht mit dem Assistenten arbeiten, sondern das Formular direkt in der Entwurfsansicht erstellen.

Alle notwendigen Steuerelemente werden wir aus der Schaltflächenleiste Toolbox übertragen. Nach dem Klick auf das gewünschte Element verändert sich der Mauszeiger und Sie können auf der Formularfläche den Rahmen für das Objekt ziehen. Wenn die Umschaltfläche mit dem Zauberstab-Symbol aktivierte ist, wird danach der entsprechende Assistent gestartet. Um eine Aktion wie das Öffnen eines Formulars implementieren zu können, brauchen wir zuerst das Steuerelement Schaltfläche.

Textfeld:

Textfeld:  Die Arbeit mit dem Assistenten für die Schaltflächenerstellung  ist einfach. Zuerst wählen sie aus der entsprechenden Kategorie die gewünschte Aktion aus.

 

 

 

 

 

 

 

 

 

 

 

 

Im nächsten Fenster wählen Sie das betroffene Objekt aus – in unserem Fall das Formular frmKategorie.


 

Textfeld:

 

 

 

 

 

 

 

 

 

 

Im folgenden Fenster wählen wir die zweite, einfachere Aktion aus – im zu öffnenden Formular werden alle Datensätze angezeigt.

Textfeld:

 

 

 

 

 

 

 

 

 

 

 

Die neue Schaltfläche werden wir statt dem Bild mit der Aufschrift Kategorien versehen.

Textfeld:

 

 

 

 

 

 

 

 

 

 


Das Formular speichern wir unter dem Namen frmHaupt und können es dann öffnen und die Funktionalität der neuen Schaltfläche sofort ausprobieren.

Übung

Erstellen Sie mit dem Assistenten Schaltflächen für das Öffnen aller bisher erstellten Formulare und für das Beenden der Anwendung nach folgendem Vorbild.

Textfeld:

 

 

 

 

 

 

 

 

 

 

 

 

Formular automatisch nach dem Start öffnen

Wie schon oben erwähnt, sollte der Anwender nach dem Öffnen der Datenbank nicht das Datenbankfenster, sondern das vordefinierte Formular sehen. Diese Einstellungen können Sie über den Menüpunkt Extras->Start festlegen. Sie können dabei auch weiter Einschränkungen der Funktionalität vornehmen.

Textfeld:   

 

 

 

 

 

 

 

Wenn Sie das Datenbankfenster trotz diesen Starteinstellungen für die weitere Entwicklung sehen möchten, können Sie

Diese Möglichkeiten können natürlich auch gesperrt werden, damit die unberechtigte Person auf keinen Fall direkten Zugriff zu den Datenbankobjekten hat.

Bemerkung

Die Problematik der unterschiedlichen Berechtigungen für einzelne User würde den Rahmen dieses Kurses sprengen. Die einfachste Methode den Entwurf Ihrer Objekte zu schützen ist, eine sog. MDE-Datei zu erstellen und diese statt der MDB auszuliefern. Vorsicht: Die Original-MDB unbedingt speichern, in der MDE gibt es keine Entwurfsansicht mehr, sie könnten also nie Ihre Objekte weiter bearbeiten.


Berichte

Übersicht aller CD-Packungen nach Kategorien

Wir erstellen einen Bericht, in dem wir die Daten aller CD-Packungen (ohne die Lieder und Interpreten) sehen werden. Sie werden nach der Kategorie gruppiert und die Kategorien selbst werden nicht alphabetisch, sondern nach dem Ordnungsbegriff sortiert.

Abfrage qryCdPackung

Für diesen Bericht brauchen wir eine Abfrage, die uns die notwendigen Daten in der gewünschten Sortierung liefert. Den Entwurf können Sie dem folgenden Bild entnehmen:

Textfeld:

 

 

 

 

 

 

 

 

 

 

 

 

 

Arbeit mit dem Assistenten

Im ersten Fenster wählen Sie die bereits erstellte Abfrage aus und übernehmen alle Datenfelder

Textfeld:

 

 

 

 

 

 

 

 

 

 

 

 


Im zweiten Fenster definieren wir die Gruppierung der Daten, für unseren Bericht passt die erste Wahl.

Textfeld:

 

 

 

Die Gruppierung ist bei Berichten eine wichtige Sache.

Unter Weitere Informationen anzeigen können Sie mehrere Beispiele sehen.

 

 

 

 

 

 

Wenn Sie mehrere Gruppierungsebenen brauchen (in unserem Bericht nicht) können wir sie im nächsten Fenster festlegen und die Reihenfolge ändern.

Textfeld:

 

 

 

 

 

 

 

 

 

 

 

 

 

Grundsätzlich bestehen die meisten Berichte aus Gruppierungsebenen und eventuell den einzelnen detaillierten Datensätzen. Hier wird für jede Kategorie ihr Name ausgegeben und danach alle dazu gehörenden CD-Packungen aufgelistet.

Die Detaildatensätze müssen nicht in jedem Bericht angezeigt werden. Sie können z. B. einen Bericht über die Bestellungen je nach den Jahren erstellen ohne dass die einzelnen Bestellungen oder sogar bestellte Artikel angeführt werden.

In unserem Beispiel lassen wir die Detaildatensätze nach dem Titel der CD-Packung sortieren.


 

Textfeld:

 

 

Unter Zusammenfassungs-optionen können Sie am Ende einer  Gruppierung Zusammen-fassungen wie Summen der numerischen Werte u.a. definieren. In unserem Bericht brauchen wie diese Funktionalität nicht.

 

 

 

 

Im nächsten Fenster legen Sie das Layout und Seitenorientierung des Berichts fest. Die erste Wahl liefert brauchbare Ergebnisse.

Textfeld:

 

 

 

 

 

 

 

 

 

 

 

 

 

Die letzten zwei Fenster sind ähnlich wie bei den Formularen. Das farbige Layout wird ausgewählt und danach das Ergebnis gespeichert – wählen Sie für den neuen Bericht den Namen rptCdPackung.

Wie bei den Formularen können alle von dem Assistenten erstellten Objekte in der Entwurfsansicht des Berichts nachträglich geändert werden.

Was die interne Struktur der Berichte angeht, sind sie den Formularen sehr ähnlich. Sie bestehen aus Bereichen, die Steuerelemente enthalten können. Zusätzlich gibt es Kopf- und Fußbereiche für jede definierte Gruppierung. Der wesentlichste Unterschied zu Formularen besteht darin, dass in die Formulare Daten eingegeben werden können, die Berichte dagegen nur zur Anzeige, bzw. Ausdruck der Daten dienen.

Übung

Erstellen Sie mit dem Assistenten einen Bericht rptCdInhalt, der auf der Abfrage qryCdPackung_Inhalt basiert und zu den Titeln der CD-Packungen den gesamten Inhalt anzeigt.


Bericht für den Ausdruck der bereits im Formular angezeigten Daten

Wir können im Formular frmCdPackung_Übersicht zwischen den CD-Packungen blättern und bekommen im Unterformular den entsprechenden Inhalt angezeigt. Es wäre recht praktisch, den aktuellen Inhalt direkt vom Formular ausdrucken können.

Eine Schaltfläche für das Öffnen eines Berichts ins Formular einzubauen ist mit dem Befehlsschaltflächen-Assistenten kein Problem. Einen passenden Bericht rptCdInhalt haben wir bereits auch fertig. Wir müssen nur die Menge der im Bericht angezeigten Daten auf die aktuelle CD-Packung einschränken.

Abfrage mit Bezug auf ein Formularfeld

Wir kopieren die Abfrage qryCdPackung_Inhalt unter den Namen qryCdPackung_Inhalt_Aktuell und werden die gelieferte Datenmenge über ein Kriterium einschränken. Die eindeutige Identifikation einer CD-Packung ist der primäre Schlüssel der Tabelle tblCdPackung – das Feld CDP_ID.

Textfeld:  Auch wenn dieses Feld im Formular nicht angezeigt wird, können wir darauf im Kriterienfeld der Abfrage mit dem Ausdruck [forms]![frmCdpackung_Übersicht]![CDP_ID] verweisen. Den Entwurf der neuen  Abfrage sehen Sie auf dem folgenden Bild:

Wir müssen noch  im Bericht rptCdInhalt die Datenherkunft auf die neue Abfrage ändern. Das ist im Eigenschaftsfenster zu machen.

Textfeld:

 

 

 

 

 

 

 

Wenn jetzt der Bericht aus dem Formular aufgerufen wird, werden nur die Daten der gerade angezeigten CD-Packung übernommen.


Was ist VBA?

VBA heißt Visual Basic for Applications und ist die Sprache, mit der Microsoft Access programmiert werden kann. Wie am Anfang des Kurses erwähnt wurde, ist VBA für alle Office-Produkte gemeinsam. Ganz genau gesagt, die Sprache ist von Ihrem Aufbau und Syntax gleich, es können aber nicht alle Anweisungen in allen Produkten angewendet werden, weil nicht überall die gleichen Objekte vorhanden sind.

Auch wenn das gesamte Access mit Ihnen deutsch redet, verwendet die interne Syntax von VBA alle Begriffe im Englischen.

Objekte, Eigenschaften und Methoden

Bei der Vorstellung der Entwurfsansicht eines Formulars haben wir einige Objekte des Formulars kennengelernt, wie Bereiche und Steuerelemente. Im Eigenschaftsfenster konnten wir auch einige Eigenschaften, wie die Zuordnung der Daten oder Formatierungseigenschaften ändern.

Ein Objekt hat nicht nur Eigenschaften, sondern es können mit ihm auch einige Aktionen durchgeführt werden. Ein Formular kann z.B. geöffnet oder geschlossen werden. Diese Aktionen werden Methoden genannt.

Mit den Anweisungen der VBA-Sprache können Sie die Eigenschaften ändern oder Methoden aufrufen.

Ereignisgesteuerte Programmierung

Die Programmierung in VBA hat ein etwas anderes Konzept als die üblichen Sprachen, wo ein Programm in einem von dem Anwender festgelegten Zeitpunkt gestartet wird. Der meiste VBA-Code ist in sog. Ereignisprozeduren versteckt, die dann automatisch aufgerufen werden, wenn es zu einem bestimmten Ereignis kommt. Ein typisches Beispiel ist Klick auf eine Schaltfläche, Eingabe eines Zeichen in ein Formularfeld, Bewegung des Mauscursors über einem bestimmten Objekt u.v.a.

VBA-Code ist auch in unserer Datenbank

Auch wenn wir die ganze Datenbank für die CD-Evidenz mit den Assistenten erstellt haben, ist an einigen Stellen schon VBA-Code generiert worden. Drücken Sie die Tastenkombination <Alt><F11>, damit wird der VBA-Editor geöffnet und klicken Sie im Navigationsfenster links doppelt auf das Formular frmHaupt.

Textfeld:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Auf der rechten Seite sehen Sie den VBA-Code, den der Befehlsschaltflächen-Assistent generiert hat, wenn Sie definiert haben, dass mit der Schaltfläche cmdCdPackung das Formular frmCdPackung geöffnet wird.


Der Programmteil, der nach dem Klick auf die Schaltfläche aufgerufen wird, ist in eine sog. Ereignisprozedur gepackt. Ihr Name besteht aus dem Namen des Objekts und dem Namen der Ereignisses, in unserem Fall also cmdCdPackungen_Click.

Der generierte Code enthält etwas mehr Zeilen als notwendig, weil der Aufbau auch für andere Zwecke gleich verwendet wird. Die gleichwertige Prozedur  könnte auch nur so ausschauen:

Private Sub cmdCdPackungen_Click()

  DoCmd.OpenForm "frmCdPackung"

End Sub

Erstellen von eigenen Ereignisprozeduren

Wenn Sie im Formular- oder Berichtsentwurf auf ein Objekt mit der rechten Maustaste klicken, können Sie aus dem Kontextmenü den Punkt Ereignis auswählen. Im nächsten Fenster wählen Sie dann den Punkt Code‑Generator aus und springen damit direkt in den VBA-Editor. Mit dieser Technik können Sie allerdings nur das sog. Standardereignis bearbeiten – für die Schaltfläche ist es logisch das Ereignis Click.

Wenn Sie auch andere Ereignisse behandeln möchten, klicken Sie im Eigenschaftsfenster auf der Registerkarte Ereignis neben des gewünschten Ereignisses auf die kleine Schaltfläche mit drei Punkten. Wenn eine Ereignisprozedur bereits existiert, kommen Sie direkt in den VBA-Editor, sonst kommt wieder das Fenster, wo Sie Code‑Generator auswählen.

Textfeld:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Schlusswort

Erst mit der VBA-Programmierung können Sie die Möglichkeiten von MS-Access in vollem Umfang ausnutzen. Leider bleibt hier nicht mehr Zeit dafür.

Ich möchte sie zu meinem Lieblingskurs VBA-Programmierung mit MS-Access einladen.

Auf meiner Homepage www.geocities.com/kstipek finden Sie unter Favoriten eine umfangreiche Sammlung von Links zu MS-Access und auf www.pcnews.at  einige Artikel und Datenbanken mit ungeschütztem Code als Beispiele für Ihre weitere Arbeit.

Ich wünsche Ihnen dabei viel Spaß.                              Karel Stipek