You are on page 1of 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

Formulare

  • 2.3.1. ...............................................................................................

4

  • 2.3.2. Abfragen .................................................................................................

5

Berichte

  • 2.3.3. ..................................................................................................

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

    Inhaltsverzeichnis

    III

    8. SCHMANKERL IN ACCESS

    65

    • 8.1. Eigenes „Outfit“ für die Anwendung

    65

    • 8.2. Anzeigen des

    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

    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

    mehrere Tabellen,

    über

    Sortieren der Daten nach einem oder mehreren Feldern.

    Zusammenstellen

    der

    Daten

    Abbildung 2: Die Abfrage-Entwurfsansicht

    Abbildung 2: Die Abfrage-Entwurfsansicht

    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

    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“

    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“

    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

    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

    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- gen, sieht die Abfrage aus wie in Abbildung 8.

    • 3.5. Aktionsabfragen

    Abbildung 8: Berechnete Felder in einer Abfrage

    Abbildung 8: Berechnete Felder in einer Abfrage

    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- ge klicken Sie auf das Symbol mit dem Ausrufezeichen in der Sym- bolleiste oder wählen Sie die Daten- blattansicht.

    3.5.1. Tabellenerstellungsabfrage

    Anfügen Löschen Aktualisierung Tabelle erstellen
    Anfügen
    Löschen
    Aktualisierung
    Tabelle erstellen

    Abbildung 9: Symbole für Aktionsabfragen

    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

    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“

    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
    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, Feld aufsteigend sortiert.

    03...)

    und nach diesem (versteckten)

    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.

    Abbildung 14 : Kreuztabellenabfrage

    Abbildung 14: Kreuztabellenabfrage

    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-

    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ß

    Abbildung 15: Das Eigenschaftenfenster

    Abbildung 15: Das Eigenschaftenfenster

    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 sog. Eigenschaftenfenster anzeigen

    lassen (Menü Ansicht/Eigenschaften, Klick auf das Eigenschaften-Symbol der Symbolleiste im Formular- bzw. Berichts-

    entwurf (

    18 Access 2.0 für Fortgeschrittene ziell bei der Erstellung von komplexeren Datenbankanwendungen, in denen die Kon-

    ) 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

    Abbildung 16: Die Palette

    Abbildung 16: 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

    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- len, wobei die besondere Farbe „Transparent“ be- deutet, daß der Rahmen bzw. der Hintergrund nicht dargestellt werden, sondern auf das, was da- hinter steht, durchblicken lassen. Für den Hinter- grund ist das meistens empfehlenswert.

    4.3. Steuerelemente

    Textfeld Umschaltfläche Kontrollkästchen Listenfeld Unterformular Objekt (gebunden) Rechteck Befehlsschaltfläche Feststellen Assistent Diagramm Objekt (ungebunden) Linie
    Textfeld
    Umschaltfläche
    Kontrollkästchen
    Listenfeld
    Unterformular
    Objekt (gebunden)
    Rechteck
    Befehlsschaltfläche
    Feststellen
    Assistent
    Diagramm
    Objekt (ungebunden)
    Linie
    Seitenumbruch
    Bezeichnungsfeld
    Optionsgruppe
    Optionsfeld
    Kombinationsfeld

    Abbildung 17: Die Toolbox

    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

    Abbildung 18: Ein Textfeld

    Abbildung 18: Ein Textfeld

    Am häufigsten sind Textfelder anzutref- 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.

    Abbildung 19: Optionsgruppe

    Abbildung 19: Optionsgruppe

    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 „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, Mit Systemmenüfeld, Mit Min Schaltfläche, Mit Max Schaltfläche

    Beschreiben das Aussehen Ihres Formularrahmens. Sie kön- nen den Benutzer so an unüberlegten Handlungen hindern und das Design Ihrer Anwendung verbessern. Beispielsweise wur- 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ß „#Fehler!“.

    Im Formular erscheint dann

    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

    Wenn Sie „Vergrößerbar“ bei einem Steuerelement auf „Ja“

    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.

    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

    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

    32 Access 2.0 für Fortgeschrittene langt), so daß Ihnen die Orientierung darin leicht fallen sollte. Die
    32 Access 2.0 für Fortgeschrittene langt), so daß Ihnen die Orientierung darin leicht fallen sollte. Die

    „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

    Menüleiste: Access stellt Ihnen bekanntlich überall

    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:

    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

    [Leser-Nr]=[Formulare]![Lesereingabe]![Le-

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

    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-

    Es empfiehlt sich, vor der Ausführung dieser Aktion zuerst mit

    SuchenWeiter

    ren lassen. Die Parameter kennen Sie alle aus dem „Suchen“-

    Dialogfeld, das Sie mit dem Menübefehl „Bearbeiten/Suchen“ erhalten.

    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“

    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

    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

    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, Nach Aktualisierung

    Entsprechen den gleichen Ereignissen im Formular, aller- 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

    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, ähnliches) eintragen.

    ...

    wer wird denn gleich“ oder

    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

    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

    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)

    — # —

    #Fehler!

    29

    — A —

    Abfragen

    5, 22, 27

    Aktionsabfragen

    13

    Aktualisierungsabfrage

    14, 41

    Anfügeabfrage

    15

    Assistent

    18

    Auswahlabfragen

    5

    Berechnete Felder

    12

    Daten sortieren

    5

    Datensätze zusammenfassen Entwurfsansicht

    5, 9, 16 5, 7, 12

    Kreuztabellenabfrage

    15

    Kriterien Kriterien verknüpfen

    6, 7, 10, 15, 17 7, 10, 15

    Löschabfrage

    15

    Mit Makro öffnen

    34

    Mit Makro schließen

    35

    Parameterabfragen

    10

    Pfeilsymbol in Beziehung

    9

    Symbolleiste

    13

    Tabelle erstellen

    13

    Variable Kriterien

    10

    Access Originaldokumentation

    1

    Version 7.0

    1

    Administrator

    56

    Administratoren (Gruppe)

    55

    Aggregatfunktionen

    5

    Anzahl

    5, 8, 17

    Domänenfunktionen

    26

    Max

    9

    Mittelwert

    6

    Summe

    6

    Aktionen AbbrechenEreignis

    31, 32, 33 33, 36, 38, 39, 43

    AktualisierenDaten

    22

    AusführenCode

    49

    AusführenMakro

    33, 36, 49

    AusführenMenübefehl

    34, 36, 41, 49, 53

    AuswählenObjekt

    53

    Beenden

    34, 62

    GeheZuSteuerelement

    36

    HinzufügenMenü

    48

    Meldung

    ÖffnenAbfrage

    ÖffnenBericht

    ÖffnenFormular

    34, 38, 53

    34, 41

    34, 41

    31, 34, 41, 42, 61

    ÖffnenTabelle

    34

    Parameter

    31

    Schließen

    35

    SetzenWert StopAlleMakros StopMakro

    35, 44, 62 36, 38 36, 38, 39, 53

    SuchenDatensatz

    36

    SuchenWeiter

    36

    Tastaturbefehle

    36, 51, 53

    Warnmeldungen

    36

    Aktualisierungsabfrage

    14

    Alt (Tastenkombinationen)

    24

    Anfügeabfrage

    15

    Anzahl (Aggregatfunktion)

    8, 17

    Arbeitsgruppe

    58

    Arbeitsgruppen-Administrator

    58

    Archiv erstellen

    13

    Assistenten AutoFormular

    4

    Befehlsschaltflächenassistent

    24

    Einspaltiges Formular

    4

    Gruppierung

    5

    Haupt-/Unterformular

    4

    Kombinationsfeldassistent

    23

    Kreuztabellenabfrage

    18

    Listenfeldassistent

    23

    Menü-Editor

    48

    Optionsgruppenassistent

    23

    Steuerelementassistenten

    20

    Tabellarische Darstellung

    5

    Ausdruck1 (Feldname)

    12

    Ausdrücke

    siehe Formeln

    AutoFormular

    4

    64

    Access 2.0 für Fortgeschrittene

    — B —

    Bedingungen Variable Bedingungen

    10

    Verknüpfen (in Makros)

    39

    34

    Beenden von Access Befehlsschaltfläche

    Siehe Steuerelemente

    Befehlsschaltflächenassistent

    24

    Beispieldatenbank

    2

    Abfrage „Ausleihinformationen“

    4

    Abfrage „Ausleihstatistik“

    5

    Abfrage „Inventurliste“

    8

    Abfrage „Leserinformationen“

    4

    Abfrage „Leserstatistik“

    5

    Abfrage „Pauschalverlängerung“

    14

    Abfragen

    5

    Bericht „Ausleihstatistik“

    5

    Bericht „Mahnungen“

    5

    Berichte

    5

    Beziehungen

    4

    Formular „Ausleihen“

    4

    Formular „Büchereingabe“

    4

    Formular „Lesereingabe“

    4

    Formulare

    4

    Tabelle „Ausleihen“

    4

    Tabelle „Bücher“

    3, 4

    Tabelle „Leser“

    3, 4

    Tabelle „Lesergruppen“

    3

    Tabellenstruktur

    3

    Benutzer (Gruppe)

    55

    Benutzer() (Funktion)

    41, 53

    Benutzerkennung

    54

    Benutzerverwaltung

    53

    Administrator

    53, 55, 56

    Arbeitsgruppe

    58

    Benutzer rekonstruieren

    56

    Benutzergruppen

    55

    Benutzerkonten einrichten

    54

    Berechtigungen

    53

    Berechtigungen zuweisen

    57

    Datenschutz

    57

    Grundprinzipien

    53

    Gruppen anlegen

    55

    Gruppenberechtigungen

    54, 56

    Netzwerkinstallation

    58

    PID

    56

    system.mda (Datei)

    56, 58

    Systemdatenbank

    56, 58

    Berechtigungen

    53

    Bereiche

    Berichtskopf

    28

    Eigenschaften

    28

    Seitenkopf

    28

    Berichte

    18

    Assistenten

    18

    Bereiche

    28

    Eigenschaften

    28

    Eigenschaftenfenster

    19

    Entwurfsansicht

    18

    Ereignisse

    42, 44

    Mit Makro öffnen

    34

    Mit Makro schließen

    35

    Palette

    20

    Seitenkopf

    28

    Toolbox

    20

    Bezeichnungsfeld

    Siehe Steuerelemente

    Beziehungen

    1:n-Beziehung

    22

    Alle Datensätze einer Tabelle anzeigen

    8

    Equi Join

    9

    Fremdschlüssel

    22

    Gleichheitsverknüpfung

    9

    Inklusionsverknüpfung

    8, 9

    Outer Join

    9

    Pfeilsymbol

    9

    Verknüpfungseigenschaften

    8

     

    — D —

    Daten An Tabelle anfügen

    15

    Archivieren

    13

    Aus Makros verändern

    35, 36

    Automatisch ändern

    14

    Automatisch löschen

    15

    Einzelne Felder löschen

    15

    Mit Makro suchen

    36

    Numerisch sortieren

    17

    Datenbank Beispieldatenbank

    2

    Berechtigungen

    53

    Datenbankanwendungen

    2

    Normalisierung der Tabellen

    1

    Planung

    1

    Datensätze

    Gruppieren

    5, 9

    Gruppierung

    5

    Datenschutz

    56

    Im Netzwerk

    58

    Datentypen

    Datum/Zeit

    11

    Stichwortverzeichnis

    65

    Text

    4, 11

    Zahl

    11

    Zähler

    3

    Datum() (Funktion)

    7

    Domäne

    26

    Domänenfunktionen

    26, 37

    DomAnzahl() (Funktion)

    26, 37

    DomMax() (Funktion)

    26

    DomMin() (Funktion)

    26

    DomMittelwert() (Funktion)

    26

    DomSumme() (Funktion)

    26

    DomWert() (Funktion)

    26

    — E —

    Eigenschaften

    19

    Aktiviert

    30

    Andere Eigenschaften

    20

    Automatisch ergänzen

    23

    Beschriftung

    27

    Bildlaufleisten

    27

    Daten-Eigenschaften

    19

    Datenherkunft

    22, 27

    Datensatzmarkierer

    27

    Eingabeformat

    30

    Ereignis-Eigenschaften

    20

    Ereigniseigenschaften

    42

    Format

    30

    Gebundene Spalte

    22

    Gesperrt

    30

    Gültigkeitsmeldung

    30

    Gültigkeitsregel

    30

    Herkunftstyp

    21

    In Reihenfolge

    30

    Kategorien

    19

    Kontextmenü

    50

    Layout-Eigenschaften

    19, 20, 27, 31

    Mit Max Schaltfläche

    28

    Mit Min Schaltfläche

    28

    Mit Systemmenüfeld

    28

    Name

    29

    Navigationsschaltflächen

    28

    Nur Listeneinträge

    22

    Optionswert

    23, 25

    Rahmenart

    28

    Reihenfolgenposition

    27

    Seitenfuß

    28

    Seitenkopf

    28

    Sichtbar

    30, 35, 36

    Spaltenanzahl

    22

    Spaltenbreiten

    22

    Standardwert

    30, 60

    Statuszeilentext

    30

    Steuerelementinhalt

    25, 29

    Steuerelementname

    60

    Vergrößerbar

    29, 31

    Verkleinerbar

    29, 31

    Eigenschaftenfenster

    19

    Eingabe der Parameterwerte (Fenster)

    11

    Eingabeaufforderung

    11

    Einspaltiges Formular

    4

    Eltern-Objekt

    25

    Equi Join Ereignis

    9

    Ablauf abbrechen

    33

    61

    Ereignisprozedur Ereignisprozeduren

    Ereignisse

    42, 44, 45, 46, 61 20, 41

    Bei Änderung

    20, 42, 45

    45

    Bei Entladen

    61

    Bei Fehler

    44

    Bei Nicht In Liste

    45

    Beim Anzeigen

    43

    Beim Doppelklicken

    45

    Beim Formatieren

    44

    Beim Klicken Beim Löschen

    33, 38, 43, 46

    Beim Öffnen

    44

    Beim Schließen

    44

    Liste

    42

    Nach Aktualisierung

    43, 45

    Nach Eingabe

    43

    Vor Aktualisierung Vor Löschbestätigung

    43, 45, 46 43, 46

    — F —

    Feldliste

    18, 21

    Feldreihenfolge

    26

    Flußkontrolle

    27, 28, 39

    Beenden der Anwendung

    60

    Eigene Menüleisten

    48

    Starten der Anwendung

    40

    Flußkontrolle.Das Makro „Autoexec“

    41

    Format() (Funktion)

    16, 18

    12, 25, 29, 30, 34, 38, 39

    Formeln In Formularfeldern

    25

    Verweise auf Steuerelemente

    25

    Werte aus der Datenbank ermitteln

    26

    66

    Access 2.0 für Fortgeschrittene

    Formulare

    18

    Assistenten

    18, 19

    Bereiche

    28

    Datensatzmarkierer

    27, 28

    Dialogfeld

    27, 28