Sie sind auf Seite 1von 73

Thomas Riehm

Referat III A 2
LMU München

Access 2.0
für
Fortgeschrittene

3., überarbeitete Auflage


Februar 1997
© 1997 Thomas Riehm
Thomas.Riehm@Jura.Uni-Muenchen.DE
Inhaltsverzeichnis

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

3. DAS ENTWERFEN VON ABFRAGEN (VERTIEFUNG) 6


3.1. Kriterien in Abfragen...................................................................................... 7
3.1.1. Wiederholung: Schlüsselwörter in Abfragekriterien ................................. 7
3.1.2. Kombination von Kriterien über mehrere Felder ...................................... 8
3.2. Besondere Beziehungen in Abfragen: Die Inventurliste................................... 8
3.2.1. Selektieren aller niemals ausgeliehenen Bücher (Inklusionsverknüpfung).. 9
3.2.2. Selektieren aller zurückgegebenen Bücher ............................................. 11
3.3. Parameterabfragen ....................................................................................... 12
3.4. Berechnete Felder in Abfragen ..................................................................... 14
3.5. Aktionsabfragen........................................................................................... 14
3.5.1. Tabellenerstellungsabfrage..................................................................... 15
3.5.2. Aktualisierungsabfrage .......................................................................... 16
3.5.3. Anfügeabfrage....................................................................................... 17
3.5.4. Löschabfrage......................................................................................... 17
3.6. Kreuztabellenabfragen.................................................................................. 18
3.7. Zusammenfassung........................................................................................ 20

4. VERTIEFUNG: FORMULARE UND BERICHTE 20


4.1. Das Eigenschaftenfenster ............................................................................. 21
4.2. Die Palette ................................................................................................... 23
4.3. Steuerelemente............................................................................................. 23
4.3.1. Textfelder ............................................................................................. 24
4.3.2. Kombinations- und Listenfelder............................................................. 24
4.3.3. Optionsgruppen..................................................................................... 26
4.3.4. Bezeichnungsfelder ............................................................................... 27
II Access 2.0 für Fortgeschrittene

4.3.5. Befehlsschaltflächen ...............................................................................27


4.3.6. Berechnete Felder in Formularen und Berichten .....................................28
4.3.7. Die Domänenfunktionen.........................................................................29
4.3.8. Die Feldreihenfolge................................................................................30
4.4. Die wichtigsten Eigenschaften.......................................................................31
4.4.1. Formulareigenschaften ...........................................................................31
4.4.2. Berichtseigenschaften.............................................................................32
4.4.3. Bereichseigenschaften ............................................................................33
4.4.4. Steuerelementeigenschaften....................................................................33

5. EINFÜHRUNG IN DIE MAKROPROGRAMMIERUNG 36


5.1. Was sind Makros? ........................................................................................36
5.2. Die Makro-Entwurfsansicht ..........................................................................37
5.3. Die wichtigsten Aktionen..............................................................................38
5.4. Bedingungen in Makros ................................................................................42
5.4.1. Überprüfen, ob ein Buch schon ausgeliehen ist .......................................43
5.4.2. Verwenden von Sicherheitsabfragen für Makros.....................................43
5.4.3. Verwenden von Alternativbedingungen ..................................................44

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.1. Ein Wort zu Access 7.0 und Access 97


Mir ist sehr wohl bewußt, daß Access 2.0 nicht mehr die aktuelle Version von Micro-
soft Access ist. Inzwischen sind bereits die Versionen Access 7.0 (bzw. Access 95)
und Access 97 (derzeit noch im Beta-Stadium) auf dem Markt, die in vielen Bereichen
umfassende Neuerungen (umfangreiche Assistenten, wesentlich bessere Unterstützung
der Planungsphase, neuer Felddatentyp „Verweis“ für Fremdschlüssel, Programmier-
sprache Visual Basic statt Access Basic, ...) gebracht haben.
Dennoch wird in diesem Kurs allenfalls am Rande auf die neuen Versionen verwiesen,
weil diese nur für die 32Bit-Betriebssysteme Windows 95 und Windows NT 4.0
verfügbar sind, die an der LMU bisher nur in sehr geringem Umfang eingesetzt wer-
den. Wann der allgemeine Umstieg auf diese Betriebssysteme und damit diese Versio-
nen von Access stattfinden wird, ist derzeit noch nicht absehbar, da der damit verbun-
dene Wartungs- und Schulungsaufwand die aktuellen Kapazitäten des Ref. III A 2 bei
weitem übersteigt.
Das hier vermittelte Wissen zu Access 2.0 ist aber ohne große Schwierigkeiten auch
auf die neuen Versionen übertragbar, da die Grundkonzepte des Programms gleich ge-
blieben sind. Auf gravierende Differenzen zwischen den Versionen wird im Rahmen
des Kurses hingewiesen werden.
2 Access 2.0 für Fortgeschrittene

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.2. Tabellenstruktur der Beispieldatenbank


Die Informationen, die für die beschriebene Aufgabe nötig sind, werden über vier Ta-
bellen verteilt gespeichert. Diese Tabellen wurden im Einsteigerkurs konzipiert und
bis in die dritte Stufe normalisiert. Den Quereinsteigern sei noch einmal angeraten, die-
ses Kapitel im Einsteigerkurs zu wiederholen, da der Grund für das Scheitern einer
Datenbank in mindestens drei Viertel aller Fälle in einem falschen Datenbankentwurf
liegt.
Die Tabellen sind im einzelnen:
1. Leser: In dieser Tabelle werden alle Informationen gespeichert, die die
einzelnen Leser, d.h. die Kunden der Bibliothek, betreffen. Jedem Leser ist
hier eine eindeutige Lesernummer zugewiesen (dabei handelt es sich um
ein „Zähler“-Feld), die als Primärschlüssel der Tabelle dient.
2. Lesergruppen: Um eine statistische Auswertung der Ausleihdaten exem-
plarisch durchzuführen, wurde jeder Leser einer Lesergruppe zugeordnet
(Studenten, Professoren, sonstige Mitarbeiter), damit das Ausleihverhalten
anhand dieser Gruppenzuordnung analysiert werden kann. Primärschlüssel
ist das „Zähler“-Feld „Lesergruppe“.
3. Bücher: Hier sind die Informationen über den Bücherbestand gespeichert.
Als Primärschlüssel dient dabei das Textfeld „Signatur“. Das bedeutet zu-
gleich, daß für jedes einzelne Exemplar eines Buches eine eigene Signatur
vergeben werden muß. Dies würde in einer „echten“ Bibliothek wohl eher
durch die Vergabe von Mediennummern als Primärschlüssel erfolgen, so
daß die Signatur nur noch Ordnungszwecken dient.

Abbildung 1: Die Beziehungen in der Beispieldatenbank


4 Access 2.0 für Fortgeschrittene

4. Ausleihen: Diese Tabelle enthält die einzelnen Ausleihvorgänge, wobei ein


Ausleihvorgang definiert ist durch einen Leser (d.h. die Lesernummer), das
ausgeliehene Buch (d.h. die Signatur) und des Ausleihdatums. Anhand des
einzelnen Ausleihvorgangs kann dann die Verlängerung oder Mahnung
realisiert werden.
Die genauen Felder der Beispieltabellen sowie die Beziehungen zwischen diesen Ta-
bellen ersehen Sie aus Abbildung 1.
Erklärungsbedürftig ist hier lediglich die 1:n-Beziehung zwischen der Tabelle „Bücher“
und „Ausleihen“: Zwar kann ein Buch zu einem bestimmten Zeitpunkt nur einmal aus-
geliehen sein, d.h. es kann ihm nur ein aktueller Datensatz in der Tabelle „Ausleihen“
gegenüberstehen. Jedoch soll mit Hilfe der Datenbank auch eine statistische Auswer-
tung der einzelnen Ausleihvorgänge erfolgen. Hierzu ist es erforderlich, daß auch be-
reits abgeschlossene Ausleihvorgänge noch in der Tabelle „Ausleihen“ gespeichert
bleiben, so daß es durchaus möglich ist, daß einem Datensatz in der Tabelle „Bücher“
im Laufe der Zeit mehrere Datensätze in „Ausleihen“ gegenüberstehen und also eine
1:n-Beziehung erstellt werden mußte.

2.3. Bereits erstellte Objekte


Über die bereits erwähnten Tabellen hinaus wurden auch schon einige Abfragen, For-
mulare und Berichte erstellt, die hier erläutert werden, soweit sie auch im Fortge-
schrittenenkurs noch eine Rolle spielen:

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.

3. Das Entwerfen von Abfragen (Vertiefung)

Im folgenden Kapitel soll noch einmal


vertieft auf das Entwerfen von Abfragen
eingegangen werden; schließlich sind
Abfragen so ziemlich das leistungsfähig-
ste, was Access zu bieten hat. Vorausset-
zung für die Vertiefung ist, daß Sie be-
reits folgendes beherrschen:
• Erstellen von Auswahlabfragen
im Abfrage-Entwurfsbereich durch
Drag’n’Drop aus den Tabellen
bzw. durch Doppelklick,
• Erstellen von Abfragen über
mehrere Tabellen,
• Sortieren der Daten nach einem
oder mehreren Feldern. Abbildung 2: Die Abfrage-Entwurfsansicht
• Zusammenstellen der Daten
zu Gruppierungen, innerhalb derer Sie Aggregatfunktionen, also z.B.
Summen, Mittelwerte oder auch Anzahlen berechnen.
Zur Wiederholung sehen Sie in Abbildung 2 den Entwurf einer kleinen Auswahlabfra-
ge. Darin sollte Ihnen nichts mehr unbekannt vorkommen...
6 Access 2.0 für Fortgeschrittene

3.1. Kriterien in Abfragen


Sie sollten auch bereits in der Lage sein, einfache Kriterien für Abfragen zu bestim-
men, indem Sie sie in die Zeile „Kriterien“ im Abfrageentwurf eintragen.

3.1.1. Wiederholung: Schlüsselwörter in Abfragekriterien


Mögliche Schlüsselwörter für Kriterien sind:
• =xxx: Nimmt alle Werte in die Abfrage auf, die in dem entsprechenden
Feld genau xxx enthalten, wobei xxx entweder eine Zahl oder ein Text (der
muß dann aber in Anführungszeichen stehen!) sein kann.
• <xxx, <=xxx, >xxx, >=xxx, <>xxx: Wählt alle Datensätze
aus, die in dem entsprechenden Feld einen Wert haben, der kleiner als,
kleiner gleich, größer, größer gleich, ungleich xxx ist.
• Zwischen xxx Und yyy: Wählt alle Datensätze aus, die in dem ent-
sprechenden Feld einen Wert haben, der zwischen den angegebenen Gren-
zen liegt (gleichbedeutend mit >=xxx Und >=yyy).
• Wie "xxx": Wählt alle Datensätze aus, die in dem entsprechenden Feld
einen Wert haben, der dem angegebenen Muster xxx entspricht. Beispiel:
Wie "[A-C]*" findet alle Datensätze, deren Wert im aktuellen Feld mit
A, B, oder C anfängt.
Wie Sie solche Muster zusammenstellen können, erfahren Sie am besten in
der Online-Hilfe zum Thema „Platzhalterzeichen“.
• Oder, Und: Dienen zur Verknüpfung von beliebigen der oberen Aus-
drücke, z.B.: Zwischen xxx Und yyy Oder >=zzz. Eventuell
müssen einzelne Ausdrücke eingeklammert werden, um nicht zweideutige
Ergebnisse zu provozieren.
• Nicht: Verneint den folgenden Ausdruck, der sich aus den oberen Mög-
lichkeiten zusammensetzt, z.B. Nicht (Zwischen 1 Und 100
Oder Zwischen 300 Und 350) wählt alle Werte aus, die zwischen
Minus Unendlich und 0, zwischen 101 und 299, und zwischen 351 und
Unendlich liegen.
Sie müssen für die Werte xxx nicht unbedingt feste Werte eintragen. Genausogut
können Sie einen Wert aus dem gleichen Datensatz der Abfrage eintragen, indem Sie
einfach statt des festen Wertes den Feldnamen in eckigen Klammern eintragen, also
z.B. >=[Ausleihdatum] in das Kriterienfeld aufnehmen.
Genauso können Sie auch eingebaute Access-Funktionen wie z.B. Datum() für das
aktuelle Datum verwenden. Eine Liste aller verfügbarer eingebauter Funktionen finden
Sie in der Online-Hilfe unter dem Stichwort „Funktionen: Liste von“.
3. Das Entwerfen von Abfragen (Vertiefung) 7

3.1.2. Kombination von Kriterien über mehrere Felder


Soweit, so gut. Aber Sie werden sicher schon festgestellt haben, daß Sie manchmal
Kriterien definieren möchten, die sich auf mehrere Felder erstrecken. Sie möchten bei-
spielsweise alle Bücher auswählen, die eine der beiden folgenden Bedingungen erfül-
len:
• Das Erscheinungsjahr soll vor 1980 liegen und die Auflage mindestens 2
sein, oder
• Das Erscheinungsjahr soll nach 1990 liegen, dann aber höchstens in erster
Auflage.
Dazu sind in dem Abfrage-
Entwurfsfenster mehrere Zeilen
unter der Zeile „Kriterien“
vorhanden, die mit „oder“ mar-
kiert sind. Alle Bedingungen, die
Sie in der gleichen Zeile eintra-
gen, werden mit „Und“ ver- Abbildung 3: Mehrere Kriterien über mehrere Felder
knüpft, alle, die in verschiedenen
Zeilen stehen, mit „Oder“. Für das Beispiel sieht der untere Bereich des Entwurfsfen-
sters also aus wie in Abbildung 3.

3.2. Besondere Beziehungen in Abfragen: Die Inventurliste


Nehmen Sie einmal an, Sie sollten eine Liste aller Bücher auswählen, die gerade nicht
ausgeliehen sind, etwa um Listen für eine Inventur zu erstellen. Sie können selbstver-
ständlich eine Abfrage erstellen, die aus der Tabelle „Bücher“ die nötigen Informatio-
nen (Signatur, Autor, Titel, Auflage) extrahiert. Aber wie finden Sie heraus, ob das
Buch tatsächlich gerade nicht ausgeliehen ist?
Mit Sicherheit benötigen Sie dafür die Tabelle „Ausleihen“, denn dort sind alle Infor-
mationen über die Ausleihen enthalten. Wenn Sie die Frage nach den nicht ausgeliehe-
nen Büchern noch einmal „datenbanktechnisch umformulieren“, werden Sie merken,
daß es zwei verschiedene Möglichkeiten gibt, wann ein Buch nicht ausgeliehen ist, also
im Regal steht:
• Das Buch ist ein Ladenhüter und wurde noch nicht ein einziges Mal aus-
geliehen. Dann existiert überhaupt kein Datensatz in der Tabelle „Aus-
leihen“ mit der entsprechenden Signatur.
• Das Buch wurde zwar bereits ausgeliehen, aber schon wieder zurückgege-
ben, wobei dies auch mehrfach der Fall gewesen sein kann. Dann existieren
zwar entsprechende Datensätze in der Tabelle „Ausleihen“, aber in allen
diesen Datensätzen ist im Feld „Zurückgegeben“ ein „Ja“ eingetragen.
Sobald ein Datensatz existiert, in dem hier „Nein“ steht, besteht ja ein noch
offener Ausleihvorgang, d.h. das Buch ist momentan beim Leser und nicht
im Regal.
8 Access 2.0 für Fortgeschrittene

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.

3.2.1. Selektieren aller niemals ausgeliehenen Bücher (Inklusionsverknüpfung)


Erstellen Sie nun diese Auswahlabfrage zunächst einmal ohne die Angabe von Krite-
rien und wählen Sie die Aggregatfunktion „Anzahl“ für die Spalte „Ausleihen-ID“ aus,
damit die Anzahl von Ausleihvorgängen pro Buch angezeigt wird. Nun könnte man
meinen, man müßte hier lediglich als „Kriterien“ „0“ oder „Ist Null“ eintragen, um die
Bücher ohne passenden Ausleihvorgang zu selektieren. Doch weit gefehlt!
Sehen Sie sich einmal die Datenblattansicht der (noch kriterienfreien) Auswahlabfrage
an: Access zeigt Ihnen von vornherein nur die Bücher an, für die auch verwandte Da-
tensätze in „Ausleihen“ bestehen. Dies ist bei den meisten Auswahlabfragen auch ein
erwünschtes Verhalten, nur eben nicht hier!
Dieses Verhalten können Sie aber beeinflussen, indem Sie den Typ der Beziehung
zwischen „Bücher“ und „Ausleihen“ für diese eine Abfrage ändern. Wechseln Sie hier-
zu in die Entwurfsansicht der Abfrage und doppelklicken Sie genau auf die Bezie-
hungslinie zwischen den beiden Tabellen. Es erscheint die Dialogbox „Verknüpfungs-
eigenschaften“ (Abbildung 4), in der Sie diesen Beziehungstyp festlegen: Standardmä-
ßig ist hier der Verknüpfungstyp „Gleichheitsverknüpfung“ ausgewählt, d.h. es wer-
den nur die Datensätze angezeigt, bei denen in beiden Tabellen entsprechende Daten-
sätze vorhanden sind.
Wenn Sie hier den Beziehungstyp „Inklusionsverknüpfung“ auswählen, können Sie be-
stimmen, daß aus einer der beiden Tabellen alle Datensätze angezeigt werden, unab-

Abbildung 4: Dialogbox „Verknüpfungseigenschaften“


3. Das Entwerfen von Abfragen (Vertiefung) 9

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.

3.2.2. Selektieren aller zurückgegebenen Bücher


Nun kommt der schwierigere Brocken: Sie benötigen zusätzlich – also in der gleichen
Abfrage – auch noch alle Bücher, für die zwar mindestens ein Datensatz in „Auslei-
hen“ besteht, aber bei allen Datensätzen das Feld „Zurückgegeben“ auf „Ja“ steht oder
– anders formuliert – bei keinem Datensatz in „Zurückgegeben“ „Nein“ steht.
Der Weg, der spontan jedem einfallen würde, wäre einfach das Kriterium „Ja“ im Feld
„Zurückgegeben“. Das geht aber nicht, weil durchaus Bücher existieren können, bei
denen zwar ein Datensatz mit „Ja“ existiert, die also einmal zurückgegeben wurden,
bei denen aber später wieder ein neuer Ausleihvorgang stattfand, bei dem dann wieder
„Nein“ eingetragen wurde.
Deswegen ist wieder eine Aggregatfunktion nötig, um zu ermitteln, ob es überhaupt
einen Datensatz mit „Nein“ gibt oder nicht. Um zu verstehen, welche die richtige
Funktion ist, müssen Sie aber erst wissen, wie Access die Werte „Ja“ und „Nein“ in-
tern verwaltet: Nämlich als Zahlen, wobei „Nein“ durch 0 und „Ja“ durch -1 dargestellt
werden.
So betrachtet suchen Sie also nach allen Datensätzen, bei denen im Feld „Zurückgege-
ben“ nur -1 und niemals 0 steht. Das können Sie nun mit der Aggregatfunktion
„Max“ (Maximum) bestimmen: Wenn der größte Wert einer Gruppe (d.h. aller Aus-
leihdatensätze zu einer Signatur) 0 beträgt, gibt es (mindestens) einen Datensatz, bei
dem hier 0, also „Nein“ steht. Nur dann, wenn der Maximalwert -1 ist, gibt es keinen
solchen Datensatz, und alle Werte sind „Ja“; damit ist die Bedingung erfüllt. Wie Sie
darauf kommen sollen? Die Frage ist schwer zu beantworten. Programmierarbeit er-
fordert eben immer eine gehörige Portion Kreativität und Phantasie...
10 Access 2.0 für Fortgeschrittene

Abbildung 5: Die Abfrage „Inventurliste“

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.

Abbildung 6: Erstellen einer Parameterabfrage

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

und verlangt die Eingabe eines Parameterwertes.

3.4. Berechnete Felder in Abfragen


Sie sind aber nicht nur daran gebunden, in Abfragen die Werte aus bestimmten Daten-
sätzen auszugeben. Sie können auch Werte aus bestimmten Feldern berechnen las-
sen. Zum Beispiel können Sie das Produkt zweier Felder in ein drittes Feld ausgeben
lassen, indem Sie in das gewünschte Feld im Abfrage-Entwurfsbereich zuerst den
Feldnamen des ersten Faktors, dann das Mal-Zeichen (*), und dann den Feldnamen
des zweiten Feldes. In diese Rechnungen können Sie auch konstante Zahlen einfügen.
Um einen Preis, der in einer Tabelle im Feld „Preis“ enthalten ist, immer mit der
Mehrwertsteuer auszugeben, können Sie in ein Feld der Abfrage statt des Feldnamens
einfach [Preis]*1,15 eintragen. Wenn Sie das Feld verlassen, werden Sie fest-
stellen, daß Access vor Ihre Formel den Text „Ausdruck1:“ gestellt hat. Das ist der
Feldname für dieses Feld, den sie natürlich auch selbst eintragen oder verändern kön-
nen.
Achten Sie auch auf die eckigen Klammern bei den Feldnamen! Im Regelfall werden
diese zwar von Access eingetragen, aber bei Feldnamen, die Sonderzeichen wie zum
Beispiel Bindestriche oder Leerzeichen enthalten, trennt Access den Namen in zwei
Bestandteile und sieht einen Bindestrich beispielsweise als Berechnung der Differenz
zweier Teilnamen.
Als Formel können Sie jeden
beliebigen Ausdruck eintra-
gen. Wenn Sie von einem Buch
z.B. wissen möchten, wie viele
Tage es bereits „überfällig“ ist,
wie viele Tage also zwischen
dem eigentlichen Rückgabeter-
min und dem heutigen Tag lie- Abbildung 8: Berechnete Felder in einer Abfrage
gen, sieht die Abfrage aus wie
in Abbildung 8.

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

Zum Ausführen jeder Aktionsabfra-


Aktualisierung Anfügen
ge klicken Sie auf das Symbol mit
Löschen
dem Ausrufezeichen in der Sym- Tabelle erstellen
bolleiste oder wählen Sie die Daten-
blattansicht.
Abbildung 9: Symbole für Aktionsabfragen
3.5.1. Tabellenerstellungsabfrage
Wenn Sie aus den Daten Ihrer Abfrage eine neue Tabelle erstellen möchten, wählen
Sie das Symbol „Tabelle erstellen“ aus der Symbolleiste. Access fragt Sie nach dem
Namen der Tabelle sowie der Datenbank, in der diese Tabelle liegen soll. Sie können
also auch eine Tabelle in einer anderen Datenbank erstellen. Wenn Sie diese Angaben
später einmal ändern möchten, klicken Sie einfach erneut auf das Symbol oder wählen
Sie den Menübefehl „Abfrage/Tabellenerstellung“ in der Abfrage-Entwurfsansicht.
Ein Anwendungsbeispiel hierfür ist die Archivierung alter Datensätze: Wenn Ihre
Datenbank einmal „in die Jahre gekommen ist“ und das Sortieren immer langsamer
wird, weil noch Daten von 1995 mit sortiert werden, sollten Sie alte Datensätze, die
Sie nicht mehr benötigen, in eine andere Archiv-Tabelle auslagern, damit Sie die Ar-
beitsgeschwindigkeit nicht reduzieren. Dafür erstellen Sie erst eine Tabellenerstel-
lungsabfrage für die Archivierung und danach eine Löschabfrage für das Löschen der
alten Daten (siehe unter 3.5.4).
Sollten Sie hier in der Bibliotheksdatenbank alte Ausleihvorgänge archivieren wollen,
erstellen Sie also einfach eine neue Abfrage, die alle Felder aus der Tabelle „Auslei-
hen“ enthält und selektieren Sie nach dem Ausleihdatum („Zwischen 1.1.1995
und 31.12.1995“) und sicherheitshalber nach „Zurückgegeben = Ja“, damit
nicht noch offene Ausleihvorgänge mit gelöscht werden.
Wählen Sie dann das Symbol „Tabellenerstellungsabfrage“, um die Dialogbox aus
Abbildung 10 zu erhalten. Hier geben Sie lediglich den Namen der zu erstellenden
Tabelle (hier: „Ausleihen-Archiv 1995“) ein. Wenn Sie möchten, können Sie diese
Tabelle auch in einer anderen Datenbank erstellen, um Plattenplatz in der Arbeits-
Datenbank zu sparen.
Sobald Sie dann auf das Symbol mit dem Ausrufezeichen in der Symbolleiste klik-
ken, wird die Abfrage ausgeführt, und das Datenblatt, das Sie vorher als Auswahlab-

Abbildung 10: Tabellenerstellungsabfrage


14 Access 2.0 für Fortgeschrittene

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-

Abbildung 11: Die Aktualisierungsabfrage „Pauschalverlängerung“


3. Das Entwerfen von Abfragen (Vertiefung) 15

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

Abbildung 12: Löschen archivierter Daten


Abbildung 13: Der Entwurf einer Kreuztabellenabfrage

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

der entsprechenden Gruppe ausführt (z.B. Summe, Mittelwert oder An-


zahl), da ein Tabelleneintrag immer mehrere Datensätze vereinigt (alle, die
zur entsprechenden Zeile und Spalte gehören). Im Beispiel wurde die An-
zahl der Lesernummern aus der Ausleihen-Tabelle verwendet, um die An-
zahl der Entleihvorgänge zu ermitteln.
• (nicht angezeigt): Dieses Feld taucht in der Abfrage nirgends auf, kann
aber verwendet werden, um Sortierungen oder Kriterien festzulegen
(entspricht der Auswahl „nicht anzeigen“ in Auswahlabfragen).
Im Beispiel wurde mit Hilfe dieses Tricks für die richtige Sortierung der
Monate gesorgt: Wenn nach dem Feld „Monat“ aufsteigend sortiert wür-
de, würden die Monate alphabetisch nach ihrem Namen sortiert (also
April, Februar, ...), nicht nach der Reihenfolge im Jahr. Daher wurde vorne
noch ein Feld „Sortiermonat“ eingefügt, in dem die Monate zusätzlich als
zweistellige Zahl erscheinen (01, 02, 03...) und nach diesem (versteckten)
Feld aufsteigend sortiert.
Die zweistellige Zahl wird übrigens durch den Ausdruck „Sortiermo-
nat: Format([Ausleihdatum]; "mm")“ erzeugt.
Das Ergebnis der Abfrage sehen Sie in Abbildung 14: Die Daten sind so wesentlich
übersichtlicher angeordnet als bei einer einfachen Gruppierungs-Abfrage.
Access stellt zwar für das Erstellen von Kreuztabellenabfragen einen Assistenten zur
Verfügung, der aber voraussetzt, daß Sie bereits eine fertig gruppierte Auswahlabfrage
(bis auf die Aggregatfunktionen) erstellt haben. So ist es auf jeden Fall schneller, wenn
Sie die entsprechenden Einträge von Hand vornehmen.

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

Der nächste „große“ Brocken in Access


sind die Formulare und Berichte, mit de-
nen Sie Daten in ansprechender Form
ein- bzw. ausgeben lassen können. Spe- Abbildung 14: Kreuztabellenabfrage
18 Access 2.0 für Fortgeschrittene

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.

4.1. Das Eigenschaftenfenster


Hoffentlich ist Ihnen im Verlauf Ihrer Arbeit mit Formularen in Access schon einmal
das „Eigenschaftenfenster“ über de Weg gelaufen. Um zu wissen, was es eigentlich
darstellt, muß man ein bißchen darüber Bescheid wissen, wie Access Formulare und
Berichte verwaltet: Access ist ein Entwicklungssystem für objektorientierte Anwen-
dungen. Das klingt ziemlich kompliziert, ist es aber nicht. Es bedeutet lediglich, daß
die einzelnen Formulare und auch die
einzelnen Steuerelemente eines For-
mulars getrennte Objekte sind, die
miteinander nicht viel zu tun haben,
sondern ein richtiges Eigenleben füh-
ren.
Jedes solche Objekt hat bestimmte Ei-
genschaften; am einfachsten ist das
für die Größe, die Position und das
Aussehen (Schriftart etc.) zu verste-
hen. Es gibt jedoch viel mehr, bis zu
60 Eigenschaften pro Steuerelement.
Sie können sich alle davon mit dem
Abbildung 15: Das Eigenschaftenfenster sog. Eigenschaftenfenster anzeigen
lassen (Menü Ansicht/Eigenschaften,
Klick auf das Eigenschaften-Symbol der Symbolleiste im Formular- bzw. Berichts-
entwurf ( ) oder durch Doppelklick auf ein Steuerelement) und sie darin verändern.
Im Eigenschaftenfenster werden immer die Eigenschaften des gerade ausgewählten
4. Vertiefung: Formulare und Berichte 19

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.2. Die Palette


Wenn Sie das Aussehen Ihrer Steuerele-
mente und Ihres Formulars verändern
möchten, bedienen Sie sich dazu am ein-
fachsten der Palette (Abbildung 16), die die
wichtigsten Grundfunktionen für das Lay-
out enthält. Die weiteren Einstellungen wie
Schriftart, -größe und -Stil finden Sie in der
Symbolleiste zum Formularentwurf.
In der Palette können Sie in der ersten Zeile
Abbildung 16: Die Palette
von Symbolen den Rahmenstil (vertieft,
erhöht oder normal) und dessen Dicke und
Linienart (durchgezogen, gestrichelt oder gepunktet) bestimmen. Außerdem können
20 Access 2.0 für Fortgeschrittene

Sie im übrigen Teil die


Farben für Text, Hinter-
grund und Rand einstel- Textfeld
Bezeichnungsfeld
len, wobei die besondere Umschaltfläche
Optionsgruppe
Farbe „Transparent“ be- Optionsfeld Kontrollkästchen
deutet, daß der Rahmen Kombinationsfeld Listenfeld
bzw. der Hintergrund
Diagramm Unterformular
nicht dargestellt werden,
Objekt (ungebunden) Objekt (gebunden)
sondern auf das, was da- Linie Rechteck
hinter steht, durchblicken Seitenumbruch Befehlsschaltfläche
lassen. Für den Hinter-
Assistent Feststellen
grund ist das meistens
empfehlenswert. Abbildung 17: Die Toolbox

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

4.3.2. Kombinations- und Listenfelder


Kombinations- und Listenfelder sind praktisch, wenn dem Benutzer die Eingabe von
Daten erleichtert werden soll. Sie bekommen Ihre Liste aus einer eigenen Daten-
quelle, sind also unabhängig von der Datenherkunft des Formulars. Der Unterschied
zwischen Kombinations- und Listenfeldern besteht darin, daß bei Listenfeldern die Li-
ste ständig angezeigt wird (und Platz verbraucht), bei Kombinationsfeldern hingegen
nur bei Bedarf geöffnet wird.
Für die Datenherkunft der Liste gibt es bei beiden drei Möglichkeiten, die mit der Ei-
genschaft „Herkunftstyp“ (oder durch den Assistenten) eingestellt werden:
• Tabelle/Abfrage (Standard): Die Werte für die Liste werden über eine
Abfrage oder direkt aus einer Tabelle aus der Datenbank ausgelesen. Dies
geschieht einmalig beim Öffnen des Formulars. Änderungen, die Sie vor-
nehmen, während das Formular geöffnet ist, schlagen sich nicht automa-
tisch in der Liste nieder. Das müssen Sie mit der Makro-Aktion
„AktualisierenDaten“ selbst übernehmen. Die Eigenschaft „Datenherkunft“
enthält dann den Namen (oder, wenn Sie das Feld mit einem Assistenten
erstellt haben, den SQL-Code) der Abfrage, die die Daten bereitstellt.
Verwenden Sie diesen Herkunftstyp beispielsweise, um 1:n-Verknüpfun-
gen darzustellen (z.B., um bei den Ausleihen die Buchsignaturen aus einer
Liste auszuwählen, die aus der Büchertabelle stammt; so kann der Benut-
zer keine nicht vorhandenen Bücher eintragen).
• Werteliste: Sie können selbst im Formularentwurf Werte vorgeben, die in
der Liste stehen werden. Diese Werte tragen Sie, durch Strichpunkte ge-
trennt, in die Eigenschaft „Datenherkunft“ ein. Verwenden Sie diese Mög-
lichkeit, um bestimmte, häufig benutzte Werte für ein Steuerelement
leichter erreichbar zu machen (z.B. die häufigsten Städte bei der Kunden-
eingabe).
• Feldliste: Bei dieser Einstellung trägt Access in die Liste die Feldnamen
der Tabelle oder Abfrage ein, die Sie in der Eigenschaft „Datenherkunft“
eingetragen haben. Dafür habe ich noch keine praktische Anwendung ge-
funden.
Am häufigsten wird wohl der Herkunftstyp „Tabelle/Abfrage“ sein, darum lohnt es
sich, darauf noch etwas genauer einzugehen. Sie können ohne weiteres eine mehrspal-
tige Liste darstellen (Eigenschaft „Spaltenanzahl“). Allerdings können Sie in dem ei-
nen Feld des Formulars, das durch das Kombinations- oder Listenfeld dargestellt wird,
nur den Wert aus einer Spalte speichern. Welcher das ist, bestimmen Sie mit der Ei-
genschaft „Gebundene Spalte“.
Um also dem Benutzer im Ausleihen-Formular die Titel der Bücher in der Liste mit
anzuzeigen, aber tatsächlich die Signatur (als Fremdschlüssel in der Ausleihen-Tabelle)
einzutragen, erstellen Sie als Datenherkunft für ein Kombinationsfeld eine Abfrage, die
aus der Büchertabelle die Signaturen und die Titel ausliest, und tragen Sie die Spalte 1
(die mit der Signatur) als gebundene Spalte ein. Falls Sie die Signatur gar nicht sehen
22 Access 2.0 für Fortgeschrittene

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.

4.3.6. Berechnete Felder in Formularen und Berichten


Alle diese Steuerelemente müssen nicht direkt auf einem Feld der Tabelle oder Abfrage
basieren, sondern können auch aus verschiedenen Feldern berechnet werden. Dazu
tragen Sie in die Eigenschaft „Steuerelementinhalt“ des zu berechnenden Steuere-
lements zunächst ein „=“ ein, und dann die Formel für die Berechnung. Möchten Sie
beispielsweise in einem Textfeld eines Formulars den Preis, der im Feld „Stückpreis“
(Eigenschaft „Feldname“ des Formularfeldes oder das entsprechende Feld der Tabelle
oder Abfrage) gespeichert ist, mit 0,15 multiplizieren, um die Mehrwertsteuer anzu-
zeigen, so tragen Sie in die Eigenschaft „Steuerelementinhalt“ des Mehrwertsteuerfel-
des folgendes ein: =[Stückpreis] *0,15.
Sie können dabei sogar auf Werte in anderen Formularen zugreifen, indem Sie den
vollen „Pfad“ zu dem entsprechenden Steuerelement eintragen. Wenn Sie also den
Steuersatz nicht fest vorgeben wollen, sondern in einem anderen Formular
„Allgemeines“, das gerade geöffnet ist, im Feld „Steuersatz“ eingetragen haben, lautet
die Formel =[Stückpreis]*[Formulare]![Allgemeines]![Steuer-
satz].
Hierbei dienen die Ausrufezeichen dazu, den Pfad vom sog. Eltern-Objekt zum
Kind-Objekt anzuzeigen: „Formulare“ ist ein Eltern-Objekt, das als „Kinder“ alle
momentan geöffneten Formulare, also auch das Formular „Allgemeines“ enthält. Das
Formular „Allgemeines“ ist wiederum Eltern-Objekt zum Steuerelement „Steuersatz“,
das in ihm enthalten ist. Zwischen dem Eltern- und dem Kind-Objekt muß immer ein
Ausrufezeichen stehen. Möchten Sie in einer Formel nicht auf den Wert des Steuere-
lements selbst, sondern auf eine Eigenschaft zugreifen (z.B., wenn Sie in einem Text-
feld die Datensatzherkunft des Kombinationsfeldes „Kombi“ anzeigen möchten), müs-
sen Sie zwischen dem Steuerelementnamen und der Eigenschaft einen Punkt als
Trennzeichen verwenden: =[Kombi].[Datensatzherkunft].
Besonders trickreich wird es, wenn Sie auf Werte aus einem Unterformular zugrei-
fen möchten. Ein Unterformular ist für Access im Grunde genommen nichts anderes
als ein gewöhnliches Steuerelement und kein Formular. Wenn Sie also auf ein Feld
„Rückgabedatum“ im Unterformular „Ausleihen_U“ (das muß der Feldname des Un-
terformulars im Hauptformular sein) zugreifen möchten, das im Hauptformular
„Ausleihen“ enthalten ist, so lautet der korrekte Pfad zu diesem Feld [Formula-
re]![Ausleihen]![Ausleihen_U].[Formular]![Rückgabedatum]:
Das Steuerelement „Ausleihen_U“ (vom Typ Unterformular) hat eine Eigenschaft
„Formular“, die das Formular-Objekt dieses Unterformulars enthält und so Eltern-
Objekt zum Steuerelement „Rückgabedatum“ ist. Klingt irre kompliziert, aber wenn
man es einmal abgetippt hat, geht es schon besser.
4. Vertiefung: Formulare und Berichte 25

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.

4.3.7. Die Domänenfunktionen


Eine besondere Art von Formeln, die Sie in berechneten Feldern (in Formularen, Be-
richten und Abfragen) verwenden können, sind die sog. Domänen(aggregat)funktio-
nen. Mit ihrer Hilfe können Sie bei jeder Gelegenheit auf Informationen aus Ihrer Da-
tenbank zugreifen, ohne daß der jeweilige Wert in der aktiven Abfrage oder im aktiven
Formulars enthalten ist. Unter einer Domäne ist dabei entweder eine Tabelle oder ei-
ne Abfrage zu verstehen.
Diese Domänenfunktionen sind:
• DomWert("Feldname/Formel"; "Domäne"[; "Kriterien"]): Ermittelt
einen einzelnen Wert aus einer Domäne (oder berechnet ihn, wenn Sie eine
Formel eingeben). Beispiel: DomWert("Lesergruppe"; "Leser";
"[Leser-Nr] = Forms!Ausleihen![Leser-Nr]") ermittelt
die Lesergruppe des Lesers, der gerade im Formular „Ausleihen“ angezeigt
wird.
• DomAnzahl("Feldname/Formel"; "Domäne"[; "Kriterien"]): Be-
stimmt die Anzahl von Datensätzen in der angegebenen Domäne, die die
angegebenen Kriterien erfüllen. Wenn Sie keine Kriterien angeben, wird
die Anzahl aller Datensätze in der Domäne bestimmt: DomAn-
zahl("[Ausleihen-ID]"; "Ausleihen") ermittelt die Gesamt-
anzahl aller Ausleihvorgänge aus der Tabelle „Ausleihen“.
• Entsprechend existieren die Funktionen DomMittelwert, DomSumme,
DomMin, DomMax und die übrigen Aggregatfunktionen, die Sie auch
aus den Gruppierungen in Abfragen kennen.
Beispielsweise könnten Sie in das Formular „Lesereingabe“ ein Feld aufnehmen, das
die Gesamtanzahl von Ausleihvorgängen dieses Lesers anzeigt. Als „Steuerelement-
inhalt“ müßten Sie dann folgendes eintragen: DomAnzahl("Ausleihen-ID";
"Ausleihen"; "[Leser-Nr] = Forms!Lesereingabe![Leser-
Nr]").
26 Access 2.0 für Fortgeschrittene

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.3.8. Die Feldreihenfolge


Wenn Sie jetzt in eigene Formulare ein paar Steuerelemente eingefügt haben und in die
Formularansicht gewechselt sind, ist Ihnen vielleicht aufgefallen, daß die Reihenfolge,
in der die Felder mit der Tabulator-Taste angesprungen werden, der chronologischen
Reihenfolge der Felderstellung, nicht aber der Position der Felder im Formular ent-
spricht. Das ist für einen Benutzer enorm verwirrend.
Dem können Sie abhelfen, indem Sie in der Entwurfsansicht des Formulars den Menü-
befehl „Bearbeiten/Feldreihenfolge“ wählen. In der Dialogbox, die erscheint, können
Sie entweder in der Liste aller Feldnamen die Reihenfolge von Hand festlegen, oder
Sie klicken auf die Schaltfläche „Automatisch“, damit Access die Reihenfolge auto-
matisch von links nach rechts und von oben nach unten festlegt. Theoretisch könnten
Sie das auch mit der Eigenschaft „Reihenfolgenposition“ jedes einzelnen Steuerele-
mentes lösen; davon ist aber abzuraten, weil der Zeitaufwand dafür immens wäre.

4.4. Die wichtigsten Eigenschaften


Im folgenden Abschnitt sollen die wichtigsten Eigenschaften von Formularen, Berich-
ten, Formular- und Berichtsbereichen sowie von Steuerelementen aufgelistet und kurz
erklärt werden. Weitere Informationen erhalten Sie, wie immer, in der Online-Hilfe,
indem Sie die fragwürdige Eigenschaft im Eigenschaftenfenster aktivieren, und dann
F1 drücken.
In diesen Listen sind die Eigenschaften in der Reihenfolge ihrer Aufstellung im Eigen-
schaftenfenster mit der Einstellung „Alle Eigenschaften“ aufgelistet, wobei die Ereig-
nis-Eigenschaften erst unten im Abschnitt 6.3.1, „Die wichtigsten Ereignisse“ auf Seite
48 erläutert werden und hier daher fehlen.

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.

Tabelle 1: Die wichtigsten Formulareigenschaften


Eigenschaft Beschreibung
Datenherkunft Enthält die Tabelle, Abfrage oder den SQL-Code, die die
Daten für das Formular zur Verfügung stellen. Sie können
4. Vertiefung: Formulare und Berichte 27

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:

Tabelle 2: Die wichtigsten Berichtseigenschaften


Eigenschaft Beschreibung
Seitenkopf, Seitenfuß Geben an, unter welchen Bedingungen die entsprechenden
28 Access 2.0 für Fortgeschrittene

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:

Tabelle 3: Die wichtigsten Bereichseigenschaften


Eigenschaft Beschreibung
Verkleinerbar, Diese Eigenschaften geben an, ob der Bereich „schrumpft“,
Vergrößerbar wenn keine Daten in ihm angezeigt werden (verkleinerbar)
oder „wächst“, wenn die Daten z.B. eine Textfeldes umbro-
chen werden, so daß eine zusätzliche Zeile erforderlich
wird. Dazu muß die gleiche Eigenschaft des betreffenden „ge-
fährdeten“ Textfeldes ebenfalls auf „Ja“ gestellt werden.

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.

Tabelle 4: Die wichtigsten Steuerelementeigenschaften


Eigenschaft Beschreibung
Name Gibt den Namen des Steuerelements an. Diesen Namen benö-
tigen Sie z.B., wenn Sie mit Hilfe des Inhaltes dieses Steuere-
lementes Berechnungen durchführen möchten.
Vorsicht: Vergeben Sie sicherheitshalber als Steuerelement-
namen nicht „Name“; ein Bericht oder Formular hat nämlich
4. Vertiefung: Formulare und Berichte 29

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.

5. Einführung in die Makroprogrammierung

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

5.1. Was sind Makros?


Makros sind im Prinzip nichts als aneinander gehängte Benutzerbefehle, die Access
automatisch ausführt. Alles, was Sie als geübter Access-Benutzer machen können,
kann auch über ein Makro erledigt werden. Allerdings ist das nicht ganz so einfach wie
z.B. in WinWord, wo Sie ein Makro einfach aufzeichnen können, das dann gespeichert
und wieder abgespielt wird. Vielmehr müssen Sie selbst ein bißchen programmieren.
Die Grundbausteine der Makros, also die einzelnen Befehle, heißen in Access
„Aktionen“. Eine solche Aktion ist z.B. „ÖffnenFormular“. Jeder Aufruf einer Aktion
hat eigene „Parameter“; sie können die Aktion „ÖffnenFormular“ also mit verschie-
denen Formularnamen und Fenstermodi aufrufen.
Makros sind eine Objektkategorie von Access, so wie es Tabellen, Abfragen und For-
mulare auch sind. Sie werden also unter einem bestimmten Namen abgespeichert und
stehen dann im Datenbankfenster in der Kategorie „Makros“.
Für eine größere Datenbankanwendung benötigen Sie ohne weiteres einmal 100 oder
mehr einzelne kleine Makros, die Formulare öffnen, Daten filtern, Fenster schließen,
automatisch Werte anpassen etc. Damit Ihr Datenbankfenster nicht überläuft und Sie
noch ein bißchen den Überblick bewahren können, empfiehlt es sich, thematisch zu-
sammenhängende Makros (z.B. alle, die mit einem Formular verknüpft sind) in einer
sog. „Makrogruppe“ zusammenzufassen, die dann am besten noch den Namen des
zugehörigen Formulars trägt.
Näheres sehen Sie gleich an einem Beispiel.

5.2. Die Makro-Entwurfsansicht


Abbildung 20 zeigt die Entwurfsansicht Ihres ersten Makros. Diese Entwurfsansicht
ähnelt optisch sehr dem Tabellenentwurf (was die Gliederung in drei Bereiche anbe-

Abbildung 20: Die Makro-Entwurfsansicht


32 Access 2.0 für Fortgeschrittene

langt), so daß Ihnen die Orientierung darin leicht fallen sollte.


Die wichtigste Spalte in dieser Entwurfsansicht ist die „Aktionen“-Spalte. Hier kön-
nen Sie nacheinander die Aktionen eintragen, die Access ausführen soll, wenn das Ma-
kro aufgerufen wird. Für die Auswahl der Aktionen steht Ihnen ein Kombinationsfeld
zur Verfügung, so daß Sie sich die Aktionsnamen nicht merken müssen. Die meisten
Namen sind ohnehin selbsterklärend; falls Sie Fragen zu einer bestimmten Aktion ha-
ben, wählen Sie sie im Makroentwurf aus, und drücken Sie F1, um die Online-Hilfe
zu dieser Aktion und ihren Parametern zu sehen.
Im Detailbereich unten links im Bild werden die einzelnen Parameter für die gerade
ausgewählte Aktion angezeigt (im Beispiel die Parameter der Aktion „ÖffnenFormu-
lar“ in der vierten Zeile).
Die Kommentar-Spalte ist ebenfalls sehr wichtig. Die Erfahrung hat gezeigt, daß man
sich spätestens nach einem halben Jahr nicht mehr daran erinnern kann, wofür eine be-
stimmte Makrozeile einmal gut war. Daher sollten Sie Ihre Makros unbedingt aus-
führlich kommentieren.
Die beiden ersten Spalten, „Makroname“ und „Bedingung“, tauchen bei Ihnen
vielleicht gar nicht auf. Sie können Sie über die Symbolleiste mit den Symbolen
„Makronamen“ ( ) bzw. „Bedingungen“ ( ) anzeigen lassen.
„Makronamen“ enthält die Namen von Makros innerhalb einer Makrogruppe.
Wenn Sie ein Makro alleine abspeichern (nicht in einer Makrogruppe), dann benötigen
Sie die Spalte „Makronamen“ nicht, sondern speichern einfach das gesamte Makro
unter diesem einen Namen. Im Beispiel wurde eine Makrogruppe „Lesereingabe“ er-
stellt, die alle Makros enthalten soll, die einmal mit dem Formular „Lesereingabe“ ver-
knüpft werden. Die Namen müssen nicht gleich sein, aber es erleichtert die Orientie-
rung ungemein.
Im Beispiel bestehen also bereits zwei Makros in dieser Makrogruppe: Eines heißt
„Lesereingabe.Schließen“, und eines „Lesereingabe.Ausleihen zeigen“. Das Makro
„Lesereingabe.Schließen“ schließt zuerst das Lesereingabe-Formular und gibt dann ei-
ne Meldung aus; „Lesereingabe.Ausleihen zeigen“ öffnet das Ausleihen-Formular für
den entsprechenden Leser, der gerade im Lesereingabe-Formular aktiv ist.
Außerdem ist die Spalte „Bedingungen“ sehr interessant: Sie können für eine Aktion
bestimmen, daß sie nur dann ausgeführt wird, wenn eine bestimmte Bedingung erfüllt
ist. Dazu kommt aber später mehr im Abschnitt 5.4, Bedingungen in Makros, auf Seite
42.

5.3. Die wichtigsten Aktionen


Hier werden Ihnen kurz die wichtigsten Aktionen, die Sie zum Arbeiten brauchen, mit
ihren Parametern vorgestellt. Falls Sie weitergehende Fragen haben, finden Sie die
Antworten in der Online-Hilfe zum Thema „Aktionen“, wo Sie auch ein komplettes
Aktionsverzeichnis mit allen 47 Aktionen finden. Die vergleichsweise geringe Anzahl
von Aktionen darf nicht darüber hinweg täuschen, daß Sie damit praktisch alle Benut-
5. Einführung in die Makroprogrammierung 33

zereingaben imitieren können. Hier nun eine Auswahl der praktisch am häufigsten ge-
brauchten Aktionen in alphabetischer Reihenfolge:

Tabelle 5: Die wichtigsten Aktionen in Makros


Aktion Beschreibung
AbbrechenEreignis Bricht das Ereignis, von dem aus das Makro gestartet wurde,
ab. Wenn Sie z.B. ein Makro mit der Aktion „AbbrechenEreig-
nis“ von dem Ereignis „Beim Löschen“ eines Formulars aufru-
fen lassen, wird jeder Löschvorgang des Benutzers abgebro-
chen. Sie können diese Aktion auch mit einer Bedingung verse-
hen, die eine Sicherheitsabfrage ausführt („Wollen Sie wirklich
löschen?“) und bei der Antwort „Nein“ den Vorgang abbre-
chen. (keine Parameter)
AusführenMakro Führt ein Access-Makro aus. So können Sie bereits geschriebe-
ne Makros an anderen Stellen „recyclen“. Wichtig ist dies vor
allem, wenn Sie geschachtelte Bedingungen verknüpfen wollen
(s.u.). Einziger wichtiger Parameter: Name des auszuführenden
Makros
AusführenMenü- Führt einen beliebigen Access-Menübefehl aus. Das ist die
befehl vielseitigste Makro-Aktion, weil Sie mit ihr praktisch alle Ac-
cess-Befehle erreichen. Voraussetzung ist aber, daß der Menü-
befehl in der Situation, in der die Aktion ausgeführt wird, tat-
sächlich verfügbar wäre; wäre der Befehl dort deaktiviert
(grau dargestellt), können Sie ihn auch nicht von einem Makro
aus aufrufen. Parameter sind:
• Menüleiste: Access stellt Ihnen bekanntlich überall
verschiedene Menüleisten zur Verfügung (im Ta-
bellenentwurf andere als in der Formularansicht
etc.). Mit diesem Parameter wählen Sie aus, in wel-
cher Menüleiste sich der gewünschte Befehl befin-
det
• Menüname, Befehl, Unterbefehl: Beschreiben,
wo der Befehl in der Menüleiste enthalten ist.
Beenden Beendet Access und damit auch Ihre Anwendung. Diese Akti-
on sollten Sie in Ihrer Anwendung als einzige Möglichkeit zur
Verfügung stellen, um die Anwendung zu schließen, damit un-
bedarfte Benutzer nicht plötzlich vor dem leeren Access-
Fenster sitzen. Zum Beenden finden Sie mehr im Abschnitt 8.3,
„Kontrolle über das Programmende“ auf Seite 67.
Meldung Gibt ein Meldungsfenster aus, das der Benutzer mit Klick auf
34 Access 2.0 für Fortgeschrittene

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.

5.4. Bedingungen in Makros


Bisher haben Sie Makros nur unter allen Umständen ausführen lassen, also unabhän-
gig von irgendwelchen äußeren Umständen. Häufig dürfen bestimmte Aktionen aber
nur unter bestimmten Umständen ausgeführt werden; z.B. soll bei der Auslei-
henerfassung eine Fehlermeldung erscheinen soll, wenn ein gerade ausgeliehenes Buch
ein weiteres Mal ausgeliehen wird. Das Makro hierfür sehen Sie in Abbildung 21.
Diese Abbildung enthält die gesamte Makrogruppe, die zu dem Formular „Auslei-
hen_U“ gehört.

Abbildung 21: Die Makrogruppe „Ausleihen“


5. Einführung in die Makroprogrammierung 37

5.4.1. Überprüfen, ob ein Buch schon ausgeliehen ist


Das erste Makro dieser Gruppe, „CheckBuch“, wird immer dann aufgerufen, wenn der
Benutzer eine neue ausgeliehene Signatur eingetragen hat und das Feld dann verlassen
will (dazu später mehr in Abschnitt 6.3.1, „Die wichtigsten Ereignisse“ auf Seite 48).
Mit mit diesem Makro soll überprüft werden, ob das gerade ausgewählte Buch be-
reits ausgeliehen ist. Wenn das der Fall sein sollte, erscheint eine Fehlermeldung, und
der Ausleihvorgang wird abgebrochen.
Wie Sie sicher noch aus dem Abschnitt 3.2.2 auf Seite 11 wissen, ist ein Buch dann
ausgeliehen, wenn es einen passenden Datensatz in der Tabelle „Ausleihen“ gibt, bei
dem das Feld „Zurückgegeben“ auf „Nein“ steht. Hier können Sie nun Ihr Wissen über
Domänenaggregatfunktionen aus Abschnitt 4.3.7, „Die Domänenfunktionen“ auf
Seite 29 zum Einsatz bringen: Die Bedingung, unter der die Fehlermeldung angezeigt
werden soll, lautet nämlich:
DomAnzahl("[Ausleihen-ID]"; "Ausleihen"; "Ausleihen.Sig-
natur = Forms!Ausleihen!Ausleihen_U.Form!Signatur AND
Ausleihen.[Zurückgegeben] = No") >= 1
Die Bedeutung dieser Bedingung ist nicht auf den ersten Blick zu durchschauen. Die
DomAnzahl-Funktion ermittelt die Anzahl aller Datensätze in der Tabelle „Ausleihen“,
bei denen als Signatur der aktuelle Inhalt des Feldes „Signatur“ im Unterformular
„Ausleihen_U“ des Hauptformulars „Ausleihen“ eingetragen ist und bei denen gleich-
zeitig im Feld „Zurückgegeben“ „Nein“ steht. Wenn diese Anzahl mindestens 1 ist, be-
steht (mindestens) ein offener Ausleihvorgang, andernfalls nicht.
Wenn diese Bedingung zutrifft, wird eine Meldung ausgegeben, die dem Benutzer
mitteilt, daß das Buch bereits verliehen ist. In der nächsten Zeile sehen Sie in der Be-
dingungen-Spalte drei Punkte. Die besagen, daß die Bedingung der Zeile darüber
auch für diese Zeile gelten soll. Alternativ hätte man die gleiche Bedingung noch ein-
mal eintragen können, was aber mehr Tippzeit erfordert hätte.
Mit der Aktion „AbbrechenEreignis“ wird dann die Werteingabe abgebrochen, das
Speichern des Datensatzes also verweigert, und schließlich mit „StopMakro“ die
Ausführung des Makros beendet, ebenfalls noch unter der von der ersten Zeile über-
nommenen Bedingung.

5.4.2. Verwenden von Sicherheitsabfragen für Makros


Wie Sie in der nächsten Zeile von Abbildung 21 sehen, können Sie Bedingungen auch
für Sicherheitsabfragen verwenden. Dazu verwenden Sie die Funktion Meldung
(nicht zu verwechseln mit der Aktion Meldung), die die Windows-Standard-
Meldungsfenster anzeigt. Während die Aktion Meldung nur eine „OK“-Schaltfläche
darstellen kann, ist die Funktion Meldung viel flexibler:
Das erste Argument ist der Text, der in dem Meldungsfenster erscheinen soll. Danach
kommt, durch einen Strichpunkt getrennt, der Typ der Meldung, der sich aus verschie-
denen Detailinformationen zusammenaddiert. Für nähere Informationen steht Ihnen die
Online-Hilfe zur Funktion „Meldung“ gerne zur Verfügung. Im Beispiel bedeutet die
38 Access 2.0 für Fortgeschrittene

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.

5.4.3. Verwenden von Alternativbedingungen


Bisher wurde nur gesagt, wie die Ausführung eines Makros daran geknüpft werden
kann, daß eine bestimmte Bedingung vorliegt, nicht daran, daß sie nicht vorliegt. Das
ist von erheblicher Bedeutung, wenn Sie etwa noch Aktionen vornehmen möchten,
wenn der Benutzer in der von Ihnen angezeigten Sicherheitsabfrage „Ja“ ausgewählt
hat.
Dafür existiert leider kein „Geheimcode“ wie die drei Punkte für die Fortsetzung einer
Bedingung. Im Beispiel von Abbildung 21 wurde das aber durch einen einfachen Trick
realisiert: Wenn die Bedingung der Sicherheitsabfrage eintritt (der Benutzer also
„Nein“ gewählt hat), wird zuletzt die Aktion „StopMakro“ ausgeführt, so daß das
Makro für diesen Fall beendet wird. Tritt die Bedingung aber nicht ein (d.h. es wird
„Ja“ ausgewählt), wird (wegen der drei Punkte) nicht nur der Befehl „AbbrechenEreig-
nis“, sondern auch der Befehl „StopMakro“ nicht ausgeführt, so daß das Makro in die-
sem Fall noch weiter abläuft und die Aktion „SetzenWert“, die sich dahinter befindet,
ausgeführt wird.
Damit ist wohl das wichtigste zu Bedingungen gesagt; Sie können natürlich alle
Schlüsselwörter, die auch bei der Kriteriendefinition verwendet wurden, ebenfalls ver-
wenden, insbesondere mehrere Bedingungen mit „Und“ und „Oder“ verknüpfen.
Alles weitere erfahren Sie in der Online-Hilfe zum Thema „Ausdrücke in Bedingun-
gen“.
6. Programmflußkontrolle 39

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.

6.1. Starten der Anwendung


Die Programmflußkontrolle beginnt bereits mit dem Starten von Access selbst. Wenn
Ihre Benutzer wirklich unbedarft sind, sollten Sie Ihnen im Programm-Manager ein
Icon zur Verfügung stellen, das Access Sofort mit Ihrer Datenbankanwendung
startet, so daß der Benutzer nicht erst ratlos vor dem leeren Access-Bildschirm steht
(in ganz hartnäckigen Fällen können Sie sogar das normale Access-Icon löschen).

Abbildung 22: Installation der Anwendung als eigenes Icon


40 Access 2.0 für Fortgeschrittene

Dazu erstellen Sie im Programm-Manager ein neues Programm-Icon in einer Gruppe


(z.B. in Anwendungen) mit dem Befehl „Datei/Neu“. Als „Beschreibung“ tragen Sie
den Namen Ihrer Anwendung ein, und als „Befehlszeile“ zuerst den kompletten Pfad-
namen zu Access (in der Universitätsverwaltung hoffentlich überall „c:\prog\ac-
cess.20\msaccess.exe“), dann ein Leerzeichen und dann den Namen Ihrer Datenbank
(Sie können der Einfachheit halber auch das bisherige Programm-Icon kopieren und in
das Feld „Befehlszeile“ nur den Namen der Datenbank hinten anfügen sowie die
„Beschreibung“ ändern). Das Arbeitsverzeichnis muß das Verzeichnis sein, in dem Ihre
Datenbank liegt. Wenn Sie möchten, können Sie sogar eine Kurzstart-
Tastenkombination vergeben, die das Programm automatisch startet.
Wenn Sie nicht das Standard-Access-Icon (mit dem Schlüssel und der Tabelle) ver-
wenden möchten, können Sie mit der Schaltfläche „Anderes Symbol“ ein anderes
auswählen. Wenn Sie mit „OK“ bestätigen, ist ein neues Icon entstanden, das automa-
tisch Ihre Anwendung in Access lädt.
Falls Sie auch noch ein anderes Startbild und eine andere Titelzeile des Programmfen-
sters haben möchten, schauen Sie am besten unten in Abschnitt 8.1, „Eigenes „Outfit“
für die Anwendung“ auf Seite 65 nach.

6.2. Das Makro „AutoExec“


So haben Sie die Benutzer schon einmal sicher in Ihre Anwendung geleitet. Doch noch
wird einfach nur das Datenbankfenster geöffnet, und nichts weiter passiert. Hier setzt
jetzt die echte Flußkontrolle ein: Sie können ein Makro schreiben, das automatisch
ausgeführt wird, wenn die Datenbank geöffnet wird. Dieses Makro sollte das Da-
tenbankfenster ausblenden (nicht schließen!), damit die Benutzer damit nicht konfron-
tiert werden, und statt dessen ein komfortables Hauptmenüfenster öffnen, das Sie
selbst als Formular designen können. Der Name dieses Makros ist fest vorgegeben und
lautet „AutoExec“. Wann immer Sie also ein Makro unter diesem Namen speichern,
wird es sofort beim Laden der Anwendung ausgeführt. Seien Sie daher vorsichtig mit
diesem Makro, weil es schwer zu umgehen ist! Ein Fehler dort kann sehr viel Ärger
verursachen.
Für den Anfang genügen dort zwei Aktionen:
1. AusführenMenübefehl (Leiste Datenbank, Menü Fenster, Befehl Ausblen-
den), um das aktuelle Fenster (das Datenbankfenster) auszublenden, und
2. ÖffnenFormular (Formularname: Hauptmenü), um das noch zu designende
Hauptmenü-Formular zu öffnen.
Hier können Sie natürlich noch ganz andere Sachen machen, z.B. eine Liste aller zu
mahnenden Bücher mit ÖffnenAbfrage (Mahnungen) darstellen oder bereits die ferti-
gen Mahnungen ausdrucken mit ÖffnenBericht (Berichtsname Mahnungen, Ansicht
Druck) und mit einer Aktualisierungsabfrage die Ausleihvorgänge als gemahnt markie-
ren.
6. Programmflußkontrolle 41

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

Steuerelementassistenten erstellen, sollten Sie zu verstehen lernen, damit


Sie evtl. auch einmal selbst kleine Änderungen darin vornehmen können.
Außerdem sind Makros ab und zu Grenzen gesetzt, die Sie noch kennen-
lernen werden; dann unumgänglich, auf primitive Ereignisprozeduren zu-
rückzugreifen.
3. Access BASIC Funktionsaufrufe: Sie können auch selbst Access-Basic-
Funktionen erstellen, die Sie dann von Ereignissen aus aufrufen lassen
können. Diese Funktionen haben den Vorteil, daß sie (im Gegensatz zu
Ereignisprozeduren) universell in verschiedenen Formularen und Steuere-
lementen einsetzbar sind. Außerdem sind sie schneller als Makros, und sie
können ihnen Parameter übergeben. Das kann aber in diesem Kurs nicht
mehr erklärt werden.

6.3.1. Die wichtigsten Ereignisse


Hier finden Sie nun eine Liste der wichtigsten Ereignisse für Formulare, Berichte und
Steuerelemente, mit einer kurzen Beschreibung. Für alle anderen erfahren Sie genaue-
res in der Online-Hilfe, indem Sie eine Ereigniseigenschaft im Eigenschaftenfenster
auswählen und F1 drücken. Die Ereigniseigenschaften heißen übrigens immer gleich
wie die Ereignisse, so daß es keine Verwechslungsprobleme gibt.

6.3.1.1. Formularereignisse
Die folgenden Ereignisse treten immer für das ganze Formular ein:

Tabelle 6: Die wichtigsten Formularereignisse


Ereignis Beschreibung
Beim Anzeigen Tritt ein, wenn der Benutzer zu einem anderen Datensatz
wechselt, sowie, wenn das Formular geöffnet wird, also der
erste Datensatz darin angezeigt wird. Falls Sie besondere Be-
rechnungen durchführen, die nicht direkt auf der zugrundelie-
genden Abfrage basieren (z.B. bei Domänenfunktionen), soll-
ten Sie hier die Neuberechnung dieses berechneten Feldes
ausführen.
Nach Eingabe Tritt ein, wenn der Benutzer einen neuen Datensatz hinzu-
gefügt hat und diesen gerade abspeichern will. Wenn Sie in
anderen Tabellen verwandte Datensätze mit einer Anfügeab-
frage anfügen lassen wollen, sollten Sie das hier tun.
Vor Aktualisierung Tritt ein, wenn der Benutzer einen Datensatz verändert hat
und diesen verlassen möchte, bevor dieser Datensatz gespei-
chert wird. Wenn Sie Gültigkeitskontrollen durchführen
möchten, die mehrere Felder eines Datensatzes umspannen,
sollten Sie die hier in einer Makro-Bedingung testen und ge-
gebenenfalls mit „AbbrechenEreignis“ das Speichern des Da-
6. Programmflußkontrolle 43

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

Tabelle 7: Die wichtigsten Steuerelementereignisse


Ereignis Beschreibung
Vor Aktualisierung, Entsprechen den gleichen Ereignissen im Formular, aller-
Nach Aktualisierung dings treten sie bereits dann ein, wenn der Wert des einzel-
nen Steuerelements geändert wird und der Benutzer das
Feld verläßt, nicht erst dann, wenn der Benutzer den geän-
derten Datensatz verläßt.
Bei Änderung Dieses Ereignis tritt mit jedem Tastendruck erneut ein, den
der Benutzer in einem Steuerelement macht. Prädikat: Prak-
tisch wohl unbrauchbar.
Beim Klicken Tritt ein, wenn auf dieses Steuerelement ein Mausklick aus-
geführt wird. Dieses Ereignis ist vor allem bei Befehls-
schaltflächen relevant, weil damit der entsprechende Befehl
ausgeführt werden soll.
Beim Doppelklicken Tritt bei einem Doppelklick auf ein Steuerelement ein.
Verwenden Sie dieses Ereignis am besten bei Listenfeldern,
weil dort nach dem Windows-Standard ein Doppelklick das
gleiche bedeutet wie 1×Klick + Betätigung der Standard-
Schaltfläche des Formulars (z.B. „OK“).
Bei Nicht In Liste Sehr interessantes Ereignis, das nur für Kombinationsfel-
der existiert. Es tritt ein, wenn der Benutzer in das Kombi-
nationsfeld einen Wert eingetragen hat, der nicht in der Liste
des Kombinationsfeldes steht.
Wenn Sie auf dieses Ereignis reagieren (was Sie mit einer
Ereignisprozedur tun sollten, weil Access dort den Text, den
6. Programmflußkontrolle 45

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.2. Ereignisse und Makros


Wie bereits oben gesagt, können Sie durch ein Ereignis ein Makro aufrufen lassen, in-
dem Sie einfach den Makronamen in die Ereigniseigenschaft des gewünschten
Steuerelements eintragen. Falls Sie das Makro im nachhinein verändern möchten, klik-
ken Sie einfach auf die Schaltfläche mit den drei Punkten neben der Ereigniseigen-
schaft im Eigenschaftenfenster, wenn das Makro dort bereits eingetragen ist. Falls Ihr
Makro Teil einer Makrogruppe ist, wird dann nur die Makrogruppe geöffnet, und Sie
müssen selbst zu Ihrem Makro scrollen.
Für das Beispielmakro aus Abbildung 21 tragen Sie einfach in die Eigenschaft „Vor
Aktualisierung“ des Steuerelementes „Signatur“ im Formular „Ausleihen_U“ den Ma-
kronamen „Ausleihen. CheckBuch“ ein (vorausgesetzt, Sie haben die Makrogruppe
unter dem Namen „Ausleihen“ gespeichert) und in die Eigenschaft „Beim Löschen“
des Formulars „Ausleihen_U“ das Makro „Ausleihen.Löschen“. Die Namensähnlich-
keit ist nicht zwingend, sie erleichtert aber die spätere Orientierung in Ihrer Anwen-
dung ungemein.
Wenn Sie die Makros jetzt testen, sehen Sie, daß Sie kein Buch mehr ausleihen kön-
nen, das bereits verliehen ist, und daß ein ausgeliehenes Buch automatisch als „Ausge-
liehen“ vermerkt wird. Außerdem bekommen Sie eine Warnmeldung, wenn Sie einen
Ausleihvorgang löschen möchten.
Wenn es Sinn macht, können Sie ein Makro natürlich bei verschiedenen Steuerele-
menten in verschiedenen Formularen aufrufen lassen. Dafür empfiehlt es sich manch-
mal, eine Makrogruppe „Allgemein“ anzulegen, die alle Makros enthält, die von ver-
schiedenen Formularen aufgerufen wird (z.B. ein Makro zum Schließen eines Formu-
lars mit anschließendem Öffnen des Hauptmenüformulars).

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.

6.4. Benutzerdefinierte Menüleisten


Allerdings ist Ihre Anwendung damit noch längst nicht gegen hartnäckige Benutzer
abgesichert. Sie können sich nämlich sicher vorstellen, daß Ihre Makros umsonst sind,
wenn der Benutzer die Möglichkeit hat und vielleicht auch wahrnimmt, die Daten in
der Tabelle und nicht im Formular zu ändern; dann werden ja die Ereignisse nicht
aktiviert, so daß die Makros auch nicht aufgerufen werden.
Sie müssen also den Benutzer von allen unerwünschten Befehlen fernhalten. Dazu
müssen Sie zuerst eine eigene Menüleiste definieren, so daß die Standard-Access-
Menüleiste mit ihren unendlich vielen Möglichkeiten, etwas kaputt zu machen, nicht
angezeigt wird.
Dazu stellt Access einen praktischen Assistenten zur Verfügung, der allerdings nicht
ganz perfekt ist, so daß ein bißchen Nachbearbeitung nötig sein wird. Aber wenn Sie
wissen, daß in Access benutzerdefinierte Menüleisten auch nichts anderes sind als
Makros mit der besonderen Aktion „HinzufügenMenü“, dann werden Sie vor ei-
ner Nachbearbeitung keine Angst mehr haben.
Starten Sie also zuerst den Assistenten, um eine Menüleiste für das Hauptmenü-
Formular zu erhalten. Dazu muß das Hauptmenü-Formular in der Entwurfsansicht ge-
öffnet sein. Gehen Sie dann zur Eigenschaft „Menüleiste“ und klicken Sie auf die
Schaltfläche mit den drei Punkten. Der Menü-Editor (siehe Abbildung 23) wird ge-
startet und fragt Sie zuerst nach einer Vorlage für Ihre neue Menüleiste. Sie können
nämlich praktischerweise alle Standard-Access-Menüleisten sich vornehmen und Stück
für Stück verändern, also alle unerwünschten Befehle entfernen und ein paar eigene
einfügen.
Für Ihre Hauptmenüleiste lohnt sich das aber nicht, Sie fangen lieber ganz neu damit
an, wählen also „Leere Menüleiste“ und fahren fort. Sie finden sich im Menü-Editor
48 Access 2.0 für Fortgeschrittene

Abbildung 23: Der Menü-Editor

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.

6.5. Arbeiten mit Symbolleisten


Aber noch ist es für den Benutzer ein leichtes, sich Ihrem sicheren Griff zu entziehen:
Ein Klick auf das Entwurfssymbol der Symbolleiste, und er ist da, wo er nicht hin
soll, oder gar ein Klick auf das Symbol für das Datenbankfenster, und es taucht aus
seiner Versenkung wieder auf.

6.5.1. Standardsymbolleisten verstecken


Einzige Abhilfe: Sie müssen die System-Symbolleisten abschalten. Das geht mit dem
Menübefehl „Ansicht/Optionen“: Ein kleines Fenster erscheint, das die verschiede-
nen Kategorien von Programmoptionen von Access verwaltet. In der Kategorie
„Allgemein“ finden Sie die Option „Eingebaute Symbolleisten verfügbar“, die Sie
ganz schnell auf „Nein“ stellen (wenn Sie sicher sind, daß auch Sie ohne diese Sym-
bolleisten auskommen).
Bei der Gelegenheit können Sie dem Benutzer auch gleich verbieten, Symbolleisten
anzupassen (das soll alleine Ihre Aufgabe bleiben), indem Sie die Option „Symbollei-
sten anpassen“ auf „Nein“ setzen. Doch Vorsicht damit in einer Mehrbenutzerumge-
bung: Diese Einstellungen sind für jeden Benutzer verschieden! Wenn Sie absolut si-
chergehen möchten, müssen Sie im AutoExec-Makro (vgl. Abschnitt 6.2 auf Seite
46) diese Option immer ausschalten. Das geht mit zwei aufeinanderfolgenden Aktio-
nen:
Zuerst „Tastaturbefehle“ mit dem Argument „{down 3}n{down 8}n~“ (Warten auf
„Nein“ lassen): Das bewirkt, daß an das nächste zu öffnende Fenster die Tastenkombi-
nation 3×Pfeil nach unten, „n“ (für Nein), dann 8 mal nach unten, wieder nein, und
schließlich Return gesendet wird. Dieses Fenster öffnen Sie sofort im Anschluß an die-
se Aktion mit der Aktion „AusführenMenübefehl“ mit den Parametern Datenbank;
Ansicht; Optionen.
So kann der Benutzer keine Änderungen mehr vornehmen, solange Sie Ihre Menüzei-
len so angelegt haben, daß der Befehl „Ansicht/Optionen“ nirgends mehr aufgerufen
werden kann (das müssen Sie für jedes Formular und für jeden Bericht einzeln ma-
chen).

6.5.2. Benutzerdefinierte Symbolleisten


Jetzt können Sie daran gehen, selbst Symbolleisten für Ihre Anwendung zu entwickeln.
Dazu müssen Sie zuerst dafür sorgen, daß bei „Ansicht/Optionen“ die Option
6. Programmflußkontrolle 51

„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!

6.6. Ändern der Tastaturbelegungen


Soweit haben Sie Ihre Anwendung also schon von allen durchschnittlichen Benutzern
gesichert. Für einen Access-Kenner gibt es aber noch eine Möglichkeit: Durch Druck
auf die Taste F11 kann er jederzeit das Datenbankfenster hervorzaubern, egal, ob es
ausgeblendet oder nur hinter anderen Fenstern verborgen hat. Und wie leicht kommt
ein anderer Benutzer einmal mit der Kaffeetasse auf diese Taste!
Also hilft nur eines: Tasten abfangen! Auch das geht wieder sehr einfach: Dafür gibt es
eine Makrogruppe mit einem festen, vordefinierten Namen: „Tastaturbelegung“
(Diesen Namen können Sie mit „Ansicht/Optionen“ in der Kategorie „Tastatur“ zwar
ändern, es empfiehlt sich aber nicht). In dieser Makrogruppe können Sie als Makro-
namen die Bezeichnung der Taste eintragen, die Sie abfangen möchten, wobei Sie
52 Access 2.0 für Fortgeschrittene

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:

Name Bedingung Aktion


{F11} Nicht Bildschirm.AktivesFormular.Name=„Hauptmenü“ Schließen
... ÖffnenFormular
(Hauptmenü)

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):

Name Bedingung Aktion


{F11} Benutzer()=„Admin“ AuswählenObjekt (Typ: Formular; kein Objektname;
Im Datenbankfenster: Ja)
... StopMakro (Damit der Rest nur für Nicht-Admins
kommt)
Meldung („Na, na... Wer wird denn gleich!“)

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.

7.2. Vergabe von Benutzerkennungen


Das Abfragen von Benutzerkennung und Paßwort beim Starten von Access be-
ginnt in dem Moment, in dem Sie für den besonderen Benutzer „Administrator“
(bzw. kurz „Admin“) ein Paßwort eintragen. Bis dahin wurde jeder Benutzer, ohne
daß er davon wußte, immer als „Admin“ angemeldet, so daß er immer alle Rechte
hatte.
Wenn Sie nun mit der Vergabe von Benutzerkennungen beginnen, sollten Sie sich zu-
erst überlegen, ob es sinnvoll ist, Ihre Benutzer in verschiedene Gruppen einzuteilen,
die jeweils verschiedene Ausgangs-Rechte haben; z.B. könnten Sie alle Benutzer, die
eigentlich nur Lese-Rechte haben, in eine Gruppe „Nur Lesen“ zusammenfassen, so
daß Sie lediglich einmalig die Gruppenrechte und dann nur noch davon positiv abwei-
chende einzelne Benutzerrechte eintragen müssen.
Standardmäßig stellt Access bereits drei Gruppen zur Verfügung: Administratoren,
Benutzer und Gäste. Die Gruppe „Administratoren“ hat alle Rechte. Das sollten
Sie ruhig so lassen, und (der Praktikabilität halber) alle Personen, die die Datenbank-
anwendung verwalten sollen, in diese Gruppe eintragen. Alternativ bietet es sich an,
alle Verwaltungsaufgaben (also das Erstellen von Formularen etc.) nur unter dem Be-
nutzernamen „Admin“ zu machen, damit Sie nicht aus Versehen eine Änderung vor-
nehmen, die Ihnen später leid tut. So würden Sie sich nur für Verwaltungsaufgaben
unter dem Namen „Admin“ anmelden, und für die „normale“ Anwendertätigkeit nach
wie vor unter Ihrem Namen, wo Sie zwar nichts verändern, aber eben auch nichts irr-
tümlich falsch machen können.
Damit sind Ihre Daten aber noch nicht vor unerlaubtem Lesen geschützt! Wenn Sie
dies wollen, lesen Sie bitte im Abschnitt 7.3, „Bestmögliche Datensicherheit“ auf Seite
63 nach!
Die zweite Gruppe, „Gäste“, wird von Access standardmäßig vollkommen rechtlos
gestellt. Das ist auch gut so. Benutzer, die lediglich dieser Gruppe angehören, haben
überhaupt keine Gruppenrechte, sondern nur die ausgesuchten Rechte, die Sie ihnen
persönlich zuweisen.
Die dritte Gruppe schließlich, „Benutzer“, bekommt von Access standardmäßig aus
unerfindlichen Gründen alle Rechte bereits als Gruppenrechte, ist also der Gruppe
„Administratoren“ gleichgestellt. In der Praxis empfiehlt es sich, dieser Gruppe die
Standard-Benutzerrechte einzutragen, also das Leserecht für alle Objekte, falls Sie
nicht bestimmte Tabellen (wie z.B. Patientendaten) gesondert schützen wollen. Wenn
Sie dann die einzelnen Benutzer nur dieser Gruppe zuordnen, haben Sie schon einen
gesunden Stamm an Rechten, den Sie dann für jeden Benutzer entsprechend erweitern
können, also jedem in den Tabellen, die seinem Aufgabengebiet angehören, ein Aktua-
lisierungs-, Einfüge- und Löschrecht einzuräumen.
7. Benutzerverwaltung 55

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.

7.3. Bestmögliche Datensicherheit


Diese Konten sind nun in Ihrer Datei „system.mda“ gespeichert. Nur besteht ein wich-

Abbildung 24: Benutzereintrag verändern


56 Access 2.0 für Fortgeschrittene

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.

7.4. Vergabe von Rechten an Access-Objekten


Jetzt soll endlich gezeigt werden, wie Sie an einzelnen Objekten Rechte vergeben
können. Hierzu müssen Sie den Menübefehl „Zugriffsrechte/Berechtigungen“ aus-
wählen. Es erscheint die Dialogbox aus Abbildung 25. Dort sehen Sie links oben eine
Liste aller verfügbaren Benutzer (bzw., wenn Sie das Optionsfeld „Gruppen“ aktivie-
ren, eine Liste aller Gruppen), rechts oben die Liste aller Objekte des mit dem Kombi-
nationsfeld „Objekttyp“ angegebenen Typs, sowie unten eine Liste aller verfügbaren
Berechtigungen für das aktuell ausgewählte Objekt und den aktuell ausgewählten Be-
nutzer bzw. die Gruppe.
7. Benutzerverwaltung 57

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

7.5. Benutzerverwaltung in einem Netzwerk


Wenn Sie Access auf einem Netzwerk einsetzen (was sehr wahrscheinlich ist, wenn Sie
bereits Benutzerkonten vergeben), dann müssen Sie noch darauf achten, daß alle Be-
nutzer auf die gleiche Systemdatenbank (system.mda) zugreifen. Dazu muß diese
Datei auf das Netzwerk kopiert werden (Wenn Access auf dem Netzwerkserver instal-
liert ist, wird das der Fall sein; falls Sie aber mit einer lokalen Installation von Access
arbeiten, sollten Sie sich an Ihren Netzwerk-Verwalter wenden, damit diese Sy-
stemdatenbank (in der Access-Sprache auch manchmal irreführend „Arbeitsgruppe“

Abbildung 25: Zuteilung einzelner Berechtigungen


58 Access 2.0 für Fortgeschrittene

genannt) auf den Server kopiert wird.


Dann müssen Sie alle Benutzer (d.h. alle PCs, die Access installiert haben) mit Hilfe
des Programms „Access Arbeitsgruppen-Administrator“ an diese Netzwerk-
Arbeitsgruppe anschließen. Falls bei Ihnen das Programm-Icon aus der Windows-
Oberfläche entfernt worden sein sollte, finden Sie es auch im Datei-Manager in dem
gleichen Verzeichnis, in dem auch Access selbst installiert ist, unter dem Namen
„wrkgadm.exe“.
Starten Sie dieses Programm, und wählen Sie die Schaltfläche „Anschließen“. Tragen
Sie dann den kompletten Pfad zu Ihrer Systemdatenbank, die auf dem Server liegt, ein,
und bestätigen Sie. Damit sind Sie mit der Netzwerk-Arbeitsgruppe verbunden, mit
anderen Worten, Access bekommt die Informationen darüber, welche Benutzer exi-
stieren, aus der Server-Version der system.mda-Datei.
Diese Schritte müssen Sie für alle Access-Installationen Ihres Netzwerkes durchfüh-
ren, damit von allen Rechnern aus nicht mehr auf die lokale Systemdatenbank, sondern
auf die Netzwerkversion zugegriffen wird. Lassen Sie sich dabei bitte von Ihrem
Netzwerk-Verwalter unterstützen, wenn Sie selbst nicht über ausreichende Netzwerk-
Kenntnisse verfügen (was keine Schande wäre).

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.

8.1. Eigenes „Outfit“ für die Anwendung


Der erste kleine Tip betrifft das „Outfit“ der Datenbankanwendung, für alle diejenigen,
die verbergen möchten, daß sie die Anwendung mit Access erstellt haben (dann kön-
nen Sie jedem erzählen, Sie hätten alles selbst programmiert). Dazu gibt es zwei kleine
Schmankerl:
• Unterdrückung des Startbildes von Access beim Programmstart; statt des-
sen können Sie ein eigenes Bild anzeigen lassen,
• Unterdrückung der Standard-Access-Titelleiste (Microsoft Access); statt
dessen können Sie den Namen Ihrer Anwendung eintragen.
Beide Dinge werden nicht in Access selbst, sondern in der Datei „msacc20.ini“, die in
Ihrem Windows-Verzeichnis liegt, geregelt. Öffnen Sie diese Datei mit einem Editor
Ihres Vertrauens (z.B. indem Sie im Windows-Datei-Manager auf den Dateinamen
„msacc20.ini“ doppelklicken)
8. Schmankerl in Access 59

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.

8.2. Anzeigen des Arbeitsfortschritts


Wenn Sie Makros erstellen, die sehr viele Aktionen nacheinander ausführen und daher
eine Weile dauern, können Sie dem Benutzer die Zeit ein bißchen vertreiben, indem
Sie unten in der Statusleiste einen blauen Balken darstellen lassen, der den Ar-
beitsfortschritt in Prozent anzeigt. Dazu gibt es eine Access-BASIC-Funktion
SysCmd, die unter anderem diese Aufgaben erfüllen kann. Falls Ihr langwieriges Pro-
gramm eine BASIC-Funktion ist, können sie die Funktion SysCmd direkt von dort
aufrufen; in einem Makro müssen Sie für jeden Aufruf der Funktion eine Ausführen-
Code-Aktion einfügen, die als einziges Argument den Funktionsnamen mit den ent-
sprechenden Parametern hat. Die Funktionsaufrufe müssen folgendermaßen aussehen:
• Um den Balken zu initialisieren, also zu Beginn des langwierigen Ma-
kros, müssen Sie die Funktion SysCmd(1, "Text vor dem Bal-
ken:", MaxAnzahl) aufrufen. Damit wird der Fortschrittsanzeiger
dargestellt; vor dem blauen Balken steht der Text, der als zweites Argu-
ment übergeben wurde. MaxAnzahl bestimmt, wie viele Schritte Ihr Ma-
kro hat.
• Nach jedem Arbeitsschritt tragen Sie den neuen Arbeitsvorgang im Bal-
ken mit der Funktion SysCmd(2, AktuelleAnzahl) ein. Hierbei
bestimmt der Quotient aus AktuelleAnzahl und MaxAnzahl, wie viel Pro-
zent des gesamten Arbeitsablaufes bereits passiert sind. Wenn Sie ganz
präzise Prozentzahlen ausgeben möchten, können Sie als MaxAnzahl 100
wählen, so daß Sie bei AktuelleAnzahl immer genau die Prozente eintragen
können.
60 Access 2.0 für Fortgeschrittene

• Um am Ende die Statuszeile wieder zurückzusetzen, müssen Sie die


Funktion SysCmd(3) aufrufen. Vergessen Sie das nicht, sonst ist Ihr
voller Balken immer in der Statuszeile zu sehen...

8.3. Kontrolle über das Programmende


Oft empfiehlt es sich, den Benutzer daran zu hindern, das Programm aus Versehen
zu beenden. Vor allem muß dafür gesorgt sein, daß der Benutzer das Hauptmenü-
Formular nicht schließen kann; sonst stünde er auf einmal vor dem leeren Access-
Bildschirm (das Datenbankfenster ist ja in der Regel ausgeblendet), und wüßte nicht
mehr, was zu tun ist.
Dafür müssen mehrere Dinge realisiert sein:
1. Das Hauptmenü-Formular darf nicht geschlossen werden können, es sei
denn, Access wird gleich mitgeschlossen.
2. Die Tastenkombination Alt+F4 darf nur nach einer Kontrollabfrage zum
Beenden der Anwendung führen
3. Ein eigener Menübefehl „Datei/Beenden“ muß ebenfalls nach einer Sicher-
heitsabfrage die Anwendung beenden.
Das klingt zwar ganz einfach, braucht aber ein bißchen Aufwand. Zunächst brauchen
Sie ein unsichtbares (ausgeblendetes) Formular, das der Benutzer weder einblenden
noch schließen kann. Es ist ungebunden und enthält ein (natürlich auch ungebunde-
nes) Ja/Nein-Feld (z.B. ein Kontrollkästchen), das den hübschen Namen
„BeendenErlauben“ trägt (in der Eigenschaft „Steuerelementname“).
Dieses Steuerelement wird Ihre Schaltzentrale: Wenn es auf „Ja“ steht, darf die An-
wendung beendet werden, andernfalls nicht. Der Standardwert muß demnach auf
„Nein“ eingestellt werden.. Außerdem ist dieses Formular der Versicherungsanker ge-
gen Alt+F4: Wenn der Benutzer diese Kombination tätigt, versucht Access, auch die-
ses Formular zu schließen. Das nutzen Sie schamlos aus, um das Beenden zu verhin-
dern: Sie fügen dem Formular eine Ereignisprozedur zum Ereignis „Bei Entladen“ hin-
zu, die folgendermaßen aussieht:
Sub Form_Unload (Cancel As Integer)
If [BeendenErlauben] <> True Then
If MsgBox("Wirklich beenden?",36,"Bibliothek") = 6 Then
[BeendenErlauben] = True
Else
Cancel = True
End If
End If
End Sub
Das macht folgendes: Wenn der Wert des Steuerelements „BeendenErlauben“ ungleich
„True“ ist (sprich: Das Kontrollkästchen ist nicht aktiviert), wird eine Kontrollabfrage
angezeigt, in der der Benutzer entweder „Ja“ oder „Nein“ auswählen kann. Wenn er
„Ja“ auswählt (Rückgabewert ist dann 6), wird Ihre Schaltzentrale auf „Ja“ gestellt,
andernfalls wird mit dem Befehl „Cancel = True“ bestimmt, daß der Schließvorgang
8. Schmankerl in Access 61

(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)

AusführenMenübefehl 34, 36, 41, 49, 53


—#— AuswählenObjekt 53
Beenden 34, 62
#Fehler! 29 GeheZuSteuerelement 36
HinzufügenMenü 48
—A— Meldung 34, 38, 53
ÖffnenAbfrage 34, 41
Abfragen 5, 22, 27 ÖffnenBericht 34, 41
Aktionsabfragen 13
ÖffnenFormular 31, 34, 41, 42, 61
Aktualisierungsabfrage 14, 41 ÖffnenTabelle 34
Anfügeabfrage 15 Parameter 31
Assistent 18
Schließen 35
Auswahlabfragen 5
SetzenWert 35, 44, 62
Berechnete Felder 12
StopAlleMakros 36, 38
Daten sortieren 5
StopMakro 36, 38, 39, 53
Datensätze zusammenfassen 5, 9, 16
SuchenDatensatz 36
Entwurfsansicht 5, 7, 12
SuchenWeiter 36
Kreuztabellenabfrage 15
Tastaturbefehle 36, 51, 53
Kriterien 6, 7, 10, 15, 17
Warnmeldungen 36
Kriterien verknüpfen 7, 10, 15
Löschabfrage 15 Aktualisierungsabfrage 14
Mit Makro öffnen 34 Alt (Tastenkombinationen) 24
Mit Makro schließen 35 Anfügeabfrage 15
Parameterabfragen 10
Anzahl (Aggregatfunktion) 8, 17
Pfeilsymbol in Beziehung 9
Symbolleiste 13 Arbeitsgruppe 58
Tabelle erstellen 13 Arbeitsgruppen-Administrator 58
Variable Kriterien 10 Archiv erstellen 13
Access Assistenten
Originaldokumentation 1 AutoFormular 4
Version 7.0 1 Befehlsschaltflächenassistent 24
Administrator 56 Einspaltiges Formular 4
Administratoren (Gruppe) 55 Gruppierung 5
Haupt-/Unterformular 4
Aggregatfunktionen 5
Kombinationsfeldassistent 23
Anzahl 5, 8, 17
Kreuztabellenabfrage 18
Domänenfunktionen 26
Listenfeldassistent 23
Max 9
Menü-Editor 48
Mittelwert 6
Optionsgruppenassistent 23
Summe 6
Steuerelementassistenten 20
Aktionen 31, 32, 33 Tabellarische Darstellung 5
AbbrechenEreignis 33, 36, 38, 39, 43
Ausdruck1 (Feldname) 12
AktualisierenDaten 22
AusführenCode 49 Ausdrücke siehe Formeln
AusführenMakro 33, 36, 49 AutoFormular 4
64 Access 2.0 für Fortgeschrittene

—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

Kind-Objekt 25 Monat aus Datum extrahieren 16

Kombinationsfeld Siehe Steuerelemente msacc20.ini (Datei) 59

Kombinationsfeldassistent 23 Mustersuche 6

Kreuztabellenabfrage 15
Kriterien
Stichwortverzeichnis 67

—N— Shortcuts 24, 48


Sicherheitsabfragen 38
Nein (Schlüsselwort) 9
Spaltenüberschrift (Kreuztabelle) 16
Netzwerk 58
Sperren von Steuerelementen 30
Nicht (Schlüsselwort) 6, 41
SQL 22, 27
Normalisierung 1
Standardwert 30
Null (leeres Feld) 9
Statuszeile 30

—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

Tabulator-Reihenfolge 27, 30 Vorkenntnisse 1, 5, 18


Tastaturabkürzungen 24, 48
Tastaturbelegung 52
—W—
Tastenanschläge imitieren 36 Wie (Schlüsselwort) 6, 11
Text 4 Windows
Textfeld Siehe Steuerelemente Andere Anwendungen 20, 23
Datenformat 30 Datei-Manager 59
Tippfehler 11 Programm-Manager 40
Standarddefinitionen 23, 24, 45, 48
Toolbox 20, 24
—Z—
—U—
Zähler 3
Und (Schlüsselwort) 6, 7
Zeilenüberschrift (Kreuztabelle) 16
Unterformular
Verweis auf Steuerelemente 25, 37 Zeilenumbruch 29
Zusammenfassen von Datensätzen 5
—V— Zwischen...Und (Schlüsselwort) 6, 13

Variable Bedingungen 6, 10

Das könnte Ihnen auch gefallen