Beruflich Dokumente
Kultur Dokumente
Referat III A 2
LMU München
Access 2.0
für
Fortgeschrittene
1. EINFÜHRUNG 1
1.1. Ein Wort zu Access 7.0 und Access 97 .......................................................... 1
1.2. Kursziel ......................................................................................................... 2
2. DIE BEISPIELDATENBANK 2
2.1. Aufgabenbeschreibung ................................................................................... 3
2.2. Tabellenstruktur der Beispieldatenbank .......................................................... 3
2.3. Bereits erstellte Objekte ................................................................................. 4
2.3.1. Formulare ............................................................................................... 4
2.3.2. Abfragen ................................................................................................. 5
2.3.3. Berichte .................................................................................................. 5
6. PROGRAMMFLUßKONTROLLE 45
6.1. Starten der Anwendung ................................................................................45
6.2. Das Makro „AutoExec“................................................................................46
6.3. Ereignisse .....................................................................................................47
6.3.1. Die wichtigsten Ereignisse......................................................................48
6.3.1.1. Formularereignisse.................................................................................... 49
6.3.1.2. Berichtsereignisse ..................................................................................... 50
6.3.1.3. Steuerelementereignisse............................................................................. 50
6.3.2. Ereignisse und Makros...........................................................................52
6.3.3. Ereignisprozeduren ................................................................................52
6.4. Benutzerdefinierte Menüleisten .....................................................................54
6.5. Arbeiten mit Symbolleisten ...........................................................................57
6.5.1. Standardsymbolleisten verstecken ..........................................................57
6.5.2. Benutzerdefinierte Symbolleisten............................................................57
6.6. Ändern der Tastaturbelegungen ....................................................................58
7. BENUTZERVERWALTUNG 60
7.1. Grundprinzipien............................................................................................60
7.2. Vergabe von Benutzerkennungen..................................................................61
7.3. Bestmögliche Datensicherheit .......................................................................63
7.4. Vergabe von Rechten an Access-Objekten ....................................................63
7.5. Benutzerverwaltung in einem Netzwerk ........................................................64
Inhaltsverzeichnis III
8. SCHMANKERL IN ACCESS 65
8.1. Eigenes „Outfit“ für die Anwendung ............................................................ 65
8.2. Anzeigen des Arbeitsfortschritts................................................................... 66
8.3. Kontrolle über das Programmende ............................................................... 67
Abbildungsverzeichnis
Abbildung 1: Die Beziehungen in der Beispieldatenbank ..........................................3
Abbildung 2: Die Abfrage-Entwurfsansicht ...............................................................6
Abbildung 3: Mehrere Kriterien über mehrere Felder ...............................................8
Abbildung 4: Dialogbox „Verknüpfungseigenschaften“ ..........................................10
Abbildung 5: Die Abfrage „Inventurliste“ ..............................................................12
Abbildung 6: Erstellen einer Parameterabfrage ......................................................13
Abbildung 7: Abfrage eines Parameters ..................................................................13
Abbildung 8: Berechnete Felder in einer Abfrage ...................................................14
Abbildung 9: Symbole für Aktionsabfragen .............................................................15
Abbildung 10: Tabellenerstellungsabfrage ..............................................................15
Abbildung 11: Die Aktualisierungsabfrage „Pauschalverlängerung“ .....................16
Abbildung 12: Löschen archivierter Daten..............................................................18
Abbildung 13: Der Entwurf einer Kreuztabellenabfrage..........................................19
Abbildung 14: Kreuztabellenabfrage.......................................................................20
Abbildung 15: Das Eigenschaftenfenster.................................................................21
Abbildung 16: Die Palette.......................................................................................23
Abbildung 17: Die Toolbox .....................................................................................24
Abbildung 18: Ein Textfeld .....................................................................................24
Abbildung 19: Optionsgruppe .................................................................................26
Abbildung 20: Die Makro-Entwurfsansicht .............................................................37
Abbildung 21: Die Makrogruppe „Ausleihen“ ........................................................42
Abbildung 22: Installation der Anwendung als eigenes Icon....................................46
Abbildung 23: Der Menü-Editor .............................................................................55
Abbildung 24: Benutzereintrag verändern...............................................................62
Abbildung 25: Zuteilung einzelner Berechtigungen .................................................64
Tabellenverzeichnis
Tabelle 1: Die wichtigsten Formulareigenschaften..................................................31
Tabelle 2: Die wichtigsten Berichtseigenschaften....................................................32
Tabelle 3: Die wichtigsten Bereichseigenschaften ...................................................33
Tabelle 4: Die wichtigsten Steuerelementeigenschaften...........................................33
Tabelle 5: Die wichtigsten Aktionen in Makros .......................................................38
Tabelle 6: Die wichtigsten Formularereignisse .......................................................49
Tabelle 7: Die wichtigsten Steuerelementereignisse.................................................51
1. Einführung 1
1. Einführung
Dieses Skript soll Sie durch den Kurs „Access 2.0 für Fortgeschrittene“ des Referats
III A 2 begleiten. Es kann natürlich kein Handbuch ersetzen und dient hauptsächlich
dazu, Ihnen das Nacharbeiten des Kursstoffes außerhalb der Kurszeiten zu erleich-
tern.
Für wirkliches eigenständiges Arbeiten ist es natürlich auch unzulänglich; es ist sehr
empfehlenswert, beim Erstellen eigener Datenbankanwendungen immer die Original-
dokumentation von Microsoft bei der Hand zu haben. Darin ist ein eigener Band
„Erstellung von Datenbankanwendungen“ enthalten, der einen großen Teil der hier
vorgestellten Features beschreibt und darüberhinaus noch viel mehr Tips enthält, als in
diesem Skript möglich war.
Das Skript ist die Fortsetzung meines Skripts zum Kurs „Access 2.0 für Einsteiger“, so
daß dessen Inhalt hier vorausgesetzt wird (wobei es selbstverständlich genügt, wenn
Sie sich das entsprechende Wissen selbst angeeignet haben). Das gilt besonders für die
Fragen des Datenbankentwurfes und der Normalisierung der Tabellenstruktur,
die beim eigenständigen Erlernen von Access erfahrungsgemäß immer zu kurz kom-
men, und für die hier noch einmal dringend auf das Einsteigerskript verwiesen wird.
Die hier verwendete Beispieldatenbank zur Bibliotheksverwaltung wurde ebenfalls im
Einsteigerskript entwickelt; sie wird jedoch unten im Abschnitt „Die Beispieldaten-
bank“ auf Seite 2 noch einmal kurz dargestellt, um den Quereinstieg zu ermöglichen.
1.2. Kursziel
Inhalt dieses Kurses ist der „Weg von der Datenbank zur Datenbankanwendung“.
Unter einer Datenbankanwendung versteht man ein eigenständiges „Programm im
Programm“, d.h. eine eigene Benutzeroberfläche mit eigenen Menüs und Dialogboxen,
mit deren Hilfe eine Datenbank, die mit Access erstellt wurde, für andere Personen als
den Datenbankentwickler (verschiedene Sachbearbeiter, Kollegen) bedienbar gemacht
wird. Endziel ist daher das völlige Verstecken der Programmteile von Access; kein
Anwender soll erst mühsam die Bedienung z.B. des Datenbankfensters oder der um-
fangreichen Menüleisten von Access lernen müssen, bevor er eine einfache Datenbank
wie z.B. ein Telefonverzeichnis bedienen kann.
Für den Kurs bedeutet das, daß davon ausgegangen wird, daß Sie bereits eine (ein-
fache) Datenbank mit Access 2.0 erstellen können sollten. Außerdem sollten Sie mit
Abfragen, Formularen (Formularentwurf!) und Berichten einigermaßen umgehen kön-
nen, damit dort keine allzu langen Wartezeiten entstehen
Daher ist der Inhalt dieses Kurses
• das Erstellen von Abfragen (Vertiefung)
• Verfeinerung von Formular- und Berichtsentwürfen
• Einführung in die Makroprogrammierung
• Definition eigener Menü- und Symbolleisten
• Schutz von Datenbanken vor unerlaubten oder unbeabsichtigten Zugriffen.
Dabei müssen Sie allerdings im Auge behalten, daß die Erstellung von Datenbankan-
wendungen eigentlich die Arbeit von qualifizierten Programmierern ist, die dafür
mehrere Jahre studiert haben. Wagen Sie sich also nicht zu früh an große Projekte, de-
nen Sie am Ende vielleicht nicht mehr gewachsen sein könnten.
2. Die Beispieldatenbank
Dieses Kapitel soll den Aufbau der Beispieldatenbank, die bereits im Skript „Access
2.0 für Einsteiger“ erstellt wurde, für „Quereinsteiger“ kurz zusammenfassen, damit
sie dem weiteren Verlauf des Kurses folgen können. Die Teilnehmer, die den Einstei-
gerkurs noch in frischer Erinnerung haben, können daher dieses Kapitel getrost über-
springen.
2.1. Aufgabenbeschreibung
Die Beispieldatenbank, an der sich dieser Kurs orientiert, soll eine einfache Bibliothek
verwalten. Zu diesem Zweck werden Informationen über die Leser und den Bücher-
bestand verwaltet. Dazu kommt die Verwaltung von Ausleihvorgängen inklusive der
automatischen Erstellung von Mahnungen, falls die Leihfrist überzogen wurde.
2. Die Beispieldatenbank 3
Zwar genügt diese Beispieldatenbank nicht den Anforderungen, die an die Verwaltung
einer Bibliothek in der Praxis gestellt werden. Jedoch bietet sie viele Möglichkeiten,
um grundlegende Arbeitsweisen mit Access zu zeigen. Sie ist daher bewußt unter die-
sem Aspekt reduziert auf das, was zum Erlernen der Funktionen wesentlich ist.
2.3.1. Formulare
Folgende einfache Formulare wurden für die Dateneingabe erstellt:
• Das Formular „Büchereingabe“ wurde mit dem „AutoFormular“-Assi-
stenten erstellt und basiert auf der Tabelle „Bücher“.
• Das Formular „Lesereingabe“ basiert auf der Tabelle „Leser“ und wurde
ursprünglich mit dem Assistenten „Einspaltiges Formular“ erstellt, dann
aber um einige Funktionen (z.B. Optionsgruppe für die Lesergruppe) er-
weitert.
• Das Formular „Ausleihen“ besteht aus einem Haupt- und einem Unter-
formular und dient der Erfassung von Ausleihvorgängen: Im Hauptformu-
lar werden die Informationen zu einem Leser angezeigt (Datenquelle ist die
die Abfrage „Leserinformationen“), im Unterformular die zugehörigen
Ausleihvorgänge (Datenquelle: „Ausleihinformationen“). Beide Formular-
teile sind über die „Lesernummer“ miteinander verknüpft.
2.3.2. Abfragen
Zur Auswertung der Daten wurden die folgenden Abfragen erstellt:
• Die Abfrage „Ausleihstatistik“ ermittelt für jedes Buch die Anzahl der
Ausleihvorgänge, in denen es erfaßt ist. Dies wurde durch die Gruppierung
2. Die Beispieldatenbank 5
der Datensätze nach der Signatur der Bücher, verbunden mit der Aggre-
gatfunktion „Anzahl“ erreicht.
• Die Abfrage „Leserstatistik“ ist die Grundlage für eine graphische Dar-
stellung der Ausleihvorgänge nach Lesergruppen.
• Die Abfragen „Leserinformationen“, „Ausleihinformationen“ und
„Mahnungen“ dienen als Datenquellen für das Formular „Ausleihen“ bzw.
den Bericht „Mahnungen“.
2.3.3. Berichte
Um die Daten der Datenbank darzustellen, wurden folgende einfache Berichte erstellt:
• Der Bericht „Ausleihstatistik“ stellt die Ergebnisse der Abfrage
„Ausleihstatistik“ formatiert dar. Er wurde mit dem Berichtsassistenten für
„Tabellarische Darstellung“ erstellt.
• Der Bericht „Mahnungen“ erstellt automatisch Mahnbriefe zum Versand
an säumige Leser. Er basiert auf der Abfrage „Mahnungen“ und wurde ur-
sprünglich mit dem Assistent für „Gruppierungen“ erstellt, aber weitge-
hend „von Hand“ umgestaltet.
Beginnen Sie einmal mit der ersten Möglichkeit, d.h. selektieren Sie alle Bücher, für
die kein entsprechender Datensatz in der Tabelle „Ausleihen“ besteht:
Ausgangspunkt hierfür ist jedenfalls eine Auswahlabfrage, die auf den Tabellen
„Bücher“ und „Ausleihen“ basiert und die Felder „Signatur“, „Autor“, „Titel“, „Auf-
lage“ und „Ausleihen-ID“ enthält. Die „Ausleihen-ID“ ist nötig, um die Zahl der Aus-
leihvorgänge ermitteln zu können. Außerdem werden Sie das Feld „Zurückgegeben“
benötigen, da Sie für die zweite Möglichkeit nach diesem Feld selektieren müssen.
hängig davon, ob ein verwandter Datensatz in der anderen Tabelle existiert oder nicht.
Wählen Sie hier also die zweite Variante aus, d.h. lassen Sie alle Datensätze aus der
Tabelle „Bücher“ anzeigen, egal, ob sie bereits ausgeliehen wurden oder nicht. In der
Entwurfsansicht wird die Beziehung nun durch ein Pfeilsymbol gekennzeichnet. Diese
Änderung des Beziehungstyps wirkt sich aber nur innerhalb der aktuellen Abfrage
aus. Falls Sie diese Einstellung für alle zukünftigen Abfragen erhalten möchten, müs-
sen Sie dies bei den „Beziehungen“ einstellen. Allerdings macht das nur in den selten-
sten Fällen Sinn!
In der Datenblattansicht sehen Sie nun, daß auch die nicht ausgeliehenen Bücher an-
gezeigt werden, wobei (logischerweise) das Feld „Anzahl von Ausleihen-ID“ bei die-
sen Büchern leer bleibt, da ja eben keine entsprechenden Ausleihen-IDs existieren. Je-
denfalls ist es für Sie jetzt ein leichtes, als Kriterium in dieses Feld „Ist Null“ einzu-
tragen, damit nur die leeren Felder angezeigt werden. Verwenden Sie hier nicht „0“,
denn damit würden die Datensätze ausgewählt, bei denen tatsächlich die Zahl „0“ im
Feld „Anzahl von Ausleihen-ID“ steht, und die gibt es nicht!
Damit wäre der erste Teil der Abfrage geschafft: Alle Bücher, die noch nie ausgeliehen
wurden, werden angezeigt.
Wählen Sie also für das Feld „Zurückgegeben“ die Aggregatfunktion „Max“ und
tragen Sie als Kriterium „Ja“ (oder -1) ein. Dieses Kriterium muß nach dem, was Sie
im vorigen Kapitel gelernt haben, in der zweiten Zeile eingetragen werden, damit Ac-
cess nicht nur die Datensätze auswählt, die die erste und die zweite Bedingung erfüllen
(solche gibt es nicht, weil ein Buch, das nie ausgeliehen wurde, nicht zurückgegeben
worden sein kann!).
Ihre Abfrage sollte dann aussehen wie in Abbildung 5 (im Beispiel wurde das Feld
„Anzeigen“ bei den Kriterienfeldern noch deaktiviert). Überprüfen Sie das Ergebnis Ih-
rer Bemühungen in der Datenblattansicht, und Sie sollten zufrieden sein!
3.3. Parameterabfragen
Alle bisherigen Abfragen hatten den manchmal gravierenden Nachteil, daß Sie als Kri-
terien feste Werte als xxx verwenden mußten. Wenn Sie nun andere Kriterien aus-
wählen müssen (z.B. ein anderes Jahr), müssen Sie (oder eben die Sachbearbeiter, die
mit Ihrer Datenbankanwendung arbeiten sollen) jedes Mal den Entwurf der Abfrage
verändern.
Das muß aber nicht sein: Sie können auch erst bei der Ausführung der Abfrage vom
Benutzer Kriterien eingeben lassen. Das ist dann sinnvoll, wenn Ihnen beim Arbei-
ten immer wieder aufgefallen ist, daß Sie eine Abfrage an immer der gleichen Stelle
verändern mußten.
Sie können in Access hierzu Parameter verwenden. Dazu sind zwei Schritte erforder-
lich:
1. Tragen Sie dort, wo die abzufragende Variable (also das xxx) steht, eine
Eingabeaufforderung in eckigen Klammern ein. Die Eingabeaufforde-
rung muß den Konventionen für Variablennamen entsprechen, sie darf also
3. Das Entwerfen von Abfragen (Vertiefung) 11
keine Sonderzeichen wie zum Beispiel einen Punkt oder ein Ausrufezei-
chen enthalten.
2. Wählen Sie den Menübefehl „Abfrage/Parameter“. In dem Dialogfeld,
das dann erscheint, tragen Sie in die linke Spalte die Eingabeaufforderung
genau so ein, wie Sie sie vorher definiert haben (auch mit den eckigen
Klammern). In die rechte Spalte muß dann noch der Datentyp dieser Va-
riablen eingetragen werden.
Dieser Schritt ist aber nur erforderlich, wenn Sie als Datentyp nicht
„Zahl“ oder „Text“ auswählen. Bei diesen Standard-Datentypen erkennt
Access das bei der Eingabe automatisch, so daß Sie es beim ersten Schritt
belassen können. Insbesondere bei Datum/Zeit-Feldern ist die Eingabe des
Parametertyps aber unumgänglich!
Die Eingabe der Parametertypen sieht dann aus wie in Abbildung 6.
Hier wurde ein Parameter für das Muster eines Wie-Kriteriums verwendet. Wenn
Sie diese Abfrage öffnen, erscheint zuerst das Fenster aus Abbildung 7, in dem Sie den
entsprechenden Wert eintragen müssen.
Dieses Fenster erscheint wahrscheinlich häufiger, als Ihnen lieb ist: Nämlich immer
dann, wenn in einer Abfrage bei einem Feldnamen ein Tippfehler steckt und Access
diesen Feldnamen deswegen nicht erkennen kann. Auch wenn in einer Abfrage, einem
Formular oder einem Bericht berechnete Felder verwendet werden (siehe dazu unten
den Abschnitt 4.3.6, „Berechnete Fel-
der in Formularen und Berichten“ auf
Seite 28) und bei den Feldnamen der
Berechnung ein Tippfehler versteckt
ist, geht Access davon aus, daß Sie
ein Parameterfeld verwenden möchten
Abbildung 7: Abfrage eines Parameters
12 Access 2.0 für Fortgeschrittene
3.5. Aktionsabfragen
Aber Abfragen können noch viel mehr als nur die Auswahl von Datensätzen nach be-
stimmten Kriterien aus verschiedenen Tabellen. Abfragen sind auch ein wichtiges
Werkzeug, um Veränderungen an Ihren Daten vorzunehmen. Sie können damit
Daten nach bestimmten Kriterien verändern, löschen, an eine bestehende Tabelle anfü-
gen oder auch eine neue Tabelle daraus erstellen. Dazu erstellen Sie am besten zu-
nächst eine Auswahlabfrage, die alle gewünschten Daten enthält; das ist am unge-
fährlichsten, falls Sie sich bei den Auswahlkriterien irren sollten. Danach wählen Sie
das entsprechende Symbol aus der Symbolleiste, um eine Aktionsabfrage daraus zu er-
stellen (siehe Abbildung 9). Je nachdem, was für eine Art von Aktionsabfrage Sie ge-
wählt haben, geht es unterschiedlich weiter.
3. Das Entwerfen von Abfragen (Vertiefung) 13
frage zusammengestellt hatten, wird in eine neue Tabelle mit dem angegebenen Namen
gespeichert.
3.5.2. Aktualisierungsabfrage
Wenn Sie Daten in Ihren Tabellen in großem Umfang verändern möchten, wählen
Sie das Symbol für „Aktualisieren“ aus der Symbolleiste. Access fügt in den unteren
Bereich des Entwurfsfensters eine Zeile „Aktualisieren“ ein, in die Sie den Ausdruck
für den neuen Wert des Feldes eintragen können. Sie können dort alles tun, was Sie
auch in einem berechneten Feld einer Abfrage darstellen können (siehe unter 3.4 auf
Seite 14), also auch einfach feste Werte eintragen.
In der Tat ist es am sichersten, wenn Sie auch hier zuerst eine Auswahlabfrage er-
stellen, die in einem berechneten Feld das später gewünschte Ergebnis Ihrer Aktualisie-
rungsabfrage ausgibt. Wenn Sie mit dem Ergebnis zufrieden sind, wählen Sie
„Aktualisierungsabfrage“ über die Symbolleiste oder den Menübefehl „Abfrage/Aktu-
alisieren“ aus, und kopieren Sie den Ausdruck für das berechnete Feld einfach in die
„Aktualisieren“-Zeile des Feldes, das Sie neu berechnen wollen. In dieser Zeile darf
auch der Feldname des zu aktualisierenden Feldes auftauchen. Er steht dann für den
alten Wert dieses Feldes.
Ein Beispiel für die Bibliotheksverwaltung ist die Pauschalverlängerung aller Bü-
cher eines bestimmten Lesers (vgl. Abbildung 11): Bei allen Büchern eines be-
stimmten Lesers (Die Lesernummer wird durch eine Parameterabfrage bestimmt), die
in höchstens 10 Tagen ablaufen und noch nicht zweimal verlängert wurden, wird das
Rückgabedatum um vier Wochen (28 Tage) verlängert und die Zahl der Verlängerun-
gen um eins erhöht.
Hier sind drei Kriterien (Lesernummer, Rückgabedatum, Zahl der Verlängerungen)
miteinander Und-verknüpft (sie stehen in der gleichen Zeile), so daß nur die Daten-
sätze selektiert (und aktualisiert) werden, auf die alle Bedingungen zutreffen.
3.5.3. Anfügeabfrage
Mit einer Anfügeabfrage können Sie ausgewählte Daten aus Berechnungen oder aus
einer oder mehreren Tabellen an eine andere Tabelle anfügen. Wenn Sie beispiels-
weise auf einen Knopfdruck des Benutzers hin an eine Tabelle einen Datensatz anfü-
gen möchten, verwenden Sie hierzu eine Anfügeabfrage, die per Makro gestartet wird
(dazu mehr in Abschnitt 6.3.2 Ereignisse und Makros, auf Seite 52).
Um das am einfachsten zu gestalten, erstellen Sie zunächst eine Auswahlabfrage, die
alle anzufügenden Felder enthält, wobei es praktisch, aber nicht zwingend ist, wenn Sie
schon die Feldnamen der Tabelle verwenden, an die Sie die Datensätze anfügen möch-
ten. Wenn Sie dann das Symbol „Anfügen“ anwählen, fragt Access Sie – wie bei der
Tabellenerstellungsabfrage – nach den Namen der Tabelle und der Datenbank, in die
die Daten eingefügt werden sollen. Wenn Sie diese Angaben ausgefüllt haben, er-
scheint eine neue Zeile „Anfügen an“ im Entwurfsbereich Ihrer Abfrage, die die
Feldnamen der Zieltabelle enthält, an die die jeweiligen Daten angefügt werden sollen.
Wenn Sie die richtigen Feldnamen schon in der Auswahlabfrage verwendet haben, er-
kennt Access automatisch die Feldnamen der Zieltabelle. Ansonsten müssen Sie sie
jetzt eintragen.
Nach dem Klick auf das Symbol mit dem Ausrufezeichen startet die Anfügeabfrage.
3.5.4. Löschabfrage
Mit einer Löschabfrage können Sie Daten nach bestimmten Kriterien aus Ihrem
Bestand löschen. Ein Beispiel ist das Löschen aller Ausleihinformationen aus dem
Jahre 1995, die Sie ja oben in 3.5.1 archiviert haben. Dafür sieht die zugehörige
Löschabfrage aus wie in Abbildung 12. Beachten Sie das erste Feld „Auslei-
hen.*“: Es bedeutet, daß alle Felder des Datensatzes gelöscht werden. In das Feld
„Löschen von“ können Sie keine einzelnen Datenfelder eintragen.
Wenn Sie einzelne Felder der Datensätze (etwa nur das Feld „Verlängerung“) lö-
schen möchten, können Sie dies nicht mit einer Löschabfrage erreichen. Sie müssen
dann eine Aktualisierungsabfrage verwenden, die in die entsprechenden Felder den
festen Wert „Null“ einträgt, damit die Inhalte gelöscht werden.
3.6. Kreuztabellenabfragen
Eine weitere Besonderheit sind Kreuztabellenabfragen. Sie können damit den Spal-
tenüberschriften einer Abfrage ebenfalls Werte aus Ihrer Datenbank zuordnen, es
werden also nicht Feldnamen verwendet, sondern Datenwerte. Das ist für Übersichts-
darstellungen sehr hilfreich, weil Sie Gruppierungen dann nicht nur untereinander dar-
stellen können, sondern auch nebeneinander.
16 Access 2.0 für Fortgeschrittene
Wenn Sie beispielsweise eine Abfrage erstellen möchten, die Ihnen pro Lesergruppe
die monatlichen Ausleihen zeigt, so müßten Sie mit einer herkömmlichen Aus-
wahlabfrage zunächst nach Monaten des Ausleihdatums, dann darin nach Lesergrup-
pen gruppieren, und bei den Ausleihen als Aggregatfunktion „Anzahl“ eintragen. Das
Ergebnis wäre relativ unübersichtlich. Übersichtlicher geht das mit einer Kreuztabel-
lenabfrage. Hierzu wählen Sie das Symbol „Kreuztabelle“ aus der Symbolleiste des
Abfrageentwurfs. Es erscheint eine neue Zeile mit der Überschrift „Kreuztabelle“. Für
jedes Feld Ihrer Abfrage tragen Sie dort ein, welche Funktion es in der Kreuztabelle
erfüllen soll:
• Zeilenüberschrift: Die Inhalte des entsprechenden Feldes werden als Zei-
lenüberschriften verwendet. In einer Kreuztabelle können Sie mehrere
Zeilenüberschriften verwenden, die dann wie herkömmliche Gruppierun-
gen verwendet werden. Im Beispiel (Abbildung 13) wurden die Monate als
Zeilenüberschriften verwendet.
Hier wurde ein kleiner Trick verwendet, um aus dem Ausleihdatum nur
den Monat zu extrahieren: Mit der Funktion „Format([Ausleih-
datum]; "mmmm")“ wird für dieses Feld vom Typ Datum ein Ausga-
beformat gewählt, das nur den Monat als Text anzeigt. Näheres dazu fin-
den Sie in der Online-Hilfe zum Thema „Format“.
• Spaltenüberschrift: Die Inhalte des entsprechenden Feldes werden als
Überschrift für die Spalten der Abfrage verwendet. In einer Kreuztabellen-
abfrage kann nur ein Feld als Spaltenüberschrift bestimmt werden. Im
Beispiel ist das der Name der Kundengruppe (Zuordnung)
• Tabelleneintrag: Diese Einstellung bestimmt, daß die Inhalte dieses Fel-
des verwendet werden, um die Tabelle auszufüllen. Hierbei muß eine Ag-
gregatfunktion verwendet werden, die eine Berechnung über alle Werte
3. Das Entwerfen von Abfragen (Vertiefung) 17
3.7. Zusammenfassung
Das bis hierher gezeigte sollte als Grundlage für die Erstellung eigener Abfragen aus-
reichen. Sie können das Gelernte natürlich beliebig miteinander kombinieren, also z.B.
in die Aggregatfunktionen einer Kreuztabellenabfrage noch berechnete Felder einfügen
und alles nach bestimmten Kriterien-Parametern ausgeben lassen. Im Ergebnis wird
man wohl sagen können, daß alle Fra-
gen, die Sie an Ihre Datenbank formulie-
ren können, mit Hilfe von Abfragen rea-
lisierbar sind.
4. Vertiefung: Formulare
und Berichte
ziell bei der Erstellung von komplexeren Datenbankanwendungen, in denen die Kon-
trolle der Konsistenz der Daten nicht ganz Access überlassen werden kann, weil die
Mechanismen der referentiellen Integrität alleine nicht ausreichen, sondern beispiels-
weise bei einer Eingabe des Benutzers in ein Feld zugleich andere Felder in anderen
Tabellen aktualisiert werden müssen, müssen Sie alle Eingaben über Formulare reali-
sieren, weil Sie nur dort die Möglichkeit haben, alle Aktionen des Benutzers zu über-
wachen und entsprechend darauf zu reagieren.
Für dieses Kapitel sollten Sie bereits folgendes beherrschen:
• Das Erstellen einfacher Formulare und Berichte mit Hilfe der Formular-
und Berichtsassistenten,
• Das Verändern des Aussehens Ihrer Formulare und Berichte in der Ent-
wurfsansicht durch Verschieben und durch Veränderung der Größe der
einzelnen Steuerelemente,
• Das Hinzufügen neuer Steuerelemente mit Hilfe der Steuerelementassi-
stenten (falls vorhanden) bzw. per Drag & Drop aus der Feldliste,
• Den Umgang mit den vielen verschiedenen Mauszeigerformen in der
Entwurfsansicht.
Steuerelementes (oder Formulars) angezeigt (siehe Abbildung 15); dessen Name er-
scheint in der Titelzeile des Eigenschaftenfensters.
Die Eigenschaften sind in verschiedene Kategorien aufgeteilt, die Sie (der Übersicht-
lichkeit halber) getrennt anschauen können, indem Sie in dem Kombinationsfeld oben
im Eigenschaftenfenster die gewünschte Art von Eigenschaften auswählen. Es gibt
• Daten-Eigenschaften: Alle Eigenschaften, die dafür sorgen, daß das
Steuerelement bzw. das Formular die richtigen Daten zur richtigen Zeit
anzeigt. In den meisten Fällen werden diese Eigenschaften von Assistenten
gesetzt (z.B. Formularassistenten).
• Layout-Eigenschaften: Diese Eigenschaften bezeichnen das Aussehen des
Objekts, also seine Größe, Position, Farbe, Schriftart, Beschriftung etc.
Diese Eigenschaften können Sie komfortabel entweder mit der Maus oder
über die Symbolleiste (für Schriftart etc.) verändern.
• Ereignis-Eigenschaften: Diese Eigenschaften sind ganz besondere. Hier
findet im wesentlichen die Programmierung Ihrer Anwendung statt:
Praktisch alle Aktionen des Benutzers (Mausklicks, Tastendrücke...)
schlagen sich in sog. Ereignissen nieder, die einem Steuerelement zuge-
ordnet werden. Wenn also beispielsweise ein Benutzer auf eine Befehls-
schaltfläche in Ihrem Formular klickt, tritt das Ereignis „Beim Klicken“ für
diese Schaltfläche ein. Wenn Sie darauf reagieren möchten (z.B. ein Makro
starten), müssen Sie dieses Makro in die Ereignis-Eigenschaft des entspre-
chenden Ereignisses eintragen. Dazu später mehr im Abschnitt 6.3.2,
Ereignisse und Makros auf Seite 52.
• Andere Eigenschaften: Das ist der kümmerliche Rest, der in keine dieser
Gruppen paßt, also zum Beispiel der Name des Steuerelements (wichtig,
wenn mit dem Inhalt ein anderes Feld berechnet werden soll), der Text, der
in der Statuszeile angezeigt werden soll, wenn das Steuerelement aktiv ist
etc.
4.3. Steuerelemente
Im folgenden werden Sie die am häufigsten verwendeten Steuerelemente kennenler-
nen. Sie werden deren Optik schon von anderen Windows-Anwendungen kennen. In
Access können Sie alle Elemente verwenden, die Sie kennen, um Daten darzustellen
oder um Benutzeraktionen auszuführen.
Eigene Steuerelemente fügen Sie ein, indem Sie in der Toolbox (siehe Abbildung 17)
das entsprechende Symbol aktivieren und dann dorthin klicken, wo Sie das neue Steu-
erelement haben möchten. Falls Sie die Schaltfläche „Assistent“ aktiviert haben, startet
automatisch der entsprechende Steuerelementassistent, falls für Ihr ausgewähltes Steu-
erelement ein solcher existiert.
Jedes Steuerelement kann entweder an ein Feld aus der dem Formular oder dem Be-
richt zugrundeliegenden Tabelle oder Abfrage gebunden sein, oder es ist ungebun-
den, enthält also keinen Wert aus Ihrer Datenbank; Sie können in einem ungebundenen
Feld z.B. das aktuelle Datum anzeigen lassen oder von einem Benutzer Informationen,
die Sie nur vorübergehend benötigen, eintragen lassen.
4.3.1. Textfelder
Am häufigsten sind Textfelder anzutref-
Abbildung 18: Ein Textfeld fen. In ihnen werden alle Text- und
Zahleneingaben abgewickelt. Access
verwendet solche Textfelder standardmäßig, wenn Sie ein Feld aus der Feldliste in das
Formular ziehen, oder wenn Sie ein Formular mit einem Assistenten erstellen. Ein Bei-
spiel eines Textfeldes sehen Sie in Abbildung 18.
Den Inhalt eines Textfeldes können Sie editieren, wenn Sie die F2-Taste drücken (oder
mit der Maus hineinklicken). Es gelten die üblichen Windows-Konventionen, es wird
also der markierte Textteil gelöscht und überschrieben, wenn Sie lostippen (in
Abbildung 18 würde also nach Druck auf die Taste „A“ nur noch ein A darin stehen.
4. Vertiefung: Formulare und Berichte 21
möchten, sondern nur mit Titeln arbeiten wollen (wobei natürlich die Signatur im
Hintergrund als Fremdschlüssel eingetragen werden muß), ändern Sie die Spaltenbreite
der ersten Spalte auf 0 cm (in der Eigenschaft „Spaltenbreiten“, wo die Breiten der
Spalten nacheinander durch Strichpunkt getrennt aufgelistet sind).
Bei Kombinationsfeldern gibt es zudem noch ein paar äußerst praktische Eigenschaf-
ten, die Sie verwenden können, um den Benutzern das Arbeiten zu erleichtern:
• Nur Listeneinträge: Wenn diese Eigenschaft auf „Ja“ gestellt ist, akzep-
tiert Access in diesem Feld nur Werte, die auch in der Liste stehen. Bei
dem Beispiel für eine Werteliste, also der Eingabe von Städten im Kun-
denformular, wäre das offensichtlich Blödsinn, nicht aber dann, wenn tat-
sächlich Werte aus einer anderen Tabelle eingetragen werden sollen.
• Automatisch ergänzen: Die angenehme Eigenschaft von Access, bei Ein-
gaben in Kombinationsfelder nach dem ersten getippten Buchstaben auto-
matisch schon den am besten passende Eintrag aus der Liste auszuwählen,
können Sie auch für Ihre Kombinationsfelder verwenden.
Auch bei Kombinations- und Listenfeldern ist die Verwendung des Steuerelementassi-
stenten sehr empfehlenswert, da er alle schwierigen Eigenschaften bereits einstellt.
4.3.3. Optionsgruppen
Vielleicht kennen Sie aus anderen Windows-Anwendungen bereits Optionsgruppen, in
denen Sie zwischen verschiedenen Möglichkeiten wählen können (siehe Abbildung
19) Im Gegensatz zu Kombinations- oder Listenfeldern sind bei Optionsgruppen die
Möglichkeiten fest vorgegeben und können nicht dynamisch aus Tabellen ausgelesen
werden. Außerdem können Sie Optionsgruppen nur zur Darstellung von Zahlenwerten
verwenden.
Eine Optionsgruppe besteht aus dem Rahmen (das ist die Optionsgruppe im eigentli-
chen Sinne) und den einzelnen Optionsfeldern (hier: „Student“, „Professor“, „Ex-
tern“), die eigene Objekte mit eigenen Eigenschaften darstellen.
In Access erhält jedes einzelne Element einer Options-
gruppe einen Optionswert (eine Ganzzahl), der in der
gleichnamigen Eigenschaft des Optionsfeldes eingetra-
gen wird. Im Beispiel wurde für „Student“ 1, für
Abbildung 19: Optionsgruppe „Professor“ 2 und für „Extern“ 3 vergeben. Die Opti-
onsfelder alleine können an kein Feld der Datenbank
gebunden werden, sondern nur die ganze Optionsgruppe. Ihr Inhalt ist der Options-
wert des gerade aktiven Optionsfeldes, im Beispiel also 2.
Optionsgruppen erstellen Sie am einfachsten mit dem Optionsgruppenassistenten.
Bitte halten Sie sich an den Windows-Standard und verwenden Sie nur Optionsfelder
und Umschaltflächen, aber keine Kontrollkästchen in Optionsfeldern! Kontrollkästchen
sind nach der Windows-Definition nur da zu verwenden, wo Sie mehrere Optionen
gleichzeitig aktivieren können. Das geht aber in Access-Optionsgruppen nicht.
4. Vertiefung: Formulare und Berichte 23
4.3.4. Bezeichnungsfelder
Bisher wurden die Bezeichnungsfelder stillschweigend mit verwendet, ohne näher auf
sie einzugehen: Wenn Sie ein Steuerelement aus der Toolbox erstellen, erstellt Access
im Regelfall ein Bezeichnungsfeld gleich mit, das die Beschriftung des Steuerele-
ments enthält. In der Optionsgruppe aus Abbildung 19 sind das gleich vier Stück ge-
wesen: „Zuordnung“, „Student“, „Professor“ und „Extern“. Alles sind eigene Steuere-
lemente, die praktischerweise mit den „wirklichen“ Steuerelementen, also den zugehö-
rigen Text- oder Optionsfeldern dergestalt verbunden sind, daß ein Klick auf das Be-
zeichnungsfeld genügt, um das zugehörige „echte“ Steuerelement zu betätigen.
Außerdem haben diese Bezeichnungsfelder einen riesigen Vorteil: Sie können mit ih-
nen Tastaturkürzel festlegen. Sie kennen das ja aus allen anderen Windows-Anwen-
dungen, in denen Sie den Klick auf ein Element in aller Regel ersetzen können durch
die Tastenkombination Alt+<Unterstrichener Buchstabe>. Wenn der Text vor einem
Steuerelement also „Name:“ lautet, können Sie mit Alt+m dieses Steuerelement akti-
vieren.
Kinderleicht können Sie das auch für Ihre Access-Anwendungen verwenden und sie so
wesentlich benutzerfreundlicher gestalten. Dazu müssen Sie nur im Beschriftungstext
vor den zu unterstreichenden Buchstaben das Zeichen „&“ setzen. Im obigen Bei-
spiel würde der Text also „Na&me:“ lauten. Um den Text zu ändern, klicken Sie am
einfachsten so oft in das Bezeichnungsfeld, bis ein blinkender Cursor erscheint. Alter-
nativ können Sie auch die Eigenschaft „Beschriftung“ des Bezeichnungsfeldes än-
dern. Schon in der Entwurfsansicht wird das Bezeichnungsfeld dann mit dem unterstri-
chenen Buchstaben angezeigt.
Achten Sie bei dieser Methode aber darauf, daß Sie keine Tastaturabkürzungen mehr-
fach vergeben, sonst ist das Mehr an Benutzeraufwand gleich wieder im Eimer. Au-
ßerdem sollten keine gleichen Kürzel in Bezeichnungsfeldern und Menüleiste vor-
kommen, weil die Menüs ebenfalls mit Alt+<Unterstrichener Buchstabe> bedient wer-
den können.
4.3.5. Befehlsschaltflächen
Sie können in Access auch Befehlsschaltflächen in Ihre Formulare einbauen, um dem
Benutzer bestimmte Aktionen zu erleichtern. Die meisten Grundfunktionen bietet Ih-
nen der Steuerelementassistent an, so daß Sie dafür gar nicht programmieren müssen,
sondern einfach mit der entsprechenden Schaltfläche aus der Toolbox bei aktiviertem
Assistenten eine Befehlsschaltfläche einfügen.
Auch hier können Sie mit dem „&“-Zeichen eine Tastenkombination für Ihre Be-
fehlsschaltfläche einführen. Zudem haben Sie die Möglichkeit, Ihre Schaltfläche zur
Standard-Schaltfläche Ihres Formulars zu machen (diese wird mit dickerem Rand
dargestellt und reagiert auf die Eingabetaste), indem Sie die Eigenschaft „Bei Einga-
betaste“ auf „Ja“ setzen. Auch wenn Sie Ihre Schaltfläche als Abbruch-Schaltfläche
verwenden möchten (laut Windows-Standard wird diese mit der Esc-Taste ausgelöst),
können Sie dazu die Eigenschaft „Bei Taste Esc“ auf „Ja“ setzen.
24 Access 2.0 für Fortgeschrittene
Für später, wenn Sie einmal Ihr erstes Makro geschrieben haben, gibt es noch eine
einfache Möglichkeit, eine Befehlsschaltfläche zu erstellen: Sie ziehen einfach das Ma-
kro, das Sie durch die Schaltfläche aufrufen lassen möchten, aus dem Datenbankfen-
ster in Ihr Formular.
Das Ergebnis von Berechnungen muß dabei nicht unbedingt in Textfeldern ausge-
geben werden, sondern kann ebensogut z.B. in einer Optionsgruppe dargestellt wer-
den, indem die Formel dort in die Eigenschaft „Steuerelementinhalt“ eingetragen
wird. Dafür sollte die Berechnung einen ganzzahligen Wert ergeben, der einem Opti-
onswert der Optionsgruppe entspricht.
Wenn Sie z.B. darstellen möchten, ob ein Kunde ein guter (mehr als 10.000 DM Um-
satz) oder ein schlechter (weniger als 10.000 DM) Kunde ist, dann erstellen Sie eine
Optionsgruppe mit den beiden Optionsfeldern „Guter Kunde“ (Optionswert 1) und
„Schlechter Kunde“ (Optionswert 2), und tragen Sie in die Eigenschaft „Steuerele-
mentinhalt“ folgende Formel ein: =Wenn([Umsatz]>10000;1;2). Diese Formel
ergibt 1, wenn der Umsatz größer als 10.000 ist, und 2, wenn nicht. Je nach dem Inhalt
des Feldes „Umsatz“ ändert sich jetzt die Darstellung der Optionsgruppe.
Bitte beachten Sie, daß Sie bei der Eingabe von Kriterien in Domänenfunktionen nur
die englische Schreibweise verwenden können, d.h. „And“ statt „Und“, „Or“ statt
„Oder“. Insbesondere heißt das Eltern-Objekt „Formulare“ hier „Forms“. Ein beson-
ders abschreckendes Beispiel hierfür finden Sie unten im Abschnitt 5.4, „Bedingungen
in Makros“ auf Seite 42.
4.4.1. Formulareigenschaften
Für Formulare als ganzes gibt es eine Fülle von Eigenschaften, von denen hier natür-
lich nur die wichtigsten, praktisch relevanten aufgezählt werden. Eigenschaften, die Sie
mit der Maus verändern (Größe etc.), sind ebenfalls aus Platzgründen nicht aufgeführt;
sie erklären sich aber selbst. Falls noch irgendwelche Fragen offenbleiben sollten,
schauen Sie einfach in der Online-Hilfe zu der entsprechenden Eigenschaft nach.
Eigenschaft Beschreibung
diese Datenquelle bearbeiten, indem Sie auf die Schaltfläche
mit den drei Punkten klicken, die hinter der Eigenschaft ange-
zeigt werden. Der SQL-Code wird vom Formularassistenten
erzeugt.
Beschriftung Enthält den Text, der in der Titelleiste des Formulars in der
Formularansicht angezeigt wird.
Bildlaufleisten Gibt an, welche Bildlaufleisten (Rollbalken, Scrollbars) in Ih-
rem Formular angezeigt werden: Horizontal, vertikal, beide
oder keine. Das ist letztlich eine Geschmacksfrage.
Datensatzmarkierer Gibt an, ob der Datensatzmarkierer am linken Rand des For-
mulars angezeigt werden soll. Das ist auch eine ästhetische
Frage: Wenn Sie ein Formular darstellen, das lediglich als
Dialogbox dient und keine eigenen Daten enthält, wäre es un-
sinnig, einen Datensatzmarkierer darzustellen.
Außerdem kann es manchmal hilfreich sein, den Datensatz-
markierer zu verstecken, wenn Sie den Benutzer daran hin-
dern möchten, einen Datensatz zu markieren (und dann zu lö-
schen). Dann müssen Sie diesen Befehl aber auch aus der
Menüleiste entfernen und die Tastenkombination Shift+Leer-
taste abfangen (siehe unten Abschnitt 6.6, „Ändern der Ta-
staturbelegungen“ auf Seite 58).
Navigationsschalt- Gibt an, ob die Navigationsschaltflächen am unteren Formu-
flächen larrand dargestellt werden sollen oder nicht. Wieder eine nur
ästhetische Frage.
Rahmenart, Beschreiben das Aussehen Ihres Formularrahmens. Sie kön-
Mit Systemmenüfeld, nen den Benutzer so an unüberlegten Handlungen hindern und
Mit Min Schaltfläche, das Design Ihrer Anwendung verbessern. Beispielsweise wur-
Mit Max Schaltfläche de in der Beispielanwendung für das Hauptmenü-Formular die
Rahmenart auf „keiner“, sowie die drei anderen Eigenschaften
auf „Nein“ gesetzt, so daß kein Fensterrand sichtbar ist.
4.4.2. Berichtseigenschaften
Für Berichte gibt es lediglich zwei Eigenschaften, die nicht schon bei den Formularei-
genschaften erklärt worden sind und trotzdem noch interessant sind:
Eigenschaft Beschreibung
Bereiche angezeigt werden. Wenn Sie beispielsweise für die
erste Seite eines Berichts einen anderen Kopf wünschen als für
die folgenden, sollten Sie den Kopf für die erste Seite in den
Berichtskopf eintragen, den für die folgenden Seiten in den
Seitenkopf, und dann im Bericht die Eigenschaft „Seitenkopf“
auf „Außer Berichtskopf“ setzen.
4.4.3. Bereichseigenschaften
Sowohl Formulare als auch Berichte sind in „Bereiche“ gegliedert, z.B. ein Formular
in die drei Bereiche „Formularkopf“, „Formularfuß“ und „Detailbereich“, oder in ei-
nem Bericht viel mehr: „Berichtskopf“ (wird am Anfang des Berichts angezeigt),
„Seitenkopf“ (am Anfang jeder Seite des Berichts), „xxx-Kopfbereich“ (Falls Sie mit
Gruppierungen arbeiten; wird am Beginn jeder neuen Gruppe angezeigt),
„Detailbereich“ (für jeden einzelnen Datensatz), und dann die drei ersten noch einmal
als Fußbereiche. Jeder dieser vielen Bereiche hat eigene Eigenschaften, von denen le-
diglich zwei wirklich interessant sind, und auch das nur bei Berichten:
4.4.4. Steuerelementeigenschaften
Im folgenden Kapitel sollen die wichtigsten Eigenschaften, die alle Steuerelemente be-
treffen, kurz erläutert werden. Wichtige Eigenschaften, die nur bei bestimmten Steue-
relementtypen existieren, wurden dort bereits angesprochen.
Eigenschaft Beschreibung
eine gleichlautende (interne) Eigenschaft, die dann bei Ver-
weisen in Berechnungen fälschlicherweise herangezogen wür-
de.
Außerdem sollten Sie vorsichtig sein, wenn ein berechnetes
Steuerelement einen Namen trägt, der mit einem Feldnamen
der Tabelle oder Abfrage, auf der das Formular beruht, über-
einstimmt. Dann kann sich Access nämlich bei der Berech-
nung im Kreise drehen, weil es während der Berechnung des
Steuerelements schon auf dessen Inhalt zugreift, dafür diesen
aber erst berechnen muß etc... Im Formular erscheint dann
„#Fehler!“.
Steuerelementinhalt Gibt an, an welches Feld der Datenherkunft das Formular das
Steuerelement gebunden ist. Hier ist der Platz, um den Aus-
druck für eine Berechnung einzutragen.
Format, Entspricht den gleichnamigen Eigenschaften im Tabellenent-
Eingabeformat, wurf: Format steht also für die Art der Datenausgabe, Einga-
Gültigkeitsregel, beformat, Gültigkeitsregel und Gültigkeitsmeldung für die
Gültigkeitsmeldung Eingabemaske, nach der der Benutzer Daten eingeben muß.
Diese Eigenschaften gelten natürlich nur bei der Eingabe über
das Formularfeld.
Standardwert Entspricht ebenfalls der gleichnamigen Eigenschaft im Tabel-
lenentwurf, d.h. sie gibt vor, welcher Wert in dieses Feld ein-
getragen wird, wenn ein neuer Datensatz in diesem Formular
angelegt wird.
Der Unterschied ist, daß der Standardwert im Tabellenentwurf
für alle Eingaben in dieses Feld gilt, während der Standard-
wert im Steuerelement nur für Eingaben über dieses Steuere-
lement gilt. Bestehen in Tabellenfeld und Steuerelement ver-
schiedene Standardwerteinstellungen, so „gewinnt“ die des
Steuerelements.
Statuszeilentext Enthält den Text, der in der Statuszeile am unteren Bild-
schirmrand angezeigt wird, während das Steuerelement aktiv
ist. Tragen Sie dort am besten irgendwelche tröstenden, hilf-
reichen Kommentare ein.
Sichtbar Sehr praktische Eigenschaft: Damit können Sie ein Steuere-
lement verstecken. Es wird dann zwar nicht angezeigt, Sie
können aber dennoch per Makro Veränderungen des Wertes
vornehmen oder in berechneten Feldern darauf verweisen.
Aktiviert, Gesperrt Beide sind genauso praktisch: Um ein Steuerelement zwar an-
30 Access 2.0 für Fortgeschrittene
Eigenschaft Beschreibung
zuzeigen, dem Benutzer aber keine Möglichkeit zu geben,
dessen Inhalt zu verändern (und auch den Cursor nicht in die-
ses Feld zu bewegen), müssen Sie die Eigenschaft „Aktiviert“
auf „Nein“ und „Gesperrt“ auf „Ja“ setzen.
Nur die erste Einstellung bewirkt, daß das Steuerelement
grau dargestellt wird und ebenfalls nicht verändert werden
kann; die zweite Einstellung alleine läßt zwar den Cursor noch
in das Steuerelement setzen (z.B. um darin zu suchen), aber
erlaubt ebenfalls keine Änderungen am Inhalt.
In Reihenfolge Wenn Sie diese Eigenschaft auf „Nein“ setzen, wird das Steu-
erelement nicht in der Standard-Tabulator-Reihenfolge
angesprungen, sondern kann nur direkt mit der Maus oder
mit der Tastaturabkürzung angesprochen werden. Verwenden
Sie diese Einstellung z.B. für Befehlsschaltflächen.
Vergrößerbar, Erlaubt es dem Steuerelement, zu „schrumpfen“, wenn keine
Verkleinerbar Daten in ihm enthalten sind, bzw. vertikal zu „wachsen“, wenn
die Daten den vorgegebenen Rahmen sprengen. Sehr hilfreich
in Berichten, wenn Daten nicht abgeschnitten sondern umbro-
chen werden sollen.
Wenn Sie „Vergrößerbar“ bei einem Steuerelement auf „Ja“
setzen, wird automatisch die gleiche Eigenschaft beim zuge-
hörigen Berichtsbereich auch auf „Ja“ gesetzt.
Layout-Eigenschaften Alle diese Eigenschaften verändern Sie am einfachsten mit der
Palette (Siehe Abschnitt 4.2, Die Palette, auf Seite 23) bzw.
mit der Symbolleiste des Formularentwurfes.
Das waren eigentlich schon die wichtigsten Eigenschaften von allen Elementen in Ac-
cess. Diejenigen, die in diesen Liste nicht aufgetaucht sind, habe ich größtenteils selbst
noch nie gebraucht.
Wenn Sie alles berücksichtigt haben, was Sie bis hierher gelernt haben, brauchen Ihre
Anwender immer noch Kenntnisse in Access, um mit Ihrer Datenbankanwendung um-
zugehen; Sie müssen sich im Datenbankfenster auskennen und wissen, welches For-
mular sie für welche Tätigkeit öffnen müssen usw. Jetzt kommt der große Schritt in
Richtung Benutzerfreundlichkeit: Die Makroprogrammierung.
5. Einführung in die Makroprogrammierung 31
zereingaben imitieren können. Hier nun eine Auswahl der praktisch am häufigsten ge-
brauchten Aktionen in alphabetischer Reihenfolge:
Aktion Beschreibung
den „OK“-Button verlassen muß. Diese Aktion ist sehr hilf-
reich, um eigene Makros zu testen, indem Sie einfach nach je-
der Aktion eine Meldungs-Aktion einfügen, die bestimmte
Werte ausgibt. Wichtigster Parameter ist „Meldung“: Er enthält
den Text der Meldung, der auch ein Ausdruck sein kann, z.B.:
="Der Wert des Feldes Leser-Nr ist gerade"
& [Leser-Nr]
Mit der Meldungs-Aktion können Sie aber keine Ja/Nein-
Abfragen zur Programmsteuerung verbinden (dazu mehr in
Abschnitt 5.4, „Bedingungen in Makros“ auf Seite 42)
ÖffnenAbfrage, Diese Aktionen öffnen ein Access-Objekt des angegebenen
ÖffnenBericht, Typs. Sie können jeweils den Namen des Objekts angeben,
ÖffnenFormular, sowie den Modus (Entwurf, Datenblatt oder Seitenansicht).
ÖffnenTabelle Wenn Sie Aktionsabfragen mit dieser Aktion öffnen, werden
sie ausgeführt. Beim Öffnen von Berichten und Formularen
können Sie zusätzlich einen Filter oder eine Bedingung ange-
ben, der bzw. die nur bestimmte Daten ausgibt. Im Beispiel von
Abbildung 20 wurde als Bedingung folgender Text eingegeben:
[Leser-Nr]=[Formulare]![Lesereingabe]![Le-
ser-Nr]
Das bewirkt, daß hier beim Öffnen des Formulars „Ausleihen“
nur der Datensatz des Lesers angezeigt wird, der gerade auch
im Lesereingabe-Formular aktiv ist.
Bei Formularen können Sie außerdem einen Fenstermodus vor-
geben. Das ist vor allem dann wichtig, wenn Sie unmittelbar
nach dem Schließen des mit der Aktion geöffneten Formulars
eine weitere Aktion vornehmen möchten (z.B. einen Wert ak-
tualisieren). Dafür müssen Sie als Fenstermodus „Dialog“
eintragen, damit Ihr Makro nach dem Öffnen des Formulars
nicht gleich weiter ausgeführt wird, sondern angehalten wird,
bis das Fenster geschlossen wird.
Außerdem können Sie ein Formular im Modus „Ausgeblen-
det“ öffnen, so daß das Formular zwar geladen ist (und Sie in
Formeln auf dessen Felder zugreifen können), aber nicht ange-
zeigt wird. Das ist besonders dann interessant, wenn Sie be-
stimmte globale Werte (MwSt-Satz und ähnliches) nicht in je-
der Berechnung von Hand eintragen (und bei einer Steuerrecht-
sänderung überall einzeln ändern) möchten, sondern an einem
zentralen Ort speichern, wo Sie den Wert nur einmalig ändern
müssen. Dafür öffnen Sie ein Formular „Allgemeines“ o.ä.,
das diese Werte enthält, zu Beginn der Anwendung ausgeblen-
5. Einführung in die Makroprogrammierung 35
Aktion Beschreibung
det, und greifen in Berechnungen nur auf Werte aus diesem
Formular zu
Schließen Schließt ein Objekt. Wenn Sie keine Parameter angeben, wird
das aktive Objekt geschlossen, ansonsten das, welches Sie mit
den Parametern festlegen.
SetzenWert Das ist die wichtigste Aktion für Datenveränderung. Mit
dieser Aktion können Sie jeden beliebigen Wert eines Steuere-
lements und sogar einer Steuerelementeigenschaft verändern.
Das ist zum einen interessant, um auf Knopfdruck bestimmte
Werte in bestimmte Felder einzutragen, um den Benutzern
Arbeit zu ersparen, zum andern kann über die Veränderung von
Eigenschaften zur Laufzeit das Aussehen des Formulars verän-
dert werden. Sie können z.B. auf Knopfdruck ein Steuerele-
ment verschwinden lassen, indem Sie die Eigenschaft „Sichtbar“
dieses Steuerelements mit der Aktion „SetzenWert“ auf „Nein“
setzen.
Parameter sind der Name des Steuerelements bzw. der Eigen-
schaft (z.B.: Steuerelementname.Sichtbar), sowie der
neue Wert des Elementes oder der Eigenschaft, der auch eine
Formel enthalten und so Werte aus anderen Steuerelementen
mit einbeziehen kann (hier muß ausnahmsweise das =-Zeichen
am Beginn der Formel weggelassen werden).
StopAlleMakros, Diese beiden Aktionen dienen dazu, die Ausführung des aktu-
StopMakro ellen bzw. aller momentan laufenden (wenn mit der Aktion
„AusführenMakro“ weitere Makros gestartet wurden) Makros
abzubrechen. Häufig wird diese Aktion nach der Aktion
„AbbrechenEreignis“ verwendet, um jegliche Aktivität erst
einmal zu stoppen, beispielsweise, wenn der Benutzer bei einer
Sicherheitsabfrage „Abbruch“ gewählt hat.
SuchenDatensatz, Mit dieser Aktion können Sie einen Access-Suchbefehl ausfüh-
SuchenWeiter ren lassen. Die Parameter kennen Sie alle aus dem „Suchen“-
Dialogfeld, das Sie mit dem Menübefehl „Bearbeiten/Suchen“
erhalten.
Es empfiehlt sich, vor der Ausführung dieser Aktion zuerst mit
der Aktion „GeheZuSteuerelement“ zu dem Steuerelement
zu wechseln, in dem gesucht werden soll.
Tastaturbefehle Diese Aktion imitiert Tastendrücke des Benutzers. Das be-
nötigen Sie, wenn Sie mit der Aktion „AusführenMenübefehl“
einen Menübefehl starten, der ein Dialogfenster öffnet. Die nö-
36 Access 2.0 für Fortgeschrittene
Aktion Beschreibung
tigen Tasten, die dann gedrückt werden sollen, können Sie vor
dieser „AusführenMenübefehl“-Aktion mit einer „Tastatur-
befehle“-Aktion betätigen lassen.
Welche Abkürzung Sie für die Sondertasten der Tastatur
(Alt, Strg u.a.) verwenden müssen, erfahren Sie in der Online-
Hilfe zum Thema „SendKeys“.
Warnmeldungen Mit dieser Aktion können Sie die Warnungen, die beispiels-
weise das Ausführen einer Aktionsabfrage hervorruft („Diese
Abfrage wird Daten verändern. Fortfahren?“), unterdrücken.
Seien Sie aber vorsichtig mit dieser Aktion und vergessen Sie
nie, am Ende Ihres Makros die Warnmeldungen wieder einzu-
schalten, weil sonst an anderer Stelle, wo Sie es vielleicht gerne
hätten, auch nicht mehr gewarnt würde.
36, daß ein Fragezeichen-Symbol und die beiden Schaltflächen „Ja“ und „Nein“ ange-
zeigt werden. Das dritte Argument ist die Überschrift, die das Meldungsfenster erhal-
ten soll. Standardmäßig steht da „Microsoft Access“.
Das wirklich interessante an der Funktion Meldung ist, daß sie einen Wert zurück-
liefert, der angibt, welche Schaltfläche der Benutzer bedient hat. 7 bedeutet „Nein“
(Näheres wieder in der Online-Hilfe), so daß die Bedingung übersetzt lautet: Wenn der
Benutzer in dem Meldungsfenster, das so und so aussieht und den Text sowieso ent-
hält, die Schaltfläche „Nein“ betätigt hat, dann führe die Aktion dieser Zeile aus.
Das Makro wird immer dann aufgerufen, wenn der Benutzer einen Datensatz aus dem
Unterformular löschen, also einen irrtümlich aufgenommenen Ausleihvorgang rück-
gängig machen will. Es ist also an das Ereignis „Beim Löschen“ geknüpft (dazu später
mehr). Wenn nun der Benutzer einen Datensatz löschen möchte und damit das Makro
startet, überprüft Access zuerst die Bedingung und öffnet dazu das Meldungsfen-
ster. Wenn der Benutzer nicht löschen möchte, also nur irrtümlich auf die Entf-Taste
geraten ist, wird der gesamte Vorgang mit AbbrechenEreignis und StopAlleMakros
abgebrochen.
Hier zeigt sich der Vorteil der drei Punkte in der Bedingungsspalte: Wenn die Be-
dingung von der vorhergehenden Zeile kopiert worden wäre, würde das Meldungsfen-
ster ein zweites Mal erscheinen, bevor die Aktion „StopAlleMakros“ ausgeführt wür-
de.
6. Programmflußkontrolle
Mit den Makros haben Sie jetzt schon das Grundhandwerkszeug zur Kontrolle des
Programmflusses in der Hand. Wie Sie vielleicht schon gemerkt haben, macht Access
einiges selber (worüber Sie natürlich froh sein können), so daß eine komplette Kon-
trolle des Flusses nur im engen Zusammenspiel mit den „Eigenaktivitäten“ von Access
möglich ist.
Programmflußkontrolle bedeutet in diesem Zusammenhang, daß Sie „alles in der Hand
haben“, also über jede Benutzeraktion wachen, so daß der Benutzer nicht in irgend-
welche falschen Systemzustände gelangen kann, die ihn nichts angehen. Im Regelfall
muß z.B. mit allen Mitteln verhindert werden, daß ein Benutzer im Entwurfsmodus
eines Formulars landet. Dann bräuchte er nämlich einen Access-Kurs, um dort wieder
herauszukommen und es wäre ein sehr großer Zufall, wenn er auf dem Weg nichts zer-
stören würde. Genauso sollten dem Benutzer keine Befehle im Weg stehen, die er
nicht ausführen kann oder soll; auch das Datenbankfenster darf den durchschnittlichen
Benutzer einer Datenbankanwendung nicht interessieren (müssen).
Vollständige Sicherheit Ihrer Datenbankanwendung ist ebensowenig möglich wie bei
einem Aktenschrank, denn man mit der Brechstange auch aufwuchten kann. Sie kön-
nen hier aber lernen, wie Sie durchschnittlichen Access-Benutzern die Zugriffsmög-
lichkeiten wenigstens so stark einschränken, daß sie nicht aus Versehen alles zerstören.
Größtmögliche Sicherheit erhalten Sie erst, wenn Sie die Benutzerverwaltung von Ac-
cess voll ausnutzen (siehe dazu Abschnitt 7, „Benutzerverwaltung“ auf Seite 60); das
ist aber nicht mehr Teil der Programmflußkontrolle.
Natürlich können Sie auch hier Bedingungen verwenden. Falls Sie z.B. mit verschie-
denen Benutzerkennungen die Sicherheit Ihrer Datenbank kontrollieren, können Sie
z.B. das Ausblenden des Datenbankfensters beim Administrator vermeiden, indem Sie
vor diese Aktion die Bedingung Nicht Benutzer()="Admin" setzen, oder Sie
können verschiedenen Benutzern auf die gleiche Art und Weise je nach Aufgabenge-
biet verschiedene Hauptmenüformulare öffnen.
Geheimtip: Wenn Sie das Makro „AutoExec“ umgehen möchten, müssen Sie Access ohne Ihre Anwendung starten, dann den Befehl
„Datei/Datenbank öffnen“ ausführen, Ihre Datenbank auswählen, und beim Klick auf die Schaltfläche „OK“ die linke Shift-Taste ge-
drückt halten... Psssssst.
In Access 7.0 ist für diesen Zweck der sog. Start-Assistent hinzugekommen, der die-
se und andere übliche Start-Aktionen (Einblenden eines Infomationsfensters u.ä.) auf
sehr einfache Weise ohne die Erstellung eines AutoExec-Makros ermöglicht.
6.3. Ereignisse
Jetzt haben Sie also bereits etwas sichereren Boden unter den Füßen, weil jetzt nur
noch ein Formular von Ihnen geöffnet ist, in dem Sie bestimmen, was getan wird. Nun
wird es Zeit, die ominösen „Ereignisse“, von denen schon so oft die Rede war, genauer
zu betrachten:
Es wurde bereits darauf hingewiesen, daß die meisten Benutzeraktionen sich in sog.
„Ereignissen“ niederschlagen bzw. „Ereignisse“ auslösen. Für Formulare, Berichte und
Steuerelemente gibt es ganze Berge von verschiedenen Ereignissen, die eintreten,
wenn der Benutzer bestimmte Dinge getan hat. Jedes Ereignis ist genau einem For-
mular, Bericht oder Steuerelement zugeordnet und tritt nur in diesem ein; wenn al-
so in einem Steuerelement in einem Formular ein Mausklick ausgeführt wird, wird das
Ereignis „Beim Klicken“ nur in diesem Steuerelement ausgelöst, nicht etwa in dem
Formular, in dem ja eigentlich auch geklickt wurde.
Auf ein Ereignis können Sie reagieren, indem Sie in die entsprechende Ereigniseigen-
schaft des Steuerelementes, Formulars oder Berichts eintragen, was Access tun soll,
wenn dieses Ereignis eintritt. Dazu gibt es drei Möglichkeiten, von denen in diesem
Kurs zwei besprochen werden:
1. Ein Makro aufrufen. Das ist die übersichtlichste Möglichkeit, um auf ein
Ereignis zu reagieren: Dazu tragen Sie einfach in die entsprechende Ereig-
niseigenschaft den Namen des Makros ein, das aufgerufen werden soll.
Das Makro wird dann ausgeführt, wenn das Ereignis eintritt.
2. Ereignisprozeduren: Wenn Sie z.B. mit dem Steuerelementassistenten
eine Befehlsschaltfläche einfügen, die ein Formular mit einem bestimmten
Datensatz öffnet, erstellt der Assistent dafür leider kein Makro mit der
Aktion „ÖffnenFormular“ (was Sie natürlich von Hand am einfachsten tun
würden), sondern er schreibt eine Funktion in Access BASIC, die dasselbe
tut. Diese Funktion wird direkt dem Steuerelement in diesem Formular zu-
geordnet (Code behind Form) und ist anderweitig nicht verfügbar.
In diesem Kurs kann zwar nicht auch noch eine Einführung in die Pro-
grammierung von Access BASIC gegeben werden, aber den Code, den die
42 Access 2.0 für Fortgeschrittene
6.3.1.1. Formularereignisse
Die folgenden Ereignisse treten immer für das ganze Formular ein:
Ereignis Beschreibung
tensatzes verhindern. In Reaktionen auf dieses Ereignis dürfen
Sie keine Werte des Datensatzes ändern, weil er noch nicht
gespeichert ist.
Nach Aktualisierung Tritt ein, nachdem der Benutzer einen veränderten Daten-
satz gespeichert hat, aber bevor er in einen neuen Datensatz
wechselt. Hier dürfen Sie wieder Werte im Datensatz ändern
und können dann erneut speichern, um z.B. bestimmte Kor-
rekturen automatisch vornehmen zu lassen.
Beim Löschen Tritt ein, wenn der Benutzer einen Datensatz löschen möchte,
bevor er tatsächlich gelöscht wird. Mit „AbbrechenEreignis“
können Sie den Löschvorgang verhindern, z.B. nach einer ei-
genen Sicherheitsabfrage (vgl. Abschnitt 5.4, Bedingungen in
Makros, auf Seite 42)
Vor Löschbestätigung Tritt ein, bevor die Meldung „Sie haben gerade x Daten-
sätze gelöscht...“ erscheint. Mit einer besonderen Ereig-
nisprozedur kann diese Meldung unterdrückt werden, wenn
Sie eine eigene Sicherheitsabfrage durchführen möchten (siehe
dazu den Abschnitt 6.3.3, „Ereignisprozeduren“ auf Seite 52).
Übrigens sollten Sie das immer tun, wenn Sie beim Löschen
bestimmte Dinge aktualisieren möchten, weil Sie leider kein
Ereignis bekommen, wenn der Benutzer das Löschen rück-
gängig macht und der Datensatz wiederhergestellt wird.
Beim Öffnen Tritt ein, wenn das Formular geöffnet wird. Falls Sie beson-
dere berechnete Felder verwenden, können Sie sie hier beim
Öffnen eines Formulars aktualisieren lassen.
Beim Schließen Tritt ein, wenn der Benutzer das Formular schließt. Sie kön-
nen damit z.B. automatisch das Hauptmenü-Formular wieder
öffnen lassen, oder beim Schließen des Hauptmenüformulars
nach einer Sicherheitsabfrage Access selbst beenden.
Bei Fehler Tritt ein, wenn in Access ein Datenbankfehler auftritt, wenn
z.B. Regeln der referentiellen Integrität verletzt wurden etc.
Auf dieses Ereignis sollten Sie nur mit einer Ereignisproze-
dur reagieren, weil diese automatisch den Fehlercode überge-
ben bekommt, aus dem Sie sehen können, welcher Fehler auf-
getreten ist, und so dem Benutzer eine verständlichere Feh-
lermeldung präsentieren können. Außerdem können Sie mit
einem kleinen Kniff wie bei „Vor Löschbestätigung“ die Feh-
lermeldung unterdrücken.
44 Access 2.0 für Fortgeschrittene
6.3.1.2. Berichtsereignisse
Das war ein Überblick über die wichtigsten Formularereignisse. Die Berichtsereignisse
werden hier nicht extra aufgeführt, weil sie alle bereits bei den Formularereignissen
erwähnt wurden.
Das einzige interessante Ereignis in Berichten findet sich in den Eigenschaften der Be-
richts-Bereiche: Beim Formatieren. Es wird ausgelöst, wenn ein Berichtsbereich zu-
sammengestellt wird, sei es für den Ausdruck oder für die Bildschirmdarstellung. Das
ist die letzte Gelegenheit, bestimmte Felder anhand bestimmter Bedingungen ein- oder
auszublenden (indem per Makro mit der SetzenWert-Aktion die Eigenschaft Steuere-
lementname.Sichtbar auf Ja oder Nein gesetzt wird).
6.3.1.3. Steuerelementereignisse
Die folgenden Ereignisse treten in einzelnen Steuerelementen ein, betreffen also ledig-
lich die Vorgänge in diesem Steuerelement und nicht im ganzen Formular (in Berichten
werden Steuerelementereignisse fast nie benötigt).
Ereignis Beschreibung
der Benutzer einträgt, übergibt, und Sie die Fehlermeldung
unterdrücken können), können Sie beispielsweise den vom
Benutzer neu eingegebenen Wert mit in die Liste aufnehmen
etc. Näheres dazu in der Online-Hilfe.
Mit diesen wenigen Ereignissen kommen Sie eigentlich schon überall hin, wo Sie wol-
len. Die anderen sind wirklich nur für wenige Spezialfälle vorhanden; mir sind sie zum
größten Teil noch nie in der Praxis unter die Augen gekommen.
6.3.3. Ereignisprozeduren
Ich hatte Sie bereits gewarnt, daß Sie sich ein bißchen noch in Ereignisprozeduren ein-
arbeiten müssen, weil bestimmte Dinge damit erst möglich werden. Access BASIC ist
ein „ganz normaler“ BASIC-Dialekt, und alle, die einmal BASIC irgendwo gelernt ha-
ben, werden sich schnell zurechtfinden. Andere müssen sich erst einmal ein bißchen in
Programmierung allgemein eindenken.
46 Access 2.0 für Fortgeschrittene
Eine Ereignisprozedur ist, wie schon gesagt, eine BASIC-Prozedur (also eine geord-
nete Ansammlung von BASIC-Funktionsaufrufen), die direkt mit dem Formular und
dem entsprechenden Ereignis verbunden ist. Sie können diese Prozedur nicht von ei-
nem anderen Formular aus aufrufen, sondern sie nur kopieren, was bei späteren Ände-
rungen sehr lästig ist, weil Sie die ja dann wieder kopieren müssen.
Aber der große Vorteil (neben der erhöhten Geschwindigkeit) gegenüber Makros ist,
daß Sie in bestimmten Ereignisprozeduren Parameter übergeben bekommen, die Sie
selbst auslesen oder auch verändern können, z.B. um eine folgende Fehlermeldung zu
unterdrücken.
Das beste Beispiel dafür ist die Ereignisprozedur für das Ereignis „Vor Löschbestäti-
gung“. Die können Sie sehen, wenn Sie (bei bisher leerer Eigenschaft) im Eigenschaf-
tenfenster zum Formular „Ausleihen_U“ die Schaltfläche mit den drei Punkten neben
der Eigenschaft „Vor Löschbestätigung“ betätigen. In einer kleinen Auswahlbox kön-
nen Sie dann festlegen, ob Sie in den Ausdrucks-Editor (um eigene BASIC-Funktio-
nen aufzurufen), in den Makro-Editor (um ein Makro für dieses Ereignis zu erstellen)
oder in den Code-Editor (für die entsprechende Ereignis-Eigenschaft) möchten. Wäh-
len Sie also den Code-Editor aus.
Sie sehen vor sich folgenden Text:
Sub Form_BeforeDelConfirm (Cancel As Integer, Response As
Integer)
End Sub
Sie sind nun schon mitten in Access-BASIC gelandet. Die erste Zeile bedeutet, daß Sie
eine neue Sub-Prozedur (ein Unterprogramm) erzeugt haben, die den klangvollen Na-
men „Form_BeforeDelConfirm“ trägt. Dieser Name wird von Access automatisch ver-
geben, und zwar steht vor dem Unterstrich (_) der Name des Steuerelements im For-
mular, dem diese Prozedur zugeordnet ist (hier das Formular selbst, also „Form“), und
danach der englische Name für das Ereignis, dessen Prozedur Sie gerade bearbeiten
(Vor Löschbestätigung = BeforeDelConfirm). Die wundersamen Worte in Klammern
sagen Ihnen, daß die Ereignisprozedur zwei Parameter übergeben bekommt (mit de-
nen Sie dann rechnen können), einen mit dem Namen „Cancel“ (vom Datentyp
„Integer“, also Ganzzahl), und einen mit dem Namen „Response“ (vom gleichen Da-
tentyp). Mit der Zeile „End Sub“ ist das Unterprogramm schon zu Ende, es passiert al-
so im Moment noch gar nichts.
Aus der Online-Hilfe zu dieser Ereignisprozedur erfährt man, daß man beide Para-
meter selbst verändern kann, und Access sich dementsprechend verhält: Wenn Sie die
Variable „Cancel“ auf „True“ (wahr, bzw. „Ja“) setzen, bewirkt dies das gleiche, wie
wenn der Benutzer auf die Löschbestätigung mit „Abbrechen“ geantwortet hätte;
der Löschvorgang wird also abgebrochen. Falls Sie „Cancel“ in Ruhe lassen (es ist ur-
sprünglich auf „False“=falsch bzw. „Nein“), können Sie mit der Variablen „Response“
entweder so tun, als hätte der Benutzer „OK“ geklickt (indem Sie sie auf DA-
TA_ERRCONTINUE setzen; keiner muß verstehen, warum das gerade so heißt), oder
6. Programmflußkontrolle 47
alles sein lassen und die Warnmeldung anzeigen, als wäre nichts gewesen (indem Sie
sie auf DATA_ERRDISPLAY setzen).
Im Beispiel möchten Sie ja gerade, daß das Löschen normal durchgeführt wird, ohne
daß noch einmal nachgefragt wird (die Sicherheitsabfrage haben Sie ja schon im Ma-
kro beim Ereignis „Beim Löschen“ erledigt): Wenn der Benutzer bereits in der Sicher-
heitsabfrage im Makro den Datensatz löschen wollte, muß er nicht noch einmal gefragt
werden. Also setzen Sie Response auf DATA_ERRCONTINUE und lassen Cancel
unverändert, so daß Ihre Ereignisprozedur so aussieht:
Sub Form_BeforeDelConfirm (Cancel As Integer, Response As
Integer)
Response = DATA_ERRCONTINUE
End Sub
Das war’s auch schon, was ich zu Ereignisprozeduren zu sagen hatte (der Rest ist für
Spezialisten in der Online-Hilfe zu den entsprechenden Ereignissen erklärt).
Wenn Sie aus diesem kryptischen Chaos entfliehen möchten, gelingt Ihnen das, indem
Sie das Codefenster einfach schließen.
wieder, der fast aussieht wie in Abbildung 23, nur daß noch keine Menübefehle einge-
tragen sind.
In den oberen vier Feldern des Menü-Editors können Sie jeweils die Details des Me-
nübefehls sehen, der gerade ausgewählt ist. Die vielen &-Zeichen sollten Sie noch aus
dem Abschnitt 4.3.4, Bezeichnungsfelder, auf Seite 27 kennen; sie dienen auch hier
dazu, den Menüpunkt mit der Tastenkombination Alt+<unterstrichener Buchstabe> er-
reichbar zu machen.
Die Menüpunkte am linken Rand des unteren Fensters sind die Menünamen, die
oben in der Menüzeile auftauchen werden: Datei, Stammdaten und Ausleihen. Einge-
rückt (mit der Schaltfläche mit dem Pfeil nach rechts) sehen Sie unter jedem Menüna-
men die Liste der Befehle, die in diesem Menü verfügbar sind, wobei der besondere
Befehl „-“ bedeutet, daß Access zwischen „Information“ und „Beenden“ eine Trenn-
linie einfügt, wie Sie sie aus allen Windows-Standard-Anwendungen kennen.
Bitte halten Sie sich auch hier an den Windows-Standard, der vorgibt, daß der erste
Menüpunkt der Menüleiste „Datei“ heißt, und ein Feld „Beenden“ enthält, mit dem Sie
die Anwendung verlassen oder wenigstens das aktuelle Fenster schließen können.
Wenn Sie den ersten Menübefehl eintragen und in alter Gewohnheit in das Feld
„Aktion“ z.B. „Meldung“ eintragen möchten, um eine Informationsmeldung über die
Datenbankanwendung anzuzeigen, werden sie die Grenze bemerken, von der ich ge-
sprochen habe: Sie können aus unerfindlichen Gründen im Menü-Editor nur die drei
Aktionen „AusführenMenübefehl“, „AusführenCode“ (zum Ausführen eigener Ac-
cess-BASIC-Funktionen) und „AusführenMakro“ verwenden. Das ist ziemlich lästig,
6. Programmflußkontrolle 49
weil Sie für jeden kleinen Menübefehl ein eigenes Makro schreiben müßten, das Sie
dann per „AusführenMakro“-Aktion starten würden.
Meine bevorzugte Arbeitsweise ist es, mit dem Menü-Editor zunächst die Menü-
struktur der Anwendung zu erstellen, wobei ich wie in Abbildung 23 das Argument
von „AusführenMakro“ freilasse, dann den Menüeditor beende, wobei der Editor dann
verschiedene Makrogruppen erzeugt (im obigen Beispiel wäre das „Hauptmenüleiste",
„Hauptmenüleiste_Datei“, „Hauptmenüleiste_Stammdaten“ und „Hauptmenülei-
ste_Ausleihen“), und dann die Aktionen in den entsprechenden Makrogruppen verän-
dere: Der Name eines Makros innerhalb einer Makrogruppe steht für den Namen des
Menübefehls, und darunter dürfen ohne weiteres auch mehrere Befehle am Stück ste-
hen.
Im Beispiel habe ich die Makrogruppe „Hauptmenüleiste_Datei“ so verändert, daß im
Makro „&Information“ statt der leeren AusführenMakro-Aktion die Aktion
„Meldung“ stand, die eine Meldung über Autor und Zweck der Datenbankanwen-
dung ausgibt, sowie unter dem Makronamen „&Beenden“ die Aktion „Beenden“, die
Access verläßt. Außerdem habe ich in der Makrogruppe „Hauptmenüleiste_Stammda-
ten“ in alle Makros statt der leeren AusführenMakro-Aktionen die passenden „Öff-
nenFormular“-Aktionen eingetragen.
Dafür muß ich allerdings den Preis zahlen, daß ich die Menüstruktur dieser Menüleiste
nicht mehr mit dem Menü-Editor nachbearbeiten kann, sondern das von Hand in den
entsprechenden Makros erledigen muß.
Wenn Sie übrigens Untermenüs verwenden möchten, rücken Sie einen Menüpunkt
einfach mit der Pfeil-nach-rechts-Schaltfläche noch eine Stufe tiefer ein.
Auf diese Art können Sie für alle anderen Formulare Menüleisten erstellen. Bei den
Eingabeformularen nehmen Sie als Ausgangsmenüleiste am besten die Menüleiste
„Formular“, damit Sie die Standard-Funktionen im Menü „Bearbeiten“, die Sie sicher
gerne in Ihre Menüleiste übernehmen möchten, schon vorgefertigt vorliegen haben und
nur noch gefährliche Befehle ausblenden. Besonders gefährlich sind:
• aus dem Menü „Datei“ z.B. „Neues Objekt erstellen“, „Add-Ins“, „Makro
ausführen“,
• aus „Ansicht“ praktisch das ganze Menü, vor allem „Optionen“ und
„Symbolleisten“, aber auch „Formularentwurf“ etc.,
• aus „Datensätze“ die Filter-Befehle, wenn Sie Ihren Benutzern nicht zu-
muten möchten, sich in einer Abfrage-Entwurfsansicht für das Filtern von
Daten wiederzufinden, und
• und aus „Fenster“ vor allem „Einblenden“, sonst blendet ein Benutzer
ganz keck das Datenbankfenster, das Sie in AutoExec ausgeblendet haben,
wieder ein.
Außerdem sollten Sie, wenn Sie nicht eine eigene Online-Hilfe zur Verfügung stellen,
das ?-Menü entsprechend anpassen.
50 Access 2.0 für Fortgeschrittene
Das war aber eigentlich schon alles, was Sie zur Erstellung eigener Menüleisten wissen
müssen.
Halt! Eines noch für die Perfektionisten unter Ihnen: Der Benutzer kann noch durch
die Kontextmenüs verwirrt werden, die bei Druck auf die rechte Maustaste erscheinen.
Um das zu vermeiden, muß in allen Formularen die Eigenschaft „Kontextmenü“ auf
„Nein“ gestellt werden, damit diese Menüs nicht mehr angezeigt werden.
„Symbolleisten anpassen“ auf „Ja“ gesetzt ist, sonst dürfen sie keine Symbolleiste ver-
ändern. Dann wählen Sie den Menübefehl „Ansicht/Symbolleisten“, und blenden
erst einmal alle Symbolleisten, die Sie nicht interessieren, aus.
Klicken Sie dann auf die Schaltfläche „Neu“, um eine neue Symbolleiste zu erstellen.
Vergeben Sie der Leiste einen Namen, mit dem Sie später noch etwas anfangen kön-
nen, und dann sehen Sie, daß Access eine neue, kleine, leere Symbolleiste in der Fen-
steransicht darstellt. Wählen Sie nun die Schaltfläche „Anpassen“, und Sie erhalten
eine Dialogbox, in der Sie auf der linken Seite verschiedene Kategorien von Befehlen
sehen, und rechts die dazugehörigen Symbole. Ziehen Sie alle Symbole, die Sie in Ihrer
Symbolleiste sehen möchten, mit der Maus in ihre kleine neue Symbolleiste. Sie kön-
nen auch Zwischenräume zwischen Symbole einfügen, indem Sie ein Symbol der
Leiste ein oder zwei Millimeter nach rechts ziehen (nicht so weit, daß es über den
Rand der Symbolleiste fällt; dann würde Access damit eine neue Symbolleiste anfan-
gen!).
Wichtig sind hier die Kategorien „Alle Makros“ und „Alle Formulare“: Damit kön-
nen Sie Symbole für Ihre selbsterstellten Formulare und Makros erzeugen, damit die
Befehle immer „zur Hand“ sind. Dabei wird Ihnen allerdings auffallen, daß alle For-
mulare das Formular-Symbol von Access bekommen, so daß Sie die einzelnen Sym-
bole nicht voneinander unterscheiden können. Die Abhilfe ist einfach: Klicken Sie
(während Sie noch im Anpassen-Modus sind) mit der rechten Maustaste auf ein sol-
ches Symbol und wählen Sie den Befehl „Schaltfläche aussuchen“ aus dem Kon-
textmenü. Dann erhalten Sie eine Auswahl von allen möglichen Bildern, die Sie ver-
wenden können (die beeinflussen dann nur noch die Optik, nicht mehr das Verhalten
Ihres Symbols). Außerdem können Sie angeben, daß das Symbol statt eines Bildes
Text enthalten soll, so daß Sie beispielsweise den Formularnamen in das Symbol ein-
tragen können.
Wenn Sie so Ihre Wunsch-Symbolleiste zusammengestellt haben, verlassen Sie den
Anpassen-Modus durch Klick auf die OK-Schaltfläche, und denken Sie daran, mit An-
sicht/Optionen den Benutzern das Verändern Ihrer Symbolleisten zu verbieten!
die gleichen Sondercodes wie bei der Aktion „Tastaturbefehle“ verwenden können
(näheres in der Online-Hilfe).
Für Ihren Fall heißt das also: Makroname ist {F11}, und als Aktion können Sie ent-
weder gar nichts oder eine ironische Meldung („Na, na, ... wer wird denn gleich“ oder
ähnliches) eintragen.
Auf diese Art können Sie auch eigene Tastenkürzel definieren, um Arbeitsabläufe zu
beschleunigen. Diese Tastenkürzel gelten dann allerdings für die gesamte Anwen-
dung. Z.B. könnten Sie F11 umdefinieren, so daß es immer das gerade aktive Formu-
lar schließt (wenn es nicht schon das Hauptmenü ist) und zum Hauptmenü zurück-
kehrt.
Das ist für Sie natürlich eine einfache Übung:
Ebenso können Sie auch allein dem Administrator erlauben, das Datenbankfenster
mit F11 zu öffnen, indem Sie für ihn eine Aktion eintragen, die im Datenbankfenster
irgendein Objekt auswählt (und so das Datenbankfenster mit einblendet), und den an-
deren Benutzern eine freche Meldung anzeigen (das funktioniert natürlich nur, wenn
Sie die Access-Benutzerverwaltung aktiviert haben):
Damit sollten Sie die Anwender von vorne bis hinten im Griff haben. Eine absolut si-
chere Methode, wie Sie auch noch das Programmende kontrollieren können, finden
Sie unten im Abschnitt 8.3, „Kontrolle über das Programmende“ auf Seite 67.
7. Benutzerverwaltung 53
7. Benutzerverwaltung
Access bietet Ihnen auch die Möglichkeit, Ihre Daten und vor allem die Formulare,
Berichte etc. vor unberechtigtem Zugriff durch andere Benutzer zu schützen. Dazu
können Sie für jeden Benutzer eigene Benutzerkennungen mit Paßwörtern und ei-
genen Berechtigungen vergeben, so daß jeder Benutzer nur an einen ganz bestimmten
Ausschnitt Ihrer Datenbankanwendung kommt.
Lassen Sie sich zu diesem Thema auch nicht die Online-Hilfe zum Thema „Sichern
Ihrer Datenbank“ entgehen. Sie ist außergewöhnlich ausführlich und enthält noch mehr
Informationen über die optimale Datensicherheit Ihrer Anwendung.
7.1. Grundprinzipien
In Access sieht das folgendermaßen aus: Es werden Benutzerkennungen vergeben.
Jeder Benutzer ist einer oder mehreren Gruppen zugeteilt. Die effektiven Berechtigun-
gen eines Benutzers sind die Summe seiner persönlich eingetragenen Benutzerrechte
und der Berechtigungen, die für die Gruppen, deren Mitglied er ist, eingetragen sind.
Für jedes Objekt (Tabellen, Abfragen, Formulare, Berichte, Makros, Module) können
Sie einzeln bestimmen, welcher Benutzer (oder welche Benutzergruppe) welche
Rechte haben soll. Es gibt die folgenden Rechte:
• Öffnen/Ausführen: Bei Formularen, Berichten, Makros und der gesamten
Datenbank.
• Entwurf lesen: Bei allen Objekten. Gibt an, ob der Benutzer in die Ent-
wurfsansicht wechseln darf.
• Entwurf ändern: Bei allen Objekten. Diese Berechtigung sollten Sie in
aller Regel für sich behalten, bzw. nur denjenigen Personen erlauben, die
selbst die Datenbankanwendung mit programmieren.
• Daten lesen: Die nötigste Berechtigung. Wer die nicht hat, kann nicht mit
Ihrer Anwendung arbeiten.
• Daten aktualisieren: Wer darf Daten einer Tabelle verändern?
• Daten einfügen
• Daten löschen
• Verwalten: Diese Berechtigung erlaubt es, anderen Benutzern Rechte an
bestimmten Objekten zuzuteilen und zu verändern. Dieses Recht sollte
dem Administrator vorbehalten sein.
Wenn Sie jetzt also der Gruppe „Gäste“ das Recht eintragen, Daten der Tabelle
„Bücher“ zu aktualisieren, dann darf jeder einzelne Benutzer, der Mitglied der Gruppe
„Gäste“ ist, diese Daten aktualisieren, unabhängig davon, ob Sie ihm persönlich dieses
Recht erteilt haben oder nicht. Er darf es schon allein deswegen, weil er Mitglied einer
Gruppe ist, die dieses Recht hat.
54 Access 2.0 für Fortgeschrittene
Selbstverständlich können Sie ihm zusätzlich noch das Recht „Daten löschen“ zuteilen,
das die Gruppe nicht hat, dann darf nur er das.
Falls Sie das so handhaben möchten, kommen Sie ohne die Erstellung einer eigenen
Benutzergruppe aus. Falls nicht, könnten Sie eine neue Gruppe erstellen, indem Sie
den Menübefehl „Zugriffsrechte/Gruppen“ auswählen und in der erscheinenden Dia-
logbox die Schaltfläche „Neu“ betätigen.
Ansonsten sind Sie bereit dazu, neue Benutzerkonten einzurichten. Das geschieht
mit dem Menübefehl „Zugriffsrechte/Benutzer“. Es erscheint die Dialogbox aus
Abbildung 24. Um einen neuen Benutzer anzulegen, klicken Sie auf die Schaltfläche
„Neu“. In der folgenden Dialogbox tragen Sie den Namen des Benutzers ein, unter
dem er sich anmelden wird, Außerdem verlangt Access eine persönliche Identifikati-
onskennung (PID), die den Benutzer intern spezifiziert. Diese PID kann 20 Zeichen
lang sein und aus Buchstaben und Zahlen bestehen, wobei Groß- und Kleinschreibung
unterschieden werden. Merken Sie sich Name und PID sehr gut; am besten schreiben
Sie beides auf einen Zettel und verwahren diesen an einem sicheren Ort, weil Sie die
PID exakt brauchen, um ein Benutzerkonto zu rekonstruieren, falls der Benutzer bei-
spielsweise einmal sein Paßwort vergessen hat, oder falls der Benutzer in eine andere
Access-Arbeitsgruppe übernommen werden soll.
Nach Bestätigung dieses Dialogfeldes landen Sie wieder in dem Fenster aus Abbildung
24; dort können Sie jetzt im unteren Teil festlegen, welchen Gruppen bzw. welcher
Gruppe der neue Benutzer angehören soll (Noch einmal: Damit „erbt“ er zwingend alle
Rechte, die für die Gruppe vergeben worden sind).
Mit der Schaltfläche „Löschen“ könnten Sie einen irrtümlich angelegten oder inzwi-
schen überflüssig gewordenen Benutzereintrag wieder löschen.
Ansonsten wiederholt sich die Prozedur zum Eintragen neuer Benutzerkonten solange,
bis Sie alle Mitarbeiter erfaßt haben.
tiges Problem, wenn Sie Ihre Daten wirklich schützen möchten: Jeder beliebige
Mensch mit Zugriff auf Ihren Rechner bzw. Ihr Netzwerk könnte die Datenbankdatei
kopieren und bei sich zuhause installieren, wo er eine eigene system.mda-Datei be-
sitzt, in der er das Paßwort für den Administrator besitzt.
Sie müssen also für wirkliche Sicherheit noch dafür sorgen, daß der Benutzer
„Administrator“ keine Rechte hat, sondern daß statt dessen ein sog. Supervisor-
Equivalent User geschaffen wird, der alle Rechte des Administrators hat (insbesondere
muß er Eigentümer der Objekte sein, dazu mehr in der Online-Hilfe zum Thema
„Eigentümerrechte verändern“), und der als Administrator fungiert, aber eben eine ei-
gene PID hat, die niemand zuhause „nachbauen“ kann. Der Standard-Access-
Administrator darf also keinen Zugang zu den geheimen Daten haben, sonst kann
jeder, der in der Lage ist, die Datenbankdatei zu kopieren und bei sich zuhause Access
zu installieren, die Daten lesen!!
Richten Sie also einen Benutzer ein (nennen Sie ihn ruhig „Verwalter“), der eine ganz
besonders geheime PID bekommt. So sicher, wie Sie diese PID aufbewahren, sind Ihre
Daten! Entziehen Sie dann dem Benutzer „Administrator“ alle Rechte in Ihrer Daten-
bank.
Das gleiche gilt für die Access-Standard-Gruppen „Benutzer“, „Administratoren“
und „Gäste“; diese Gruppen dürfen für bestmögliche Sicherheit ebenfalls keine
Rechte in Ihrer Datenbank haben. Ersetzen Sie also auch diese Gruppen mit dem oben
beschriebenen Verfahren durch eigene mit eigener PID, die ebenfalls besonders geheim
sein muß und entziehen Sie den Original-Gruppen alle Rechte an Ihren Objekten.
Dann hat nur noch jemand, der Zugang zu den PIDs Ihrer selbstdefinierten Benutzer
und Gruppen hat, Zugriff auf Ihre Daten.
Sie sollten damit beginnen, die Gruppenrechte zu vergeben, indem Sie das Options-
feld „Gruppen“ in der Mitte des Dialogfeldes auswählen. Dann können Sie in der Liste
oben links die Gruppe auswählen, für die Sie Berechtigungen vergeben möchten, dann
zuerst den gewünschten Objekttyp und schließlich rechts das Objekt (oder die Objekte,
wenn Sie die Maustaste gedrückt halten), für das Sie Rechte vergeben möchten.
Hierbei bedeutet das besondere Objekt „Neue Tabellen/Abfragen“ (bzw. „Neue
Formulare“ etc.), daß Sie die Rechte für neu zu erstellende Objekte gleich mit verge-
ben, bevor die Objekte erstellt sind; so müssen Sie nicht nach jeder neuen Objekter-
stellung neue Benutzerrechte vergeben.
Wählen Sie dann in der Optionsgruppe „Berechtigungen“ unten rechts die Rechte
einzeln aus, die Sie dem ausgewählten Benutzer bzw. der ausgewählten Gruppe ertei-
len möchten. Wundern Sie sich dabei nicht, wenn Access ein bißchen Eigenaktivität
entfaltet und Rechte aktiviert, die Sie gar nicht ausgewählt haben. Hier handelt es sich
um Rechte, die unabdingbare Voraussetzung für ein von Ihnen ausgewähltes Recht
darstellen (z.B. wird automatisch das Recht „Entwurf lesen“ mit eingetragen, wenn Sie
das Recht „Daten lesen“ aktivieren).
8. Schmankerl in Access
Im folgenden Kapitel sind in loser Reihenfolge kleine Tips aufgeführt, mit denen Sie
Ihre Datenbankanwendung noch professioneller gestalten können, falls Sie Zeit dafür
haben. Sie greifen z.T. in Dinge ein, die Sie bisher noch nicht kennengelernt haben
(zumindest nicht im Kurs), aber das muß ja nicht schaden. Gehen Sie jedenfalls sicher,
daß Sie mit einer Sicherheitskopie Ihrer Datenbankanwendung arbeiten, bevor Sie
Dinge tun, von denen Sie nicht genau wissen, was sie anstellen.
In diese Datei sollten Sie dann einen eigenen Abschnitt einfügen (etwa nach dem
„[options]“-Abschnitt), der folgendermaßen aussieht:
[Run-Time Options]
StartUpScreen=c:\...\bild.bmp
TitleBar=Bibliotheksverwaltung
Damit wird das Bild „c:\...\bild.bmp“ (da müssen Sie natürlich einen Pfadna-
men und einen Dateinamen eintragen, in dem sich Ihr Wunschbild befindet) zu Beginn
der Ausführung von Access statt des Standard-Fensters mit dem Access-Symbol und
dem Programmnamen angezeigt.
Außerdem wird die Titelzeile des Access-Bildschirms (die standardmäßig auf
„Microsoft Access“ lautet) hier auf „Bibliotheksverwaltung“ gesetzt; auch da tragen
Sie natürlich die Überschrift ein, die Sie gerne hätten.
Speichern Sie dann diese Datei mit Ihrem Editor; beim nächsten Start von Access
werden Ihre Voreinstellungen übernommen. Das gilt natürlich nur für die Access-
Installation, deren „msacc20.ini“-Datei Sie verändert haben (i.d.R. wird diese lokal auf
Ihrem PC liegen). Die INI-Dateien der anderen Teilnehmer auf dem Netzwerk sind
davon dann nicht betroffen; dazu müßten Sie dieses Änderungen an allen Arbeitssta-
tionen durchführen. Fragen Sie dazu Ihren Netzwerk-Administrator.
(und damit das Beenden von Access) abgebrochen wird. So wäre schon einmal sicher-
gestellt, daß per Alt+F4 kein unkontrolliertes Programmende geschehen kann.
Speichern Sie dieses Formular unter dem Namen „Unsichtbares Formular“ und sor-
gen Sie dafür, daß dieses Formular immer beim Laden Ihrer Anwendung ausgeblendet
geöffnet wird (im Makro „AutoExec“ mit der Aktion „ÖffnenFormular“, Fenstermo-
dus „Ausgeblendet“).
Der nächste Schritt ist, das Hauptmenü am Geschlossen-Werden zu hindern. Dazu
wird ebenfalls eine Ereignisprozedur an das Ereignis „Bei Entladen“ geknüpft, die das
Schließen immer dann unterbindet, wenn Ihre Schaltzentrale das Beenden verbietet,
das Kontrollkästchen „BeendenErlauben“ also auf „Nein“ steht. Die sieht dann so aus:
Sub Form_Unload (Cancel As Integer)
If Forms![Unsichtbares Formular]!BeendenErlauben=False
Then
Cancel = True
End If
End Sub
Damit ist auch das Schließen des Hauptmenüs unterbunden. Das haben Sie zwar ver-
mutlich sowieso schon z.T. dadurch realisiert, daß Sie dem Hauptmenü-Formular kei-
nen Rahmen gegeben haben, so gibt es wenigstens keinen Systemknopf, mit dem der
Benutzer schließen könnte. Aber der Tastaturbefehl Ctrl+F4 könnte das Formular
noch schließen, was hiermit unterbunden ist.
Bleibt als letztes noch der Menüpunkt „Datei/Beenden“, der in die Menüleiste des
Hauptmenüs gehört. Dessen Makro sollte folgendermaßen aussehen:
Bedingung Aktion
Meldung("Wirklich beenden?"; SetzenWert (Formulare![Unsichtbares Formular]!
36; "Bibliothek") =6 BeendenErlauben, Ja)
... Beenden
Damit wird zuerst wieder eine Sicherheitsabfrage gestartet. Wenn der Benutzer „Nein“
wählt, passiert gar nichts, wenn er „Ja“ wählt, wird Ihre Schaltzentrale auf „Ja“ ge-
setzt, wodurch alle anderen Sicherheitsmechanismen, die Sie gerade installiert werden,
außer Kraft gesetzt werden, und dann wird die Aktion „Beenden“ aufgerufen, die Ac-
cess dann reibungslos verläßt.
Stichwortverzeichnis
(Hauptfundstellen sind jeweils fett gedruckt)
—B— Berichtskopf 28
Eigenschaften 28
Bedingungen Seitenkopf 28
Variable Bedingungen 10 Berichte 18
Verknüpfen (in Makros) 39 Assistenten 18
Beenden von Access 34 Bereiche 28
Befehlsschaltfläche Siehe Steuerelemente Eigenschaften 28
Eigenschaftenfenster 19
Befehlsschaltflächenassistent 24
Entwurfsansicht 18
Beispieldatenbank 2 Ereignisse 42, 44
Abfrage „Ausleihinformationen“ 4 Mit Makro öffnen 34
Abfrage „Ausleihstatistik“ 5 Mit Makro schließen 35
Abfrage „Inventurliste“ 8 Palette 20
Abfrage „Leserinformationen“ 4 Seitenkopf 28
Abfrage „Leserstatistik“ 5 Toolbox 20
Abfrage „Pauschalverlängerung“ 14
Bezeichnungsfeld Siehe Steuerelemente
Abfragen 5
Bericht „Ausleihstatistik“ 5 Beziehungen
Bericht „Mahnungen“ 5 1:n-Beziehung 22
Berichte 5 Alle Datensätze einer Tabelle anzeigen 8
Beziehungen 4 Equi Join 9
Formular „Ausleihen“ 4 Fremdschlüssel 22
Formular „Büchereingabe“ 4 Gleichheitsverknüpfung 9
Formular „Lesereingabe“ 4 Inklusionsverknüpfung 8, 9
Formulare 4 Outer Join 9
Tabelle „Ausleihen“ 4 Pfeilsymbol 9
Tabelle „Bücher“ 3, 4 Verknüpfungseigenschaften 8
Tabelle „Leser“ 3, 4
Tabelle „Lesergruppen“ 3 —D—
Tabellenstruktur 3
Daten
Benutzer (Gruppe) 55
An Tabelle anfügen 15
Benutzer() (Funktion) 41, 53 Archivieren 13
Benutzerkennung 54 Aus Makros verändern 35, 36
Benutzerverwaltung 53 Automatisch ändern 14
Administrator 53, 55, 56 Automatisch löschen 15
Arbeitsgruppe 58 Einzelne Felder löschen 15
Benutzer rekonstruieren 56 Mit Makro suchen 36
Benutzergruppen 55 Numerisch sortieren 17
Benutzerkonten einrichten 54 Datenbank
Berechtigungen 53 Beispieldatenbank 2
Berechtigungen zuweisen 57 Berechtigungen 53
Datenschutz 57 Datenbankanwendungen 2
Grundprinzipien 53 Normalisierung der Tabellen 1
Gruppen anlegen 55 Planung 1
Gruppenberechtigungen 54, 56 Datensätze
Netzwerkinstallation 58 Gruppieren 5, 9
PID 56 Gruppierung 5
system.mda (Datei) 56, 58
Datenschutz 56
Systemdatenbank 56, 58
Im Netzwerk 58
Berechtigungen 53
Datentypen
Bereiche Datum/Zeit 11
Stichwortverzeichnis 65
Text 4, 11 Spaltenbreiten 22
Zahl 11 Standardwert 30, 60
Zähler 3 Statuszeilentext 30
Datum() (Funktion) 7 Steuerelementinhalt 25, 29
Steuerelementname 60
Domäne 26
Vergrößerbar 29, 31
Domänenfunktionen 26, 37 Verkleinerbar 29, 31
DomAnzahl() (Funktion) 26, 37 Eigenschaftenfenster 19
DomMax() (Funktion) 26 Eingabe der Parameterwerte (Fenster) 11
DomMin() (Funktion) 26 Eingabeaufforderung 11
DomMittelwert() (Funktion) 26 Einspaltiges Formular 4
DomSumme() (Funktion) 26 Eltern-Objekt 25
DomWert() (Funktion) 26 Equi Join 9
Ereignis
—E— Ablauf abbrechen 33
Eigenschaften 19 Ereignisprozedur 61
Aktiviert 30 Ereignisprozeduren 42, 44, 45, 46, 61
Andere Eigenschaften 20 Ereignisse 20, 41
Automatisch ergänzen 23 Bei Änderung 45
Beschriftung 27 Bei Entladen 61
Bildlaufleisten 27 Bei Fehler 44
Daten-Eigenschaften 19 Bei Nicht In Liste 45
Datenherkunft 22, 27 Beim Anzeigen 43
Datensatzmarkierer 27 Beim Doppelklicken 45
Eingabeformat 30 Beim Formatieren 44
Ereignis-Eigenschaften 20 Beim Klicken 20, 42, 45
Ereigniseigenschaften 42 Beim Löschen 33, 38, 43, 46
Format 30 Beim Öffnen 44
Gebundene Spalte 22 Beim Schließen 44
Gesperrt 30 Liste 42
Gültigkeitsmeldung 30 Nach Aktualisierung 43, 45
Gültigkeitsregel 30 Nach Eingabe 43
Herkunftstyp 21 Vor Aktualisierung 43, 45, 46
In Reihenfolge 30 Vor Löschbestätigung 43, 46
Kategorien 19
Kontextmenü 50 —F—
Layout-Eigenschaften 19, 20, 27, 31
Mit Max Schaltfläche 28 Feldliste 18, 21
Mit Min Schaltfläche 28 Feldreihenfolge 26
Mit Systemmenüfeld 28 Flußkontrolle 27, 28, 39
Name 29 Beenden der Anwendung 60
Navigationsschaltflächen 28 Eigene Menüleisten 48
Nur Listeneinträge 22 Starten der Anwendung 40
Optionswert 23, 25
Flußkontrolle.Das Makro „Autoexec“ 41
Rahmenart 28
Reihenfolgenposition 27 Format() (Funktion) 16, 18
Seitenfuß 28 Formeln 12, 25, 29, 30, 34, 38, 39
Seitenkopf 28 In Formularfeldern 25
Sichtbar 30, 35, 36 Verweise auf Steuerelemente 25
Spaltenanzahl 22 Werte aus der Datenbank ermitteln 26
66 Access 2.0 für Fortgeschrittene
Formulare 18 Parameterabfragen 10
Assistenten 18, 19 Schlüsselwörter 6
Bereiche 28 Variable Bedingungen 6
Datensatzmarkierer 27, 28 Verknüpfen 6, 7, 10, 15
Dialogfeld 27, 28
Eigenschaften 27 —L—
Eigenschaftenfenster 19
Entwurfsansicht 18 Linienart 20
Ereignisse 42, 43 Listenfeld Siehe Steuerelemente
Feldliste 18, 21 Listenfeldassistent 23
Feldreihenfolge 26, 30
Löschabfrage 15
Fensterrand 28
Einzelne Felder löschen 15
Mit Makro öffnen 34
Mit Makro schließen 35
Navigationsschaltflächen 28 —M—
Palette 20
Makros 15, 20, 22, 31, 39
Rollbalken 27
Aktionen 32
Titelleiste 27
Alternativbedingungen 39
Toolbox 20
Aufruf durch Ereignisse 42, 45
Unterformular 25
Aus Makros ausführen 33, 34
Verstecken 34, 35
Ausführung durch Befehlsschaltfläche 24
Formularfelder AutoExec 41, 50, 51, 61
Formeln 25 Bedingungen 33, 37, 41
Fremdschlüssel 22 Bedingungen übernehmen 38
Funktionen 7 Beispiel 32
Einführung 31
—G— Entwurfsansicht 32
Grundbausteine 31
Gäste (Gruppe) 55 Kommentare 32
Gleichheitsverknüpfung 9 Makrogruppen 32, 46
Makronamen 33
Gruppierung 5
Sicherheitsabfragen zur Steuerung 38
Symbolleiste 33
—H— Tastaturbelegung 52
Testen 34
Haupt-/Unterformular 4
Max (Aggregatfunktion) 9
—I— Meldung (Aktion) 34
Meldung() (Funktion) 38
Inklusionsverknüpfung 8, 9
Menübefehle
Aus einem Makro ausführen 34
—J—
Menüleisten 27, 28, 48
Ja (Schlüsselwort) 9 „Gefährliche“ Befehle 50
Assistent 48
—K— Menüs 34
Kombinationsfeldassistent 23 Mustersuche 6
Kreuztabellenabfrage 15
Kriterien
Stichwortverzeichnis 67
—O— Steuerelemente
Assistent 18, 20, 23
Oder (Schlüsselwort 7 Befehlsschaltfläche 24, 45
Oder (Schlüsselwort) 6 Berechnete Felder 24, 29, 43
Bezeichnungsfeld 23
Optionsfeld Siehe Steuerelemente
Eigenschaften 19, 29
Optionsgruppe Siehe Steuerelemente Eigenschaftenfenster 19
Inhalte berechnen 25 Ereignisse 42, 44
Optionsgruppenassistent 23 Hinzufügen 18, 20
Outer Join 9 Kombinationsfeld 21, 23, 45
Kontrollkästchen 60
—P— Layout 20
Listenfeld 23, 45
Palette 20, 31 Optionsfeld 23, 25
Parameterabfragen 10, 14 Optionsgruppe 4, 23, 25
Eingabeaufforderung 11 Rahmen 20
Rahmen und Linien 20
Paßwort 54
Schriftart etc. 20
Pauschalverlängerung 14 Sperren 30
PID 56 Textfeld 21, 25, 29
Primärschlüssel 3 Verstecken 30, 35, 36, 44
Verweis in Formeln 25
—R— Symbolleisten
Anpassen 51
Rahmenstil 20 Ausblenden 51
Selber definieren 51
—S— Standard 50
Standardsymbolleisten verstecken 50
Schlüsselwörter 6 Symbole ändern 52
< 6 Zwischenräume 51
<= 6
SysCmd (Funktion) 60
<> 6
= 6 system.mda (Datei) 56
> 6, 25 Systemdatenbank 56
>= 6, 37
Englische Varianten 26 —T—
Ja 9
Nein 9 Tabellarische Darstellung 5
Nicht 6 Tabellen
Oder 6, 7 Mit Makro öffnen 34
Und 6, 7 Mit Makro schließen 35
Wie 6, 11
Tabelleneintrag (Kreuztabelle) 17
Zwischen...Und 6, 13
Tabellenerstellungsabfrage 13
Shortcut 24
68 Access 2.0 für Fortgeschrittene
Variable Bedingungen 6, 10