MS Access 2.0 für Fortgeschrittene

73
Thomas Riehm Referat III A 2 LMU München Access 2.0 für Fortgeschrittene 3., überarbeitete Auflage Februar 1997

description

Skript zum Erlernen von Microsoft Access 2.0 (für Fortgeschrittene)(von Thomas Riehm)

Transcript of MS Access 2.0 für Fortgeschrittene

Page 1: MS Access 2.0 für Fortgeschrittene

Thomas RiehmReferat III A 2LMU München

Access 2.0für

Fortgeschri ttene

3., überarbeitete AuflageFebruar 1997

Page 2: MS Access 2.0 für Fortgeschrittene

© 1997 Thomas [email protected]

Page 3: MS Access 2.0 für Fortgeschrittene

Inhaltsverzeichnis

1. EINFÜHRUNG 11.1. Ein Wort zu Access 7.0 und Access 97..........................................................1

1.2. Kursziel.........................................................................................................2

2. DIE BEISPIELDATENBANK 22.1. Aufgabenbeschreibung...................................................................................3

2.2. Tabellenstruktur der Beispieldatenbank..........................................................3

2.3. Bereits erstellte Objekte.................................................................................42.3.1. Formulare...............................................................................................42.3.2. Abfragen................................................................................................. 52.3.3. Berichte.................................................................................................. 5

3. DAS ENTWERFEN VON ABFRAGEN (VERTIEFUNG ) 63.1. Kriterien in Abfragen......................................................................................7

3.1.1. Wiederholung: Schlüsselwörter in Abfragekriterien................................. 73.1.2. Kombination von Kriterien über mehrere Felder......................................8

3.2. Besondere Beziehungen in Abfragen: Die Inventurliste...................................83.2.1. Selektieren aller niemals ausgeliehenen Bücher (Inklusionsverknüpfung).. 93.2.2. Selektieren aller zurückgegebenen Bücher.............................................11

3.3. Parameterabfragen.......................................................................................12

3.4. Berechnete Felder in Abfragen.....................................................................14

3.5. Aktionsabfragen...........................................................................................143.5.1. Tabellenerstellungsabfrage.....................................................................153.5.2. Aktualisierungsabfrage..........................................................................163.5.3. Anfügeabfrage.......................................................................................173.5.4. Löschabfrage.........................................................................................17

3.6. Kreuztabellenabfragen..................................................................................18

3.7. Zusammenfassung........................................................................................20

4. VERTIEFUNG : FORMULARE UND BERICHTE 204.1. Das Eigenschaftenfenster.............................................................................21

4.2. Die Palette................................................................................................... 23

4.3. Steuerelemente.............................................................................................234.3.1. Textfelder.............................................................................................244.3.2. Kombinations- und Listenfelder.............................................................244.3.3. Optionsgruppen.....................................................................................264.3.4. Bezeichnungsfelder...............................................................................27

Page 4: MS Access 2.0 für Fortgeschrittene

II Access 2.0 für Fortgeschrittene

4.3.5. Befehlsschaltflächen...............................................................................274.3.6. Berechnete Felder in Formularen und Berichten.....................................284.3.7. Die Domänenfunktionen.........................................................................294.3.8. Die Feldreihenfolge................................................................................30

4.4. Die wichtigsten Eigenschaften.......................................................................314.4.1. Formulareigenschaften...........................................................................314.4.2. Berichtseigenschaften.............................................................................324.4.3. Bereichseigenschaften............................................................................334.4.4. Steuerelementeigenschaften....................................................................33

5. EINFÜHRUNG IN DIE M AKROPROGRAMMIERUNG 365.1. Was sind Makros?........................................................................................36

5.2. Die Makro-Entwurfsansicht..........................................................................37

5.3. Die wichtigsten Aktionen..............................................................................38

5.4. Bedingungen in Makros................................................................................425.4.1. Überprüfen, ob ein Buch schon ausgeliehen ist.......................................435.4.2. Verwenden von Sicherheitsabfragen für Makros.....................................435.4.3. Verwenden von Alternativbedingungen..................................................44

6. PROGRAMMFLUßKONTROLLE 456.1. Starten der Anwendung................................................................................45

6.2. Das Makro „AutoExec“................................................................................46

6.3. Ereignisse.....................................................................................................476.3.1. Die wichtigsten Ereignisse......................................................................48

6.3.1.1. Formularereignisse....................................................................................496.3.1.2. Berichtsereignisse.....................................................................................506.3.1.3. Steuerelementereignisse.............................................................................50

6.3.2. Ereignisse und Makros...........................................................................526.3.3. Ereignisprozeduren................................................................................52

6.4. Benutzerdefinierte Menüleisten.....................................................................54

6.5. Arbeiten mit Symbolleisten...........................................................................576.5.1. Standardsymbolleisten verstecken..........................................................576.5.2. Benutzerdefinierte Symbolleisten............................................................57

6.6. Ändern der Tastaturbelegungen....................................................................58

7. BENUTZERVERWALTUNG 607.1. Grundprinzipien............................................................................................60

7.2. Vergabe von Benutzerkennungen..................................................................61

7.3. Bestmögliche Datensicherheit.......................................................................63

7.4. Vergabe von Rechten an Access-Objekten....................................................63

7.5. Benutzerverwaltung in einem Netzwerk........................................................64

Page 5: MS Access 2.0 für Fortgeschrittene

Inhaltsverzeichnis III

8. SCHMANKERL IN ACCESS 658.1. Eigenes „Outfit“ für die Anwendung............................................................65

8.2. Anzeigen des Arbeitsfortschritts................................................................... 66

8.3. Kontrolle über das Programmende...............................................................67

Page 6: MS Access 2.0 für Fortgeschrittene

Abbildungsverzeichnis

Abbildung 1: Die Beziehungen in der Beispieldatenbank..........................................3Abbildung 2: Die Abfrage-Entwurfsansicht...............................................................6Abbildung 3: Mehrere Kriterien über mehrere Felder...............................................8Abbildung 4: Dialogbox „Verknüpfungseigenschaften“..........................................10Abbildung 5: Die Abfrage „Inventurliste“..............................................................12Abbildung 6: Erstellen einer Parameterabfrage......................................................13Abbildung 7: Abfrage eines Parameters..................................................................13Abbildung 8: Berechnete Felder in einer Abfrage...................................................14Abbildung 9: Symbole für Aktionsabfragen.............................................................15Abbildung 10: Tabellenerstellungsabfrage..............................................................15Abbildung 11: Die Aktualisierungsabfrage „Pauschalverlängerung“.....................16Abbildung 12: Löschen archivierter Daten..............................................................18Abbildung 13: Der Entwurf einer Kreuztabellenabfrage..........................................19Abbildung 14: Kreuztabellenabfrage.......................................................................20Abbildung 15: Das Eigenschaftenfenster.................................................................21Abbildung 16: Die Palette.......................................................................................23Abbildung 17: Die Toolbox.....................................................................................24Abbildung 18: Ein Textfeld.....................................................................................24Abbildung 19: Optionsgruppe.................................................................................26Abbildung 20: Die Makro-Entwurfsansicht.............................................................37Abbildung 21: Die Makrogruppe „Ausleihen“........................................................42Abbildung 22: Installation der Anwendung als eigenes Icon....................................46Abbildung 23: Der Menü-Editor.............................................................................55Abbildung 24: Benutzereintrag verändern...............................................................62Abbildung 25: Zuteilung einzelner Berechtigungen.................................................64

Tabellenverzeichnis

Tabelle 1: Die wichtigsten Formulareigenschaften..................................................31Tabelle 2: Die wichtigsten Berichtseigenschaften....................................................32Tabelle 3: Die wichtigsten Bereichseigenschaften...................................................33Tabelle 4: Die wichtigsten Steuerelementeigenschaften...........................................33Tabelle 5: Die wichtigsten Aktionen in Makros.......................................................38Tabelle 6: Die wichtigsten Formularereignisse.......................................................49Tabelle 7: Die wichtigsten Steuerelementereignisse.................................................51

Page 7: MS Access 2.0 für Fortgeschrittene

1. Einführung 1

1. Einführung

Dieses Skript soll Sie durch den Kurs „Access 2.0 für Fortgeschrittene“ des ReferatsIII A 2 begleiten. Es kann natürlich kein Handbuch ersetzen und dient hauptsächlichdazu, 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 sehrempfehlenswert, 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 hiervorgestellten Features beschreibt und darüberhinaus noch viel mehr Tips enthält, als indiesem Skript möglich war.

Das Skript ist die Fortsetzung meines Skripts zum Kurs „Access 2.0 für Einsteiger“, sodaß dessen Inhalt hier vorausgesetzt wird (wobei es selbstverständlich genügt, wennSie sich das entsprechende Wissen selbst angeeignet haben). Das gilt besonders für dieFragen 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 imEinsteigerskript 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 Bereichenumfassende Neuerungen (umfangreiche Assistenten, wesentlich bessere Unterstützungder 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.0verfü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 beiweitem übersteigt.

Das hier vermittelte Wissen zu Access 2.0 ist aber ohne große Schwierigkeiten auchauf die neuen Versionen übertragbar, da die Grundkonzepte des Programms gleich ge-blieben sind. Auf gravierende Differenzen zwischen den Versionen wird im Rahmendes Kurses hingewiesen werden.

Page 8: MS Access 2.0 für Fortgeschrittene

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 imProgramm“, 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 alsden Datenbankentwickler (verschiedene Sachbearbeiter, Kollegen) bedienbar gemachtwird. Endziel ist daher das völli ge Verstecken der Programmteile von Access; keinAnwender 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 Datenbankwie 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 mitAbfragen, 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ürmehrere 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 „Access2.0 für Einsteiger“ erstellt wurde, für „Quereinsteiger“ kurz zusammenfassen, damitsie 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 Bibliothekverwalten. Zu diesem Zweck werden Informationen über die Leser und den Bücher-bestand verwaltet. Dazu kommt die Verwaltung von Ausleihvorgängen inklusive derautomatischen Erstellung von Mahnungen, falls die Leihfrist überzogen wurde.

Page 9: MS Access 2.0 für Fortgeschrittene

2. Die Beispieldatenbank 3

Zwar genügt diese Beispieldatenbank nicht den Anforderungen, die an die Verwaltungeiner 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 undbis 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 einerDatenbank in mindestens drei Viertel aller Fälle in einem falschen Datenbankentwurfliegt.

Die Tabellen sind im einzelnen:

1. Leser : In dieser Tabelle werden alle Informationen gespeichert, die dieeinzelnen Leser, d.h. die Kunden der Bibliothek, betreffen. Jedem Leser isthier eine eindeutige Lesernummer zugewiesen (dabei handelt es sich umein „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 Ausleihverhaltenanhand dieser Gruppenzuordnung analysiert werden kann. Primärschlüsselist 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 Signaturvergeben werden muß. Dies würde in einer „echten“ Bibliothek wohl eherdurch die Vergabe von Mediennummern als Primärschlüssel erfolgen, sodaß die Signatur nur noch Ordnungszwecken dient.

Abbildung 1: Die Beziehungen in der Beispieldatenbank

Page 10: MS Access 2.0 für Fortgeschrittene

4 Access 2.0 für Fortgeschrittene

4. Ausleihen: Diese Tabelle enthält die einzelnen Ausleihvorgänge, wobei einAusleihvorgang definiert ist durch einen Leser (d.h. die Lesernummer), dasausgeliehene Buch (d.h. die Signatur) und des Ausleihdatums. Anhand deseinzelnen Ausleihvorgangs kann dann die Verlängerung oder Mahnungrealisiert 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“ gespeichertbleiben, 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 eine1: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 wurdeursprünglich mit dem Assistenten „Einspaltiges Formular“ erstellt, dannaber 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 diedie Abfrage „Leserinformationen“), im Unterformular die zugehörigenAusleihvorgä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 derAusleihvorgänge, in denen es erfaßt ist. Dies wurde durch die Gruppierung

Page 11: MS Access 2.0 für Fortgeschrittene

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 Versandan 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 einmalvertieft auf das Entwerfen von Abfrageneingegangen werden; schließlich sindAbfragen 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 Auswahlabfragenim Abfrage-Entwurfsbereich durchDrag’n’Drop aus den Tabellenbzw. durch Doppelklick,

• Erstellen von Abfragen übermehrere Tabellen,

• Sortieren der Daten nach einemoder mehreren Feldern.

• Zusammenstellen der Datenzu 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...

Abbildung 2: Die Abfrage-Entwurfsansicht

Page 12: MS Access 2.0 für Fortgeschrittene

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 entsprechendenFeld genau xxx enthalten, wobei xxx entweder eine Zahl oder ein Text (dermuß dann aber in Anführungszeichen stehen!) sein kann.

• <xxx, <=xxx, >xxx, >=xxx, <>xxx: Wählt alle Datensätzeaus, 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 Feldeinen Wert haben, der dem angegebenen Muster xxx entspricht. Beispiel:Wie "[A-C]*" findet alle Datensätze, deren Wert im aktuellen Feld mitA, B, oder C anfängt.

Wie Sie solche Muster zusammenstellen können, erfahren Sie am besten inder 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. Eventuellmüssen einzelne Ausdrücke eingeklammert werden, um nicht zweideutigeErgebnisse 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 zwischenMinus Unendlich und 0, zwischen 101 und 299, und zwischen 351 undUnendlich liegen.

Sie müssen für die Werte xxx nicht unbedingt feste Werte eintragen. Genausogutkönnen Sie einen Wert aus dem gleichen Datensatz der Abfrage eintragen, indem Sieeinfach statt des festen Wertes den Feldnamen in eckigen K lammern eintragen, alsoz.B. >=[Ausleihdatum] in das Kriterienfeld aufnehmen.

Genauso können Sie auch eingebaute Access-Funktionen wie z.B. Datum() für dasaktuelle Datum verwenden. Eine Liste aller verfügbarer eingebauter Funktionen findenSie in der Online-Hilfe unter dem Stichwort „Funktionen: Liste von“.

Page 13: MS Access 2.0 für Fortgeschrittene

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 manchmalKriterien 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 2sein, oder

• Das Erscheinungsjahr soll nach 1990 liegen, dann aber höchstens in ersterAuflage.

Dazu sind in dem Abfrage-Entwurfsfenster mehrere Zeilenunter der Zeile „ K riterien“vorhanden, die mit „oder“ mar-kiert sind. Alle Bedingungen, dieSie in der gleichen Zeile eintra-gen, werden mit „Und“ ver-knüpft, alle, die in verschiedenenZeilen 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 nichtausgeliehen 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 dasBuch 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, alsoim 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 existierenzwar entsprechende Datensätze in der Tabelle „Ausleihen“, aber in allendiesen Datensätzen ist im Feld „ Zurückgegeben“ ein „Ja“ eingetragen.Sobald ein Datensatz existiert, in dem hier „Nein“ steht, besteht ja ein nochoffener Ausleihvorgang, d.h. das Buch ist momentan beim Leser und nichtim Regal.

Abbildung 3: Mehrere Kriterien über mehrere Felder

Page 14: MS Access 2.0 für Fortgeschrittene

8 Access 2.0 für Fortgeschrittene

Beginnen Sie einmal mit der ersten Möglichkeit, d.h. selektieren Sie alle Bücher, fürdie 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 K rite-r ien 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 manmeinen, man müßte hier lediglich als „Kriterien“ „ 0“ oder „Ist Null“ eintragen, um dieBücher ohne passenden Ausleihvorgang zu selektieren. Doch weit gefehlt!

Sehen Sie sich einmal die Datenblattansicht der (noch kriterienfreien) Auswahlabfragean: 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 einerwünschtes Verhalten, nur eben nicht hier!

Dieses Verhalten können Sie aber beeinflussen, indem Sie den Typ der Beziehungzwischen „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“

Page 15: MS Access 2.0 für Fortgeschrittene

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 derTabelle „Bücher“ anzeigen, egal, ob sie bereits ausgeliehen wurden oder nicht. In derEntwurfsansicht wird die Beziehung nun durch ein Pfeilsymbol gekennzeichnet. DieseÄnderung des Beziehungstyps wirkt sich aber nur innerhalb der aktuellen Abfrageaus. 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“ imFeld „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 ausgeliehenwurden, werden angezeigt.

3.2.2. Selektieren aller zurückgegebenen Bücher

Nun kommt der schwierigere Brocken: Sie benötigen zusätzlich – also in der gleichenAbfrage – 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, beidenen 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 überhaupteinen Datensatz mit „Nein“ gibt oder nicht. Um zu verstehen, welche die richtigeFunktion 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 dargestelltwerden.

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, beidem hier 0, also „Nein“ steht. Nur dann, wenn der Maximalwert -1 ist, gibt es keinensolchen Datensatz, und alle Werte sind „Ja“; damit ist die Bedingung erfüllt. Wie Siedarauf kommen sollen? Die Frage ist schwer zu beantworten. Programmierarbeit er-fordert eben immer eine gehörige Portion Kreativität und Phantasie...

Page 16: MS Access 2.0 für Fortgeschrittene

10 Access 2.0 für Fortgeschrittene

Wählen Sie also für das Feld „Zurückgegeben“ die Aggregatfunktion „ Max“ undtragen Sie als Kriterium „Ja“ (oder -1) ein. Dieses Kriterium muß nach dem, was Sieim 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ückgegebenworden 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, diemit Ihrer Datenbankanwendung arbeiten sollen) jedes Mal den Entwurf der Abfrageverändern.

Das muß aber nicht sein: Sie können auch erst bei der Ausführung der Abfrage vomBenutzer K riterien eingeben lassen. Das ist dann sinnvoll, wenn Ihnen beim Arbei-ten immer wieder aufgefallen ist, daß Sie eine Abfrage an immer der gleichen Stelleverä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, eineEingabeaufforderung in eckigen K lammern ein. Die Eingabeaufforde-rung muß den Konventionen für Variablennamen entsprechen, sie darf also

Abbildung 5: Die Abfrage „Inventurliste“

Page 17: MS Access 2.0 für Fortgeschrittene

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 Eingabeaufforderunggenau so ein, wie Sie sie vorher definiert haben (auch mit den eckigenKlammern). 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 erkenntAccess das bei der Eingabe automatisch, so daß Sie es beim ersten Schrittbelassen können. Insbesondere bei Datum/Zeit-Feldern ist die Eingabe desParametertyps aber unumgänglich!

Die Eingabe der Parametertypen sieht dann aus wie in Abbildung 6.

Hier wurde ein Parameter für das Muster eines Wie-K riteriums verwendet. WennSie diese Abfrage öffnen, erscheint zuerst das Fenster aus Abbildung 7, in dem Sie denentsprechenden Wert eintragen müssen.

Dieses Fenster erscheint wahrscheinlich häufiger, als Ihnen lieb ist: Nämlich immerdann, wenn in einer Abfrage bei einem Feldnamen ein Tippfehler steckt und Accessdiesen Feldnamen deswegen nicht erkennen kann. Auch wenn in einer Abfrage, einemFormular oder einem Bericht berechnete Felder verwendet werden (siehe dazu untenden Abschnitt 4.3.6, „Berechnete Fel-der in Formularen und Berichten“ aufSeite 28) und bei den Feldnamen derBerechnung ein Tippfehler verstecktist, geht Access davon aus, daß Sieein Parameterfeld verwenden möchten

Abbildung 6: Erstellen einer Parameterabfrage

Abbildung 7: Abfrage eines Parameters

Page 18: MS Access 2.0 für Fortgeschrittene

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 ausgebenlassen, indem Sie in das gewünschte Feld im Abfrage-Entwurfsbereich zuerst denFeldnamen des ersten Faktors, dann das Mal-Zeichen (*), und dann den Feldnamendes 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 derMehrwertsteuer auszugeben, können Sie in ein Feld der Abfrage statt des Feldnamenseinfach [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 derFeldname für dieses Feld, den sie natürlich auch selbst eintragen oder verändern kön-nen.

Achten Sie auch auf die eckigen K lammern bei den Feldnamen! Im Regelfall werdendiese zwar von Access eingetragen, aber bei Feldnamen, die Sonderzeichen wie zumBeispiel Bindestriche oder Leerzeichen enthalten, trennt Access den Namen in zweiBestandteile und sieht einen Bindestrich beispielsweise als Berechnung der Differenzzweier Teilnamen.

Als Formel können Sie j edenbeliebigen Ausdruck eintra-gen. Wenn Sie von einem Buchz.B. wissen möchten, wie vieleTage es bereits „überfälli g“ ist,wie viele Tage also zwischendem eigentlichen Rückgabeter-min und dem heutigen Tag lie-gen, sieht die Abfrage aus wiein Abbildung 8.

3.5. Aktionsabfragen

Aber Abfragen können noch viel mehr als nur die Auswahl von Datensätzen nach be-stimmten Kriterien aus verschiedenen Tabellen. Abfragen sind auch ein wichtigesWerkzeug, um Veränderungen an Ihren Daten vorzunehmen. Sie können damitDaten 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 Siedas 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.

Abbildung 8: Berechnete Felder in einer Abfrage

Page 19: MS Access 2.0 für Fortgeschrittene

3. Das Entwerfen von Abfragen (Vertiefung) 13

Zum Ausführen jeder Aktionsabfra-ge klicken Sie auf das Symbol mitdem Ausrufezeichen in der Sym-bolleiste oder wählen Sie die Daten-blattansicht.

3.5.1. Tabellenerstellungsabfrage

Wenn Sie aus den Daten Ihrer Abfrage eine neue Tabelle erstellen möchten, wählenSie das Symbol „Tabelle erstellen“ aus der Symbolleiste. Access fragt Sie nach demNamen der Tabelle sowie der Datenbank, in der diese Tabelle liegen soll. Sie könnenalso auch eine Tabelle in einer anderen Datenbank erstellen. Wenn Sie diese Angabenspäter einmal ändern möchten, klicken Sie einfach erneut auf das Symbol oder wählenSie den Menübefehl „Abfrage/Tabellenerstellung“ in der Abfrage-Entwurfsansicht.

Ein Anwendungsbeispiel hierfür ist die Archivierung alter Datensätze: Wenn IhreDatenbank einmal „ in die Jahre gekommen ist“ und das Sortieren immer langsamerwird, weil noch Daten von 1995 mit sortiert werden, sollten Sie alte Datensätze, dieSie 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 deralten 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 “, damitnicht noch offene Ausleihvorgänge mit gelöscht werden.

Wählen Sie dann das Symbol „Tabellenerstellungsabfrage“, um die Dialogbox ausAbbildung 10 zu erhalten. Hier geben Sie lediglich den Namen der zu erstellendenTabelle (hier: „Ausleihen-Archiv 1995“) ein. Wenn Sie möchten, können Sie dieseTabelle 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 9: Symbole für Aktionsabfragen

Abbildung 10: Tabellenerstellungsabfrage

Tabelle erstellen

Aktualisierung Anfügen

Löschen

Page 20: MS Access 2.0 für Fortgeschrittene

14 Access 2.0 für Fortgeschrittene

frage zusammengestellt hatten, wird in eine neue Tabelle mit dem angegebenen Namengespeichert.

3.5.2. Aktualisierungsabfrage

Wenn Sie Daten in Ihren Tabellen in großem Umfang verändern möchten, wählenSie das Symbol für „Aktualisieren“ aus der Symbolleiste. Access fügt in den unterenBereich des Entwurfsfensters eine Zeile „Aktualisieren“ ein, in die Sie den Ausdruckfür den neuen Wert des Feldes eintragen können. Sie können dort alles tun, was Sieauch in einem berechneten Feld einer Abfrage darstellen können (siehe unter 3.4 aufSeite 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 darfauch der Feldname des zu aktualisierenden Feldes auftauchen. Er steht dann für denalten 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), diein höchstens 10 Tagen ablaufen und noch nicht zweimal verlängert wurden, wird dasRückgabedatum um vier Wochen (28 Tage) verlängert und die Zahl der Verlängerun-gen um eins erhöht.

Hier sind drei K riterien (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“

Page 21: MS Access 2.0 für Fortgeschrittene

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 auseiner 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, diealle anzufügenden Felder enthält, wobei es praktisch, aber nicht zwingend ist, wenn Sieschon 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 derTabellenerstellungsabfrage – nach den Namen der Tabelle und der Datenbank, in diedie 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 dieFeldnamen der Zieltabelle enthält, an die die jeweili gen 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 siejetzt 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 K riterien aus IhremBestand löschen. Ein Beispiel ist das Löschen aller Ausleihinformationen aus demJahre 1995, die Sie ja oben in 3.5.1 archiviert haben. Dafür sieht die zugehörigeLö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üssendann eine Aktualisierungsabfrage verwenden, die in die entsprechenden Felder denfesten 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, eswerden 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.

Page 22: MS Access 2.0 für Fortgeschrittene

16 Access 2.0 für Fortgeschrittene

Wenn Sie beispielsweise eine Abfrage erstellen möchten, die Ihnen pro Lesergruppedie 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. DasErgebnis wäre relativ unübersichtlich. Übersichtlicher geht das mit einer Kreuztabel-lenabfrage. Hierzu wählen Sie das Symbol „Kreuztabelle“ aus der Symbolleiste desAbfrageentwurfs. Es erscheint eine neue Zeile mit der Überschrift „Kreuztabelle“. Fürjedes Feld Ihrer Abfrage tragen Sie dort ein, welche Funktion es in der Kreuztabelleerfüllen soll:

• Zeilenüberschrift: Die Inhalte des entsprechenden Feldes werden als Zei-lenüberschriften verwendet. In einer Kreuztabelle können Sie mehrereZeilenüberschriften verwenden, die dann wie herkömmliche Gruppierun-gen verwendet werden. Im Beispiel (Abbildung 13) wurden die Monate alsZeilenüberschriften verwendet.

Hier wurde ein kleiner Trick verwendet, um aus dem Ausleihdatum nurden 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. ImBeispiel 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

Abbildung 12: Löschen archivierter Daten

Abbildung 13: Der Entwurf einer Kreuztabellenabfrage

Page 23: MS Access 2.0 für Fortgeschrittene

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, diezur 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, kannaber 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 derMonate gesorgt: Wenn nach dem Feld „Monat“ aufsteigend sortiert wür-de, würden die Monate alphabetisch nach ihrem Namen sortiert (alsoApril, Februar, ...), nicht nach der Reihenfolge im Jahr. Daher wurde vornenoch ein Feld „Sortiermonat“ eingefügt, in dem die Monate zusätzlich alszweistelli ge Zahl erscheinen (01, 02, 03...) und nach diesem (versteckten)Feld aufsteigend sortiert.

Die zweistelli ge 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 zurVerfügung, der aber voraussetzt, daß Sie bereits eine fertig gruppierte Auswahlabfrage(bis auf die Aggregatfunktionen) erstellt haben. So ist es auf jeden Fall schneller, wennSie 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ügenund alles nach bestimmten Kriterien-Parametern ausgeben lassen. Im Ergebnis wirdman wohl sagen können, daß alle Fra-gen, die Sie an Ihre Datenbank formulie-ren können, mit Hilfe von Abfragen rea-lisierbar sind.

4. Vertiefung: Formulareund Berichte

Der nächste „große“ Brocken in Accesssind die Formulare und Berichte, mit de-nen Sie Daten in ansprechender Formein- bzw. ausgeben lassen können. Spe- Abbildung 14: Kreuztabellenabfrage

Page 24: MS Access 2.0 für Fortgeschrittene

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 dieMechanismen der referentiellen Integrität alleine nicht ausreichen, sondern beispiels-weise bei einer Eingabe des Benutzers in ein Feld zugleich andere Felder in anderenTabellen 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 dereinzelnen 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 derEntwurfsansicht.

4.1. Das Eigenschaftenfenster

Hoffentlich ist Ihnen im Verlauf Ihrer Arbeit mit Formularen in Access schon einmaldas „Eigenschaftenfenster“ über de Weg gelaufen. Um zu wissen, was es eigentlichdarstellt, muß man ein bißchen darüber Bescheid wissen, wie Access Formulare undBerichte verwaltet: Access ist ein Entwicklungssystem für objektorientierte Anwen-dungen. Das klingt ziemlich kompliziert, ist es aber nicht. Es bedeutet lediglich, daß

die einzelnen Formulare und auch dieeinzelnen Steuerelemente eines For-mulars getrennte Objekte sind, diemiteinander nicht viel zu tun haben,sondern ein richtiges Eigenleben füh-ren.

Jedes solche Objekt hat bestimmte Ei-genschaften; am einfachsten ist dasfür die Größe, die Position und dasAussehen (Schriftart etc.) zu verste-hen. Es gibt jedoch viel mehr, bis zu60 Eigenschaften pro Steuerelement.Sie können sich alle davon mit demsog. Eigenschaftenfenster anzeigenlassen (Menü Ansicht/Eigenschaften,

Klick auf das Eigenschaften-Symbol der Symbolleiste im Formular- bzw. Berichts-

entwurf ( ) oder durch Doppelklick auf ein Steuerelement) und sie darin verändern.Im Eigenschaftenfenster werden immer die Eigenschaften des gerade ausgewählten

Abbildung 15: Das Eigenschaftenfenster

Page 25: MS Access 2.0 für Fortgeschrittene

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 obenim Eigenschaftenfenster die gewünschte Art von Eigenschaften auswählen. Es gibt

• Daten-Eigenschaften: Alle Eigenschaften, die dafür sorgen, daß dasSteuerelement bzw. das Formular die richtigen Daten zur richtigen Zeitanzeigt. In den meisten Fällen werden diese Eigenschaften von Assistentengesetzt (z.B. Formularassistenten).

• Layout-Eigenschaften: Diese Eigenschaften bezeichnen das Aussehen desObjekts, 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. Hierfindet 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ürdiese Schaltfläche ein. Wenn Sie darauf reagieren möchten (z.B. ein Makrostarten), 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 dieserGruppen paßt, also zum Beispiel der Name des Steuerelements (wichtig,wenn mit dem Inhalt ein anderes Feld berechnet werden soll), der Text, derin der Statuszeile angezeigt werden soll, wenn das Steuerelement aktiv istetc.

4.2. Die Palette

Wenn Sie das Aussehen Ihrer Steuerele-mente und Ihres Formulars verändernmöchten, bedienen Sie sich dazu am ein-fachsten der Palette (Abbildung 16), die diewichtigsten Grundfunktionen für das Lay-out enthält. Die weiteren Einstellungen wieSchriftart, -größe und -Stil finden Sie in derSymbolleiste zum Formularentwurf.

In der Palette können Sie in der ersten Zeilevon Symbolen den Rahmenstil (vertieft,erhöht oder normal) und dessen Dicke und

Linienart (durchgezogen, gestrichelt oder gepunktet) bestimmen. Außerdem können

Abbildung 16: Die Palette

Page 26: MS Access 2.0 für Fortgeschrittene

20 Access 2.0 für Fortgeschrittene

Sie im übrigen Teil dieFarben für Text, Hinter-grund und Rand einstel-len, wobei die besondereFarbe „Transparent“ be-deutet, daß der Rahmenbzw. der Hintergrundnicht dargestellt werden,sondern auf das, was da-hinter steht, durchblickenlassen. Für den Hinter-grund ist das meistensempfehlenswert.

4.3. Steuerelemente

Im folgenden werden Sie die am häufigsten verwendeten Steuerelemente kennenler-nen. Sie werden deren Optik schon von anderen Windows-Anwendungen kennen. InAccess können Sie alle Elemente verwenden, die Sie kennen, um Daten darzustellenoder 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, startetautomatisch 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 ungebundenenFeld z.B. das aktuelle Datum anzeigen lassen oder von einem Benutzer Informationen,die Sie nur vorübergehend benötigen, eintragen lassen.

4.3.1. Textfelder

Am häufigsten sind Textfelder anzutref-fen. In ihnen werden alle Text- undZahleneingaben abgewickelt. Access

verwendet solche Textfelder standardmäßig, wenn Sie ein Feld aus der Feldliste in dasFormular 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 (odermit der Maus hineinklicken). Es gelten die üblichen Windows-Konventionen, es wirdalso der markierte Textteil gelöscht und überschrieben, wenn Sie lostippen (inAbbildung 18 würde also nach Druck auf die Taste „A“ nur noch ein A darin stehen.

Abbildung 17: Die Toolbox

Abbildung 18: Ein Textfeld

Bezeichnungsfeld

OptionsgruppeOptionsfeld

Kombinationsfeld

Diagramm

Objekt (ungebunden)

Linie

Seitenumbruch

Assistent

Textfeld

Umschaltfläche

Kontrollkästchen

Listenfeld

Unterformular

Objekt (gebunden)

RechteckBefehlsschaltfläche

Feststellen

Page 27: MS Access 2.0 für Fortgeschrittene

4. Vertiefung: Formulare und Berichte 21

4.3.2. Kombinations- und Listenfelder

Kombinations- und Listenfelder sind praktisch, wenn dem Benutzer die Eingabe vonDaten erleichtert werden soll. Sie bekommen Ihre Liste aus einer eigenen Daten-quelle, sind also unabhängig von der Datenherkunft des Formulars. Der Unterschiedzwischen Kombinations- und Listenfeldern besteht darin, daß bei Listenfeldern die Li-ste ständig angezeigt wird (und Platz verbraucht), bei Kombinationsfeldern hingegennur 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 eineAbfrage oder direkt aus einer Tabelle aus der Datenbank ausgelesen. Diesgeschieht 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 Assistentenerstellt 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 einerListe 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 inder 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 Steuerelementleichter 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 Feldnamender 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 essich, darauf noch etwas genauer einzugehen. Sie können ohne weiteres eine mehrspal-tige L iste 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 mitanzuzeigen, aber tatsächlich die Signatur (als Fremdschlüssel in der Ausleihen-Tabelle)einzutragen, erstellen Sie als Datenherkunft für ein Kombinationsfeld eine Abfrage, dieaus 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

Page 28: MS Access 2.0 für Fortgeschrittene

22 Access 2.0 für Fortgeschrittene

möchten, sondern nur mit Titeln arbeiten wollen (wobei natürlich die Signatur imHintergrund als Fremdschlüssel eingetragen werden muß), ändern Sie die Spaltenbreiteder ersten Spalte auf 0 cm (in der Eigenschaft „Spaltenbreiten“, wo die Breiten derSpalten 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 L isteneinträge: Wenn diese Eigenschaft auf „Ja“ gestellt ist, akzep-tiert Access in diesem Feld nur Werte, die auch in der Liste stehen. Beidem 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, indenen Sie zwischen verschiedenen Möglichkeiten wählen können (siehe Abbildung19) Im Gegensatz zu Kombinations- oder Listenfeldern sind bei Optionsgruppen dieMöglichkeiten fest vorgegeben und können nicht dynamisch aus Tabellen ausgelesenwerden. Außerdem können Sie Optionsgruppen nur zur Darstellung von Zahlenwertenverwenden.

Eine Optionsgruppe besteht aus dem Rahmen (das ist die Optionsgruppe im eigentli-chen Sinne) und den einzelnen Optionsfeldern (hier: „Student“, „Professor“, „Ex-tern“), die eigene Objekte mit eigenen Eigenschaften darstellen.

In Access erhält jedes einzelne Element einer Options-gruppe einen Optionswert (eine Ganzzahl), der in dergleichnamigen 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 Optionsfelderund Umschaltflächen, aber keine Kontrollkästchen in Optionsfeldern! Kontrollkästchensind nach der Windows-Definition nur da zu verwenden, wo Sie mehrere Optionengleichzeitig aktivieren können. Das geht aber in Access-Optionsgruppen nicht.

Abbildung 19: Optionsgruppe

Page 29: MS Access 2.0 für Fortgeschrittene

4. Vertiefung: Formulare und Berichte 23

4.3.4. Bezeichnungsfelder

Bisher wurden die Bezeichnungsfelder still schweigend mit verwendet, ohne näher aufsie einzugehen: Wenn Sie ein Steuerelement aus der Toolbox erstellen, erstellt Accessim 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 durchdie Tastenkombination Alt+<Unterstrichener Buchstabe>. Wenn der Text vor einemSteuerelement 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 sowesentlich benutzerfreundlicher gestalten. Dazu müssen Sie nur im Beschriftungstextvor 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 ameinfachsten 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 demBenutzer 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 aktiviertemAssistenten 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 zurStandard-Schaltfläche Ihres Formulars zu machen (diese wird mit dickerem Randdargestellt und reagiert auf die Eingabetaste), indem Sie die Eigenschaft „ Bei Einga-betaste“ auf „Ja“ setzen. Auch wenn Sie Ihre Schaltfläche als Abbruch-Schaltflächeverwenden 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.

Page 30: MS Access 2.0 für Fortgeschrittene

24 Access 2.0 für Fortgeschrittene

Für später, wenn Sie einmal Ihr erstes Makro geschrieben haben, gibt es noch eineeinfache 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 Abfragebasieren, sondern können auch aus verschiedenen Feldern berechnet werden. Dazutragen Sie in die Eigenschaft „ Steuerelementinhalt“ des zu berechnenden Steuere-lements zunächst ein „=“ ein, und dann die Formel für die Berechnung. Möchten Siebeispielsweise in einem Textfeld eines Formulars den Preis, der im Feld „Stückpreis“(Eigenschaft „Feldname“ des Formularfeldes oder das entsprechende Feld der Tabelleoder 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ück preis] *0,15 .

Sie können dabei sogar auf Werte in anderen Formularen zugreifen, indem Sie denvollen „Pfad“ zu dem entsprechenden Steuerelement eintragen. Wenn Sie also denSteuersatz nicht fest vorgeben wollen, sondern in einem anderen Formular„Allgemeines“, das gerade geöffnet ist, im Feld „Steuersatz“ eingetragen haben, lautetdie Formel =[Stück preis]*[For mulare]![All gemei nes]![Steu er -

satz] .

Hierbei dienen die Ausrufezeichen dazu, den Pfad vom sog. Eltern-Objekt zumKind-Objekt anzuzeigen: „Formulare“ ist ein Eltern-Objekt, das als „Kinder“ allemomentan geöffneten Formulare, also auch das Formular „Allgemeines“ enthält. DasFormular „Allgemeines“ ist wiederum Eltern-Objekt zum Steuerelement „Steuersatz“,das in ihm enthalten ist. Zwischen dem Eltern- und dem Kind-Objekt muß immer einAusrufezeichen 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 alsTrennzeichen verwenden: =[Kombi].[Da tensatzher kunft] .

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 anderesals 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 [For mula -

re]![Aus leihen]![Aus lei hen_U].[For mular]![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 wennman es einmal abgetippt hat, geht es schon besser.

Page 31: MS Access 2.0 für Fortgeschrittene

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“ eingetragenwird. 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 eineOptionsgruppe 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 Formelergibt 1, wenn der Umsatz größer als 10.000 ist, und 2, wenn nicht. Je nach dem Inhaltdes 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 jeweili ge Wert in der aktiven Abfrage oder im aktivenFormulars 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" [; " K riterien" ]): Ermittelteinen einzelnen Wert aus einer Domäne (oder berechnet ihn, wenn Sie eineFormel eingeben). Beispiel: DomWert("Lesergruppe"; "Leser";"[Leser-Nr] = Forms!Ausleihen![Leser-Nr]") ermitteltdie Lesergruppe des Lesers, der gerade im Formular „Ausleihen“ angezeigtwird.

• DomAnzahl(" Feldname/Formel" ; " Domäne" [; " K riterien" ]): Be-stimmt die Anzahl von Datensätzen in der angegebenen Domäne, die dieangegebenen Kriterien erfüllen. Wenn Sie keine Kriterien angeben, wirddie 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 auchaus den Gruppierungen in Abfragen kennen.

Beispielsweise könnten Sie in das Formular „Lesereingabe“ ein Feld aufnehmen, dasdie 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]").

Page 32: MS Access 2.0 für Fortgeschrittene

26 Access 2.0 für Fortgeschrittene

Bitte beachten Sie, daß Sie bei der Eingabe von Kriterien in Domänenfunktionen nurdie 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, „Bedingungenin Makros“ auf Seite 42.

4.3.8. Die Feldreihenfolge

Wenn Sie jetzt in eigene Formulare ein paar Steuerelemente eingefügt haben und in dieFormularansicht gewechselt sind, ist Ihnen vielleicht aufgefallen, daß die Reihenfolge,in der die Felder mit der Tabulator-Taste angesprungen werden, der chronologischenReihenfolge 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önnenSie entweder in der Liste aller Feldnamen die Reihenfolge von Hand festlegen, oderSie klicken auf die Schaltfläche „ Automatisch“ , damit Access die Reihenfolge auto-matisch von links nach rechts und von oben nach unten festlegt. Theoretisch könntenSie 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 kurzerklärt werden. Weitere Informationen erhalten Sie, wie immer, in der Online-Hi lfe,indem Sie die fragwürdige Eigenschaft im Eigenschaftenfenster aktivieren, und dannF1 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 Seite48 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 Siemit 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 dieDaten für das Formular zur Verfügung stellen. Sie können

Page 33: MS Access 2.0 für Fortgeschrittene

4. Vertiefung: Formulare und Berichte 27

Eigenschaft Beschreibung

diese Datenquelle bearbeiten, indem Sie auf die Schaltflächemit den drei Punkten klicken, die hinter der Eigenschaft ange-zeigt werden. Der SQL-Code wird vom Formularassistentenerzeugt.

Beschriftung Enthält den Text, der in der Titelleiste des Formulars in derFormularansicht angezeigt wird.

Bildlaufleisten Gibt an, welche Bildlaufleisten (Rollbalken, Scrollbars) in Ih-rem Formular angezeigt werden: Horizontal, vertikal, beideoder 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 ästhetischeFrage: Wenn Sie ein Formular darstellen, das lediglich alsDialogbox 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 derMenüleiste entfernen und die Tastenkombination Shift+Leer-taste abfangen (siehe unten Abschnitt 6.6, „Ändern der Ta-staturbelegungen“ auf Seite 58).

Navigationsschalt-flächen

Gibt an, ob die Navigationsschaltflächen am unteren Formu-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 unddas Design Ihrer Anwendung verbessern. Beispielsweise wur-de in der Beispielanwendung für das Hauptmenü-Formular dieRahmenart auf „keiner“, sowie die drei anderen Eigenschaftenauf „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

Page 34: MS Access 2.0 für Fortgeschrittene

28 Access 2.0 für Fortgeschrittene

Eigenschaft Beschreibung

Bereiche angezeigt werden. Wenn Sie beispielsweise für dieerste Seite eines Berichts einen anderen Kopf wünschen als fürdie folgenden, sollten Sie den Kopf für die erste Seite in denBerichtskopf eintragen, den für die folgenden Seiten in denSeitenkopf, 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 Formularin 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 mitGruppierungen arbeiten; wird am Beginn jeder neuen Gruppe angezeigt),„Detailbereich“ (für jeden einzelnen Datensatz), und dann die drei ersten noch einmalals 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,Vergrößerbar

Diese Eigenschaften geben an, ob der Bereich „schrumpft“,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 erforderlichwird. 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

Page 35: MS Access 2.0 für Fortgeschrittene

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 berechnetesSteuerelement einen Namen trägt, der mit einem Feldnamender 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 desSteuerelements schon auf dessen Inhalt zugreift, dafür diesenaber erst berechnen muß etc... Im Formular erscheint dann„#Fehler!“ .

Steuerelementinhalt Gibt an, an welches Feld der Datenherkunft das Formular dasSteuerelement gebunden ist. Hier ist der Platz, um den Aus-druck für eine Berechnung einzutragen.

Format,Eingabeformat,Gültigkeitsregel,Gültigkeitsmeldung

Entspricht den gleichnamigen Eigenschaften im Tabellenent-wurf: Format steht also für die Art der Datenausgabe, Einga-beformat, Gültigkeitsregel und Gültigkeitsmeldung für dieEingabemaske, nach der der Benutzer Daten eingeben muß.Diese Eigenschaften gelten natürlich nur bei der Eingabe überdas 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 Formularangelegt wird.

Der Unterschied ist, daß der Standardwert im Tabellenentwurffü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 desSteuerelements.

Statuszeilentext Enthält den Text, der in der Statuszeile am unteren Bild-schirmrand angezeigt wird, während das Steuerelement aktivist. 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, Siekönnen aber dennoch per Makro Veränderungen des Wertesvornehmen oder in berechneten Feldern darauf verweisen.

Aktiviert, Gesperrt Beide sind genauso praktisch: Um ein Steuerelement zwar an-

Page 36: MS Access 2.0 für Fortgeschrittene

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 Steuerelementgrau dargestell t wird und ebenfalls nicht verändert werdenkann; die zweite Einstellung alleine läßt zwar den Cursor nochin das Steuerelement setzen (z.B. um darin zu suchen), abererlaubt ebenfalls keine Änderungen am Inhalt.

In Reihenfolge Wenn Sie diese Eigenschaft auf „Nein“ setzen, wird das Steu-erelement nicht in der Standard-Tabulator-Reihenfolgeangesprungen, sondern kann nur direkt mit der Maus odermit der Tastaturabkürzung angesprochen werden. VerwendenSie diese Einstellung z.B. für Befehlsschaltflächen.

Vergrößerbar,Verkleinerbar

Erlaubt es dem Steuerelement, zu „schrumpfen“, wenn keineDaten in ihm enthalten sind, bzw. vertikal zu „wachsen“, wenndie Daten den vorgegebenen Rahmen sprengen. Sehr hilfreichin Berichten, wenn Daten nicht abgeschnitten sondern umbro-chen werden sollen.

Wenn Sie „Vergrößerbar“ bei einem Steuerelement auf „Ja“setzen, wird automatisch die gleiche Eigenschaft beim zuge-hörigen Berichtsbereich auch auf „Ja“ gesetzt.

Layout-Eigenschaften Alle diese Eigenschaften verändern Sie am einfachsten mit derPalette (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 selbstnoch nie gebraucht.

5. Einführung in die Makroprogrammierung

Wenn Sie alles berücksichtigt haben, was Sie bis hierher gelernt haben, brauchen IhreAnwender 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 inRichtung Benutzerfreundlichkeit: Die Makroprogrammierung.

Page 37: MS Access 2.0 für Fortgeschrittene

5. Einführung in die Makroprogrammierung 31

5.1. Was sind Makros?

Makros sind im Prinzip nichts als aneinander gehängte Benutzerbefehle, die Accessautomatisch 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 wiez.B. in WinWord, wo Sie ein Makro einfach aufzeichnen können, das dann gespeichertund 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 Aktionhat 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 undstehen dann im Datenbankfenster in der Kategorie „Makros“.

Für eine größere Datenbankanwendung benötigen Sie ohne weiteres einmal 100 odermehr einzelne kleine Makros, die Formulare öffnen, Daten filtern, Fenster schließen,automatisch Werte anpassen etc. Damit Ihr Datenbankfenster nicht überläuft und Sienoch 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 einersog. „ Makrogruppe“ zusammenzufassen, die dann am besten noch den Namen deszugehö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

Page 38: MS Access 2.0 für Fortgeschrittene

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 Kombinationsfeldzur Verfügung, so daß Sie sich die Aktionsnamen nicht merken müssen. Die meistenNamen 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-Hi lfezu dieser Aktion und ihren Parametern zu sehen.

Im Detailbereich unten links im Bild werden die einzelnen Parameter für die geradeausgewä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ß mansich 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 Ihnenvielleicht gar nicht auf. Sie können Sie über die Symbolleiste mit den Symbolen

„Makronamen“ ( ) bzw. „Bedingungen“ ( ) anzeigen lassen.

„Makronamen“ enthält die Namen von Makros innerhalb einer Makrogruppe.Wenn Sie ein Makro alleine abspeichern (nicht in einer Makrogruppe), dann benötigenSie die Spalte „Makronamen“ nicht, sondern speichern einfach das gesamte Makrounter 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ürden entsprechenden Leser, der gerade im Lesereingabe-Formular aktiv ist.

Außerdem ist die Spalte „ Bedingungen“ sehr interessant: Sie können für eine Aktionbestimmen, daß sie nur dann ausgeführt wird, wenn eine bestimmte Bedingung erfülltist. Dazu kommt aber später mehr im Abschnitt 5.4, Bedingungen in Makros, auf Seite42.

5.3. Die wichtigsten Aktionen

Hier werden Ihnen kurz die wichtigsten Aktionen, die Sie zum Arbeiten brauchen, mitihren Parametern vorgestellt. Falls Sie weitergehende Fragen haben, finden Sie dieAntworten in der Online-Hi lfe zum Thema „Aktionen“, wo Sie auch ein komplettesAktionsverzeichnis mit allen 47 Aktionen finden. Die vergleichsweise geringe Anzahlvon Aktionen darf nicht darüber hinweg täuschen, daß Sie damit praktisch alle Benut-

Page 39: MS Access 2.0 für Fortgeschrittene

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 wirklichlö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 vorallem, wenn Sie geschachtelte Bedingungen verknüpfen wollen(s.u.). Einziger wichtiger Parameter: Name des auszuführendenMakros

AusführenMenü-befehl

Führt einen beliebigen Access-Menübefehl aus. Das ist dievielseitigste 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 Makroaus aufrufen. Parameter sind:

• Menüleiste: Access stellt Ihnen bekanntlich überallverschiedene Menüleisten zur Verfügung (im Ta-bellenentwurf andere als in der Formularansichtetc.). 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 zurVerfü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

Page 40: MS Access 2.0 für Fortgeschrittene

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 bestimmteWerte ausgibt. Wichtigster Parameter ist „Meldung“: Er enthältden 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 inAbschnitt 5.4, „Bedingungen in Makros“ auf Seite 42)

ÖffnenAbfrage,ÖffnenBericht,ÖffnenFormular,ÖffnenTabelle

Diese Aktionen öffnen ein Access-Objekt des angegebenenTyps. Sie können jeweils den Namen des Objekts angeben,sowie den Modus (Entwurf, Datenblatt oder Seitenansicht).Wenn Sie Aktionsabfragen mit dieser Aktion öffnen, werdensie ausgeführt. Beim Öffnen von Berichten und Formularenkönnen Sie zusätzlich einen Filter oder eine Bedingung ange-ben, der bzw. die nur bestimmte Daten ausgibt. Im Beispiel vonAbbildung 20 wurde als Bedingung folgender Text eingegeben:

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

Das bewirkt, daß hier beim Öffnen des Formulars „Ausleihen“nur der Datensatz des Lesers angezeigt wird, der gerade auchim Lesereingabe-Formular aktiv ist.

Bei Formularen können Sie außerdem einen Fenstermodus vor-geben. Das ist vor allem dann wichtig, wenn Sie unmittelbarnach dem Schließen des mit der Aktion geöffneten Formularseine 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 Formularsnicht 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 inFormeln 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 einemzentralen Ort speichern, wo Sie den Wert nur einmalig ändernmüssen. Dafür öffnen Sie ein Formular „ Allgemeines“ o.ä.,das diese Werte enthält, zu Beginn der Anwendung ausgeblen-

Page 41: MS Access 2.0 für Fortgeschrittene

5. Einführung in die Makroprogrammierung 35

Aktion Beschreibung

det, und greifen in Berechnungen nur auf Werte aus diesemFormular zu

Schließen Schließt ein Objekt. Wenn Sie keine Parameter angeben, wirddas aktive Objekt geschlossen, ansonsten das, welches Sie mitden Parametern festlegen.

SetzenWert Das ist die wichtigste Aktion für Datenveränderung. Mitdieser Aktion können Sie jeden beliebigen Wert eines Steuere-lements und sogar einer Steuerelementeigenschaft verändern.

Das ist zum einen interessant, um auf Knopfdruck bestimmteWerte in bestimmte Felder einzutragen, um den BenutzernArbeit zu ersparen, zum andern kann über die Veränderung vonEigenschaften 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 derneue Wert des Elementes oder der Eigenschaft, der auch eineFormel enthalten und so Werte aus anderen Steuerelementenmit einbeziehen kann (hier muß ausnahmsweise das =-Zeichenam Beginn der Formel weggelassen werden).

StopAlleMakros,StopMakro

Diese beiden Aktionen dienen dazu, die Ausführung des aktu-ellen bzw. aller momentan laufenden (wenn mit der Aktion„AusführenMakro“ weitere Makros gestartet wurden) Makrosabzubrechen. Häufig wird diese Aktion nach der Aktion„AbbrechenEreignis“ verwendet, um jegliche Aktivität ersteinmal zu stoppen, beispielsweise, wenn der Benutzer bei einerSicherheitsabfrage „Abbruch“ gewählt hat.

SuchenDatensatz,SuchenWeiter

Mit dieser Aktion können Sie einen Access-Suchbefehl ausfüh-ren lassen. Die Parameter kennen Sie alle aus dem „Suchen“-Dialogfeld, das Sie mit dem Menübefehl „Bearbeiten/Suchen“erhalten.

Es empfiehlt sich, vor der Ausführung dieser Aktion zuerst mitder Aktion „ GeheZuSteuerelement“ zu dem Steuerelementzu 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ö-

Page 42: MS Access 2.0 für Fortgeschrittene

36 Access 2.0 für Fortgeschrittene

Aktion Beschreibung

tigen Tasten, die dann gedrückt werden sollen, können Sie vordieser „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 („DieseAbfrage wird Daten verändern. Fortfahren?“), unterdrücken.

Seien Sie aber vorsichtig mit dieser Aktion und vergessen Sienie, am Ende Ihres Makros die Warnmeldungen wieder einzu-schalten, weil sonst an anderer Stelle, wo Sie es vielleicht gernehä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 abernur unter bestimmten Umständen ausgeführt werden; z.B. soll bei der Auslei-henerfassung eine Fehlermeldung erscheinen soll, wenn ein gerade ausgeliehenes Buchein 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“

Page 43: MS Access 2.0 für Fortgeschrittene

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 derBenutzer eine neue ausgeliehene Signatur eingetragen hat und das Feld dann verlassenwill (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, undder Ausleihvorgang wird abgebrochen.

Wie Sie sicher noch aus dem Abschnitt 3.2.2 auf Seite 11 wissen, ist ein Buch dannausgeliehen, wenn es einen passenden Datensatz in der Tabelle „Ausleihen“ gibt, beidem das Feld „Zurückgegeben“ auf „Nein“ steht. Hier können Sie nun Ihr Wissen überDomänenaggregatfunktionen aus Abschnitt 4.3.7, „Die Domänenfunktionen“ aufSeite 29 zum Einsatz bringen: Die Bedingung, unter der die Fehlermeldung angezeigtwerden soll, lautet nämlich:

DomAnzahl("[Ausleihen-ID]"; "Ausleihen"; "Ausleihen.Sig -natur = Forms!Ausleihen!Auslei hen_U.Form!Sig natur ANDAusle i hen.[Zurückgegeben] = No") >= 1

Die Bedeutung dieser Bedingung ist nicht auf den ersten Blick zu durchschauen. DieDomAnzahl-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 Benutzermitteilt, 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überauch 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, dasSpeichern des Datensatzes also verweigert, und schließlich mit „StopMakro“ dieAusfü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 auchfü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ächedarstellen kann, ist die Funktion Meldung viel flexibler:

Das erste Argument ist der Text, der in dem Meldungsfenster erscheinen soll. Danachkommt, durch einen Strichpunkt getrennt, der Typ der Meldung, der sich aus verschie-denen Detaili nformationen zusammenaddiert. Für nähere Informationen steht Ihnen dieOnline-Hi lfe zur Funktion „Meldung“ gerne zur Verfügung. Im Beispiel bedeutet die

Page 44: MS Access 2.0 für Fortgeschrittene

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 derBenutzer 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 demUnterformular 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ätermehr). Wenn nun der Benutzer einen Datensatz löschen möchte und damit das Makrostartet, ü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-Tastegeraten ist, wird der gesamte Vorgang mit AbbrechenEreignis und StopAlleMakrosabgebrochen.

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 werdenkann, daß eine bestimmte Bedingung vorliegt, nicht daran, daß sie nicht vorliegt. Dasist von erheblicher Bedeutung, wenn Sie etwa noch Aktionen vornehmen möchten,wenn der Benutzer in der von Ihnen angezeigten Sicherheitsabfrage „Ja“ ausgewählthat.

Dafür existiert leider kein „Geheimcode“ wie die drei Punkte für die Fortsetzung einerBedingung. Im Beispiel von Abbildung 21 wurde das aber durch einen einfachen Trickrealisiert: Wenn die Bedingung der Sicherheitsabfrage eintritt (der Benutzer also„Nein“ gewählt hat), wird zuletzt die Aktion „ StopMakro“ ausgeführt, so daß dasMakro 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 alleSchlüsselwörter, die auch bei der Kriteriendefinition verwendet wurden, ebenfalls ver-wenden, insbesondere mehrere Bedingungen mit „ Und“ und „ Oder“ v erknüpfen.Alles weitere erfahren Sie in der Online-Hi lfe zum Thema „Ausdrücke in Bedingun-gen“.

Page 45: MS Access 2.0 für Fortgeschrittene

6. Programmflußkontrolle 39

6. Programmflußkontrolle

Mit den Makros haben Sie jetzt schon das Grundhandwerkszeug zur Kontrolle desProgrammflusses in der Hand. Wie Sie vielleicht schon gemerkt haben, macht Accesseiniges 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 Accessmöglich ist.

Programmflußkontrolle bedeutet in diesem Zusammenhang, daß Sie „alles in der Handhaben“, also über jede Benutzeraktion wachen, so daß der Benutzer nicht in irgend-welche falschen Systemzustände gelangen kann, die ihn nichts angehen. Im Regelfallmuß z.B. mit allen Mitteln verhindert werden, daß ein Benutzer im Entwurfsmoduseines Formulars landet. Dann bräuchte er nämlich einen Access-Kurs, um dort wiederherauszukommen 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 ernicht ausführen kann oder soll; auch das Datenbankfenster darf den durchschnittlichenBenutzer einer Datenbankanwendung nicht interessieren (müssen).

Vollständige Sicherheit Ihrer Datenbankanwendung ist ebensowenig möglich wie beieinem 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); dasist aber nicht mehr Teil der Programmflußkontrolle.

6.1. Starten der Anwendung

Die Programmflußkontrolle beginnt bereits mit dem Starten von Access selbst. WennIhre Benutzer wirklich unbedarft sind, sollten Sie Ihnen im Programm-Manager einIcon zur Verfügung stellen, das Access Sofort mit Ihrer Datenbankanwendungstartet, 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

Page 46: MS Access 2.0 für Fortgeschrittene

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 Sieden 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 indas Feld „Befehlszeile“ nur den Namen der Datenbank hinten anfügen sowie die„Beschreibung“ ändern). Das Arbeitsverzeichnis muß das Verzeichnis sein, in dem IhreDatenbank 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 anderesauswä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 nochwird einfach nur das Datenbankfenster geöffnet, und nichts weiter passiert. Hier setztjetzt die echte Flußkontrolle ein: Sie können ein Makro schreiben, das automatischausgefü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 Sieselbst als Formular designen können. Der Name dieses Makros ist fest vorgegeben undlautet „ AutoExec“ . Wann immer Sie also ein Makro unter diesem Namen speichern,wird es sofort beim Laden der Anwendung ausgeführt. Seien Sie daher vorsichtig mitdiesem Makro, weil es schwer zu umgehen ist! Ein Fehler dort kann sehr viel Ärgerverursachen.

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 designendeHauptmenü-Formular zu öffnen.

Hier können Sie natürlich noch ganz andere Sachen machen, z.B. eine Liste aller zumahnenden Bücher mit ÖffnenAbfrage (Mahnungen) darstellen oder bereits die ferti-gen Mahnungen ausdrucken mit ÖffnenBericht (Berichtsname Mahnungen, AnsichtDruck) und mit einer Aktualisierungsabfrage die Ausleihvorgänge als gemahnt markie-ren.

Page 47: MS Access 2.0 für Fortgeschrittene

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 kontrolli eren, können Siez.B. das Ausblenden des Datenbankfensters beim Administrator vermeiden, indem Sievor diese Aktion die Bedingung Nicht Benutzer()="Admin" setzen, oder Siekö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 Kli ck auf die Schaltfläche „ OK“ die li nke 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.ä.) aufsehr 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 nurnoch ein Formular von Ihnen geöffnet ist, in dem Sie bestimmen, was getan wird. Nunwird es Zeit, die ominösen „Ereignisse“, von denen schon so oft die Rede war, genauerzu betrachten:

Es wurde bereits darauf hingewiesen, daß die meisten Benutzeraktionen sich in sog.„Ereignissen“ niederschlagen bzw. „Ereignisse“ auslösen. Für Formulare, Berichte undSteuerelemente 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 dasEreignis „Beim Klicken“ nur in diesem Steuerelement ausgelöst, nicht etwa in demFormular, 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 diesemKurs zwei besprochen werden:

1. Ein Makro aufrufen. Das ist die übersichtlichste Möglichkeit, um auf einEreignis 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 Steuerelementassistenteneine Befehlsschaltfläche einfügen, die ein Formular mit einem bestimmtenDatensatz öffnet, erstellt der Assistent dafür leider kein Makro mit derAktion „ÖffnenFormular“ (was Sie natürlich von Hand am einfachsten tunwürden), sondern er schreibt eine Funktion in Access BASIC, die dasselbetut. 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

Page 48: MS Access 2.0 für Fortgeschrittene

42 Access 2.0 für Fortgeschrittene

Steuerelementassistenten erstellen, sollten Sie zu verstehen lernen, damitSie 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 lassenkönnen. Diese Funktionen haben den Vorteil, daß sie (im Gegensatz zuEreignisprozeduren) universell in verschiedenen Formularen und Steuere-lementen einsetzbar sind. Außerdem sind sie schneller als Makros, und siekönnen ihnen Parameter übergeben. Das kann aber in diesem Kurs nichtmehr erklärt werden.

6.3.1. Die wichtigsten Ereignisse

Hier finden Sie nun eine Liste der wichtigsten Ereignisse für Formulare, Berichte undSteuerelemente, mit einer kurzen Beschreibung. Für alle anderen erfahren Sie genaue-res in der Online-Hi lfe, indem Sie eine Ereigniseigenschaft im Eigenschaftenfensterauswählen und F1 drücken. Die Ereigniseigenschaften heißen übrigens immer gleichwie 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 Datensatzwechselt, sowie, wenn das Formular geöffnet wird, also dererste 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 Feldesausführen.

Nach Eingabe Tritt ein, wenn der Benutzer einen neuen Datensatz hinzu-gefügt hat und diesen gerade abspeichern will . Wenn Sie inanderen 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 hatund diesen verlassen möchte, bevor dieser Datensatz gespei-chert wird. Wenn Sie Gültigkeitskontrollen durchführenmö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-

Page 49: MS Access 2.0 für Fortgeschrittene

6. Programmflußkontrolle 43

Ereignis Beschreibung

tensatzes verhindern. In Reaktionen auf dieses Ereignis dürfenSie keine Werte des Datensatzes ändern, weil er noch nichtgespeichert ist.

Nach Aktualisierung Tritt ein, nachdem der Benutzer einen veränderten Daten-satz gespeichert hat, aber bevor er in einen neuen Datensatzwechselt. Hier dürfen Sie wieder Werte im Datensatz ändernund 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 inMakros, auf Seite 42)

Vor Löschbestätigung Tritt ein, bevor die Meldung „Sie haben gerade x Daten-sätze gelöscht...“ erscheint. Mit einer besonderen Ereig-nisprozedur kann diese Meldung unterdrückt werden, wennSie eine eigene Sicherheitsabfrage durchführen möchten (siehedazu den Abschnitt 6.3.3, „Ereignisprozeduren“ auf Seite 52).

Übrigens sollten Sie das immer tun, wenn Sie beim Löschenbestimmte Dinge aktualisieren möchten, weil Sie leider keinEreignis 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üformularsnach einer Sicherheitsabfrage Access selbst beenden.

Bei Fehler Tritt ein, wenn in Access ein Datenbankfehler auftritt, wennz.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 miteinem kleinen Kniff wie bei „Vor Löschbestätigung“ die Feh-lermeldung unterdrücken.

Page 50: MS Access 2.0 für Fortgeschrittene

44 Access 2.0 für Fortgeschrittene

6.3.1.2. Berichtsereignisse

Das war ein Überblick über die wichtigsten Formularereignisse. Die Berichtsereignissewerden hier nicht extra aufgeführt, weil sie alle bereits bei den Formularereignissenerwä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. Dasist die letzte Gelegenheit, bestimmte Felder anhand bestimmter Bedingungen ein- oderauszublenden (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 Berichtenwerden 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 dasFeld verläßt, nicht erst dann, wenn der Benutzer den geän-derten Datensatz verläßt.

Bei Änderung Dieses Ereignis tritt mit j edem Tastendruck erneut ein, dender 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 Befehlausgefü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 dasgleiche 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 Listedes Kombinationsfeldes steht.

Wenn Sie auf dieses Ereignis reagieren (was Sie mit einerEreignisprozedur tun sollten, weil Access dort den Text, den

Page 51: MS Access 2.0 für Fortgeschrittene

6. Programmflußkontrolle 45

Ereignis Beschreibung

der Benutzer einträgt, übergibt, und Sie die Fehlermeldungunterdrücken können), können Sie beispielsweise den vomBenutzer neu eingegebenen Wert mit in die Liste aufnehmenetc. 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 zumgröß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ünschtenSteuerelements 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 IhrMakro Teil einer Makrogruppe ist, wird dann nur die Makrogruppe geöffnet, und Siemüssen selbst zu Ihrem Makro scrollen.

Für das Beispielmakro aus Abbildung 21 tragen Sie einfach in die Eigenschaft „VorAktualisierung“ des Steuerelementes „Signatur“ im Formular „Ausleihen_U“ den Ma-kronamen „Ausleihen. CheckBuch“ ein (vorausgesetzt, Sie haben die Makrogruppeunter 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 einenAusleihvorgang 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 istein „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 inProgrammierung allgemein eindenken.

Page 52: MS Access 2.0 für Fortgeschrittene

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 unddem 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 Sieselbst auslesen oder auch verändern können, z.B. um eine folgende Fehlermeldung zuunterdrü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 nebender 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 AsInteger)

End Sub

Sie sind nun schon mitten in Access-BASIC gelandet. Die erste Zeile bedeutet, daß Sieeine 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“), unddanach der englische Name für das Ereignis, dessen Prozedur Sie gerade bearbeiten(Vor Löschbestätigung = BeforeDelConfirm). Die wundersamen Worte in Klammernsagen 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-Hi lfe zu dieser Ereignisprozedur erfährt man, daß man beide Para-meter selbst verändern kann, und Access sich dementsprechend verhält: Wenn Sie dieVariable „Cancel“ auf „True“ (wahr, bzw. „Ja“) setzen, bewirkt dies das gleiche, wiewenn 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

Page 53: MS Access 2.0 für Fortgeschrittene

6. Programmflußkontrolle 47

alles sein lassen und die Warnmeldung anzeigen, als wäre nichts gewesen (indem Siesie auf DATA_ERRDISPLAY setzen).

Im Beispiel möchten Sie ja gerade, daß das Löschen normal durchgeführt wird, ohnedaß 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 gefragtwerden. Also setzen Sie Response auf DATA_ERRCONTINUE und lassen Cancelunverändert, so daß Ihre Ereignisprozedur so aussieht:

Sub Form_BeforeDelConfirm (Cancel As Integer, Response AsInteger) Response = DATA_ERRCONTINUEEnd Sub

Das war’s auch schon, was ich zu Ereignisprozeduren zu sagen hatte (der Rest ist fürSpezialisten in der Online-Hilfe zu den entsprechenden Ereignissen erklärt).

Wenn Sie aus diesem kryptischen Chaos entfliehen möchten, gelingt Ihnen das, indemSie das Codefenster einfach schließen.

6.4. Benutzerdefinierte Menüleisten

Allerdings ist Ihre Anwendung damit noch längst nicht gegen hartnäckige Benutzerabgesichert. 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 inder Tabelle und nicht im Formular zu ändern; dann werden ja die Ereignisse nichtaktiviert , so daß die Makros auch nicht aufgerufen werden.

Sie müssen also den Benutzer von allen unerwünschten Befehlen fernhalten. Dazumü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, nichtangezeigt wird.

Dazu stellt Access einen praktischen Assistenten zur Verfügung, der allerdings nichtganz perfekt ist, so daß ein bißchen Nachbearbeitung nötig sein wird. Aber wenn Siewissen, daß in Access benutzerdefinierte Menüleisten auch nichts anderes sind alsMakros 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 dieSchaltflä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önnennämlich praktischerweise alle Standard-Access-Menüleisten sich vornehmen und Stückfür Stück verändern, also alle unerwünschten Befehle entfernen und ein paar eigeneeinfügen.

Für Ihre Hauptmenüleiste lohnt sich das aber nicht, Sie fangen lieber ganz neu damitan, wählen also „Leere Menüleiste“ und fahren fort. Sie finden sich im Menü-Editor

Page 54: MS Access 2.0 für Fortgeschrittene

48 Access 2.0 für Fortgeschrittene

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 ausdem Abschnitt 4.3.4, Bezeichnungsfelder, auf Seite 27 kennen; sie dienen auch hierdazu, 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, dieoben 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 besondereBefehl „ -“ 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 ersteMenüpunkt der Menüleiste „Datei“ heißt, und ein Feld „Beenden“ enthält, mit dem Siedie 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 dieDatenbankanwendung anzuzeigen, werden sie die Grenze bemerken, von der ich ge-sprochen habe: Sie können aus unerfindlichen Gründen im Menü-Editor nur die dreiAktionen „AusführenMenübefehl“, „AusführenCode“ (zum Ausführen eigener Ac-cess-BASIC-Funktionen) und „AusführenMakro“ verwenden. Das ist ziemlich lästig,

Abbildung 23: Der Menü-Editor

Page 55: MS Access 2.0 für Fortgeschrittene

6. Programmflußkontrolle 49

weil Sie für jeden kleinen Menübefehl ein eigenes Makro schreiben müßten, das Siedann 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 Argumentvon „AusführenMakro“ freilasse, dann den Menüeditor beende, wobei der Editor dannverschiedene 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 desMenü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ß imMakro „&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“, dieAccess 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üleistenicht mehr mit dem Menü-Editor nachbearbeiten kann, sondern das von Hand in denentsprechenden Makros erledigen muß.

Wenn Sie übrigens Untermenüs verwenden möchten, rücken Sie einen Menüpunkteinfach 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 denEingabeformularen nehmen Sie als Ausgangsmenüleiste am besten die Menüleiste„ Formular“ , damit Sie die Standard-Funktionen im Menü „Bearbeiten“, die Sie sichergerne in Ihre Menüleiste übernehmen möchten, schon vorgefertigt vorliegen haben undnur noch gefährliche Befehle ausblenden. Besonders gefährlich sind:

• aus dem Menü „ Datei“ z.B. „Neues Objekt erstellen“, „Add-Ins“, „Makroausfü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 vonDaten wiederzufinden, und

• und aus „ Fenster“ vor allem „Einblenden“, sonst blendet ein Benutzerganz keck das Datenbankfenster, das Sie in AutoExec ausgeblendet haben,wieder ein.

Außerdem sollten Sie, wenn Sie nicht eine eigene Online-Hi lfe zur Verfügung stellen,das ?-Menü entsprechend anpassen.

Page 56: MS Access 2.0 für Fortgeschrittene

50 Access 2.0 für Fortgeschrittene

Das war aber eigentlich schon alles, was Sie zur Erstellung eigener Menüleisten wissenmüssen.

Halt! Eines noch für die Perfektionisten unter Ihnen: Der Benutzer kann noch durchdie 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 hinsoll, oder gar ein Klick auf das Symbol für das Datenbankfenster , und es taucht ausseiner Versenkung wieder auf.

6.5.1. Standardsymbolleisten verstecken

Einzige Abhilfe: Sie müssen die System-Symbolleisten abschalten. Das geht mit demMenü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 Sieganz 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, Symbolleistenanzupassen (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 Seite46) 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, undschließ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 aufgerufenwerden 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

Page 57: MS Access 2.0 für Fortgeschrittene

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 blendenerst 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 erhalteneine Dialogbox, in der Sie auf der linken Seite verschiedene Kategorien von Befehlensehen, und rechts die dazugehörigen Symbole. Ziehen Sie alle Symbole, die Sie in IhrerSymbolleiste 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 derLeiste ein oder zwei Millimeter nach rechts ziehen (nicht so weit, daß es über denRand 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 dieBefehle 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 VerhaltenIhres Symbols). Außerdem können Sie angeben, daß das Symbol statt eines BildesText 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 denAnpassen-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 Benutzerngesichert. Für einen Access-Kenner gibt es aber noch eine Möglichkeit: Durch Druckauf die Taste F11 kann er jederzeit das Datenbankfenster hervorzaubern, egal, ob esausgeblendet oder nur hinter anderen Fenstern verborgen hat. Und wie leicht kommtein anderer Benutzer einmal mit der Kaffeetasse auf diese Taste!

Also hilft nur eines: Tasten abfangen! Auch das geht wieder sehr einfach: Dafür gibt eseine 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

Page 58: MS Access 2.0 für Fortgeschrittene

52 Access 2.0 für Fortgeschrittene

die gleichen Sondercodes wie bei der Aktion „Tastaturbefehle“ verwenden können(näheres in der Online-Hilfe).

Für Ihren Fall heißt das also: Makroname ist {F11}, und als Aktion können Sie ent-weder gar nichts oder eine ironische Meldung („Na, na, ... wer wird denn gleich“ oderähnliches) eintragen.

Auf diese Art können Sie auch eigene Tastenkürzel definieren, um Arbeitsabläufe zubeschleunigen. 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 Datenbankfenstermit F11 zu öffnen, indem Sie für ihn eine Aktion eintragen, die im Datenbankfensterirgendein Objekt auswählt (und so das Datenbankfenster mit einblendet), und den an-deren Benutzern eine freche Meldung anzeigen (das funktioniert natürlich nur, wennSie 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-Adminskommt)

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 kontrolli eren können, findenSie unten im Abschnitt 8.3, „Kontrolle über das Programmende“ auf Seite 67.

Page 59: MS Access 2.0 für Fortgeschrittene

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. Dazukö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 bestimmtenAusschnitt Ihrer Datenbankanwendung kommt.

Lassen Sie sich zu diesem Thema auch nicht die Online-Hi lfe zum Thema „SichernIhrer Datenbank“ entgehen. Sie ist außergewöhnlich ausführlich und enthält noch mehrInformationen ü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 Benutzerrechteund der Berechtigungen, die für die Gruppen, deren Mitglied er ist, eingetragen sind.Für jedes Objekt (Tabellen, Abfragen, Formulare, Berichte, Makros, Module) könnenSie einzeln bestimmen, welcher Benutzer (oder welche Benutzergruppe) welcheRechte haben soll. Es gibt die folgenden Rechte:

• Öffnen/Ausführen: Bei Formularen, Berichten, Makros und der gesamtenDatenbank.

• 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 inaller Regel für sich behalten, bzw. nur denjenigen Personen erlauben, dieselbst die Datenbankanwendung mit programmieren.

• Daten lesen: Die nötigste Berechtigung. Wer die nicht hat, kann nicht mitIhrer 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 anbestimmten Objekten zuzuteilen und zu verändern. Dieses Recht solltedem 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 diesesRecht erteilt haben oder nicht. Er darf es schon allein deswegen, weil er Mitglied einerGruppe ist, die dieses Recht hat.

Page 60: MS Access 2.0 für Fortgeschrittene

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, ohnedaß er davon wußte, immer als „Admin“ angemeldet, so daß er immer alle Rechtehatte.

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, dieeigentlich nur Lese-Rechte haben, in eine Gruppe „Nur Lesen“ zusammenfassen, sodaß 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 solltenSie ruhig so lassen, und (der Praktikabili tä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 Verwaltungsaufgabenunter dem Namen „Admin“ anmelden, und für die „normale“ Anwendertätigkeit nachwie 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 Siedies wollen, lesen Sie bitte im Abschnitt 7.3, „Bestmögliche Datensicherheit“ auf Seite63 nach!

Die zweite Gruppe, „ Gäste“ , wird von Access standardmäßig vollkommen rechtlosgestellt. Das ist auch gut so. Benutzer, die lediglich dieser Gruppe angehören, habenüberhaupt keine Gruppenrechte, sondern nur die ausgesuchten Rechte, die Sie ihnenpersönlich zuweisen.

Die dritte Gruppe schließlich, „ Benutzer“ , bekommt von Access standardmäßig ausunerfindlichen Gründen alle Rechte bereits als Gruppenrechte, ist also der Gruppe„Administratoren“ gleichgestellt. In der Praxis empfiehlt es sich, dieser Gruppe dieStandard-Benutzerrechte einzutragen, also das Leserecht für alle Objekte, falls Sienicht bestimmte Tabellen (wie z.B. Patientendaten) gesondert schützen wollen. WennSie dann die einzelnen Benutzer nur dieser Gruppe zuordnen, haben Sie schon einengesunden Stamm an Rechten, den Sie dann für jeden Benutzer entsprechend erweiternkönnen, also jedem in den Tabellen, die seinem Aufgabengebiet angehören, ein Aktua-lisierungs-, Einfüge- und Löschrecht einzuräumen.

Page 61: MS Access 2.0 für Fortgeschrittene

7. Benutzerverwaltung 55

Falls Sie das so handhaben möchten, kommen Sie ohne die Erstellung einer eigenenBenutzergruppe aus. Falls nicht, könnten Sie eine neue Gruppe erstellen, indem Sieden 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 geschiehtmit dem Menübefehl „Zugriffsrechte/Benutzer“. Es erscheint die Dialogbox ausAbbildung 24. Um einen neuen Benutzer anzulegen, klicken Sie auf die Schaltfläche„Neu“. In der folgenden Dialogbox tragen Sie den Namen des Benutzers ein, unterdem er sich anmelden wird, Außerdem verlangt Access eine persönliche Identifikati-onskennung (PID), die den Benutzer intern spezifiziert. Diese PID kann 20 Zeichenlang sein und aus Buchstaben und Zahlen bestehen, wobei Groß- und Kleinschreibungunterschieden werden. Merken Sie sich Name und PID sehr gut; am besten schreibenSie beides auf einen Zettel und verwahren diesen an einem sicheren Ort, weil Sie diePID exakt brauchen, um ein Benutzerkonto zu rekonstruieren, falls der Benutzer bei-spielsweise einmal sein Paßwort vergessen hat, oder falls der Benutzer in eine andereAccess-Arbeitsgruppe übernommen werden soll.

Nach Bestätigung dieses Dialogfeldes landen Sie wieder in dem Fenster aus Abbildung24; dort können Sie jetzt im unteren Teil festlegen, welchen Gruppen bzw. welcherGruppe der neue Benutzer angehören soll (Noch einmal: Damit „erbt“ er zwingend alleRechte, 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

Page 62: MS Access 2.0 für Fortgeschrittene

56 Access 2.0 für Fortgeschrittene

tiges Problem, wenn Sie Ihre Daten wirklich schützen möchten: Jeder beliebigeMensch mit Zugriff auf Ihren Rechner bzw. Ihr Netzwerk könnte die Datenbankdateikopieren und bei sich zuhause installi eren, 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 (insbesonderemuß 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 kannjeder, der in der Lage ist, die Datenbankdatei zu kopieren und bei sich zuhause Accesszu installieren, die Daten lesen!!

Richten Sie also einen Benutzer ein (nennen Sie ihn ruhig „Verwalter“), der eine ganzbesonders geheime PID bekommt. So sicher, wie Sie diese PID aufbewahren, sind IhreDaten! 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 keineRechte in Ihrer Datenbank haben. Ersetzen Sie also auch diese Gruppen mit dem obenbeschriebenen Verfahren durch eigene mit eigener PID, die ebenfalls besonders geheimsein muß und entziehen Sie den Original-Gruppen alle Rechte an Ihren Objekten.

Dann hat nur noch jemand, der Zugang zu den PIDs Ihrer selbstdefinierten Benutzerund 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 vergebenkö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 eineListe 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ügbarenBerechtigungen für das aktuell ausgewählte Objekt und den aktuell ausgewählten Be-nutzer bzw. die Gruppe.

Page 63: MS Access 2.0 für Fortgeschrittene

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 Listeoben links die Gruppe auswählen, für die Sie Berechtigungen vergeben möchten, dannzuerst 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. „NeueFormulare“ 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 Rechteeinzeln 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ätentfaltet und Rechte aktiviert, die Sie gar nicht ausgewählt haben. Hier handelt es sichum Rechte, die unabdingbare Voraussetzung für ein von Ihnen ausgewähltes Rechtdarstellen (z.B. wird automatisch das Recht „Entwurf lesen“ mit eingetragen, wenn Siedas Recht „Daten lesen“ aktivieren).

7.5. Benutzerverwaltung in einem Netzwerk

Wenn Sie Access auf einem Netzwerk einsetzen (was sehr wahrscheinlich ist, wenn Siebereits Benutzerkonten vergeben), dann müssen Sie noch darauf achten, daß alle Be-nutzer auf die gleiche Systemdatenbank (system.mda) zugreifen. Dazu muß dieseDatei 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 Accessarbeiten, 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

Page 64: MS Access 2.0 für Fortgeschrittene

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 installi ert haben) mit Hilfedes 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 demgleichen Verzeichnis, in dem auch Access selbst installi ert ist, unter dem Namen„wrkgadm.exe“.

Starten Sie dieses Programm, und wählen Sie die Schaltfläche „Anschließen“. TragenSie 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, mitanderen 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, sondernauf die Netzwerkversion zugegriffen wird. Lassen Sie sich dabei bitte von IhremNetzwerk-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 SieIhre Datenbankanwendung noch professioneller gestalten können, falls Sie Zeit dafürhaben. 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 SieDinge 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 kleineSchmankerl:

• 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); stattdessen können Sie den Namen Ihrer Anwendung eintragen.

Beide Dinge werden nicht in Access selbst, sondern in der Datei „ msacc20.ini“ , die inIhrem Windows-Verzeichnis liegt, geregelt. Öffnen Sie diese Datei mit einem EditorIhres Vertrauens (z.B. indem Sie im Windows-Datei-Manager auf den Dateinamen„msacc20.ini“ doppelklicken)

Page 65: MS Access 2.0 für Fortgeschrittene

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.bmpTitleBar=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 Beginnder Ausführung von Access statt des Standard-Fensters mit dem Access-Symbol unddem Programmnamen angezeigt.

Außerdem wird die Titelzeile des Access-Bildschirms (die standardmäßig auf„Microsoft Access“ lautet) hier auf „Bibliotheksverwaltung“ gesetzt; auch da tragenSie natürlich die Überschrift ein, die Sie gerne hätten.

Speichern Sie dann diese Datei mit Ihrem Editor; beim nächsten Start von Accesswerden 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 aufIhrem PC liegen). Die INI-Dateien der anderen Teilnehmer auf dem Netzwerk sinddavon 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 dahereine Weile dauern, können Sie dem Benutzer die Zeit ein bißchen vertreiben, indemSie unten in der Statusleiste einen blauen Balken darstellen lassen, der den Ar-beitsfortschritt in Prozent anzeigt. Dazu gibt es eine Access-BASIC-FunktionSysCmd, 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 dortaufrufen; 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 Fortschrittsanzeigerdargestellt; 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. Hierbeibestimmt der Quotient aus AktuelleAnzahl und MaxAnzahl, wie viel Pro-zent des gesamten Arbeitsablaufes bereits passiert sind. Wenn Sie ganzpräzise Prozentzahlen ausgeben möchten, können Sie als MaxAnzahl 100wählen, so daß Sie bei AktuelleAnzahl immer genau die Prozente eintragenkönnen.

Page 66: MS Access 2.0 für Fortgeschrittene

60 Access 2.0 für Fortgeschrittene

• Um am Ende die Statuszeile wieder zurückzusetzen, müssen Sie dieFunktion SysCmd(3) aufrufen. Vergessen Sie das nicht, sonst ist Ihrvoller 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 Versehenzu 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 nichtmehr, was zu tun ist.

Dafür müssen mehrere Dinge realisiert sein:

1. Das Hauptmenü-Formular darf nicht geschlossen werden können, es seidenn, Access wird gleich mitgeschlossen.

2. Die Tastenkombination Alt+F4 darf nur nach einer Kontrollabfrage zumBeenden 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 brauchenSie ein unsichtbares (ausgeblendetes) Formular , das der Benutzer weder einblendennoch 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 IfEnd Sub

Das macht folgendes: Wenn der Wert des Steuerelements „BeendenErlauben“ ungleich„True“ ist (sprich: Das Kontrollkästchen ist nicht aktiviert), wird eine Kontrollabfrageangezeigt, 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

Page 67: MS Access 2.0 für Fortgeschrittene

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 ausgeblendetgeöffnet wird (im Makro „AutoExec“ mit der Aktion „ÖffnenFormular“, Fenstermo-dus „Ausgeblendet“).

Der nächste Schritt ist, das Hauptmenü am Geschlossen-Werden zu hindern. Dazuwird ebenfalls eine Ereignisprozedur an das Ereignis „Bei Entladen“ geknüpft, die dasSchließ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=FalseThen Cancel = True End IfEnd 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 derBenutzer schließen könnte. Aber der Tastaturbefehl Ctrl+F4 könnte das Formularnoch schließen, was hiermit unterbunden ist.

Bleibt als letztes noch der Menüpunkt „Datei/Beenden“, der in die Menüleiste desHauptmenüs gehört. Dessen Makro sollte folgendermaßen aussehen:

Bedingung Aktion

Meldung("Wirklich beenden?";36; "Bibliothek") =6

SetzenWert (Formulare![Unsichtbares Formular]!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 installi ert werden,außer Kraft gesetzt werden, und dann wird die Aktion „Beenden“ aufgerufen, die Ac-cess dann reibungslos verläßt.

Page 68: MS Access 2.0 für Fortgeschrittene

Stichwortverzeichnis

(Hauptfundstellen sind jeweils fett gedruckt)

— # —

#Fehler! 29

— A —

Abfragen 5, 22, 27Aktionsabfragen 13Aktualisierungsabfrage 14, 41Anfügeabfrage 15Assistent 18Auswahlabfragen 5Berechnete Felder 12Daten sortieren 5Datensätze zusammenfassen 5, 9, 16Entwurfsansicht 5, 7, 12Kreuztabellenabfrage 15Kriterien 6, 7, 10, 15, 17Kriterien verknüpfen 7, 10, 15Löschabfrage 15Mit Makro öffnen 34Mit Makro schließen 35Parameterabfragen 10Pfeilsymbol in Beziehung 9Symbolleiste 13Tabelle erstellen 13Variable Kriterien 10

AccessOriginaldokumentation 1Version 7.0 1

Administrator 56

Administratoren (Gruppe) 55

Aggregatfunktionen 5Anzahl 5, 8, 17Domänenfunktionen 26Max 9Mittelwert 6Summe 6

Aktionen 31, 32, 33AbbrechenEreignis 33, 36, 38, 39, 43AktualisierenDaten 22AusführenCode 49AusführenMakro 33, 36, 49

AusführenMenübefehl 34, 36, 41, 49, 53AuswählenObjekt 53Beenden 34, 62GeheZuSteuerelement 36HinzufügenMenü 48Meldung 34, 38, 53ÖffnenAbfrage 34, 41ÖffnenBericht 34, 41ÖffnenFormular 31, 34, 41, 42, 61ÖffnenTabelle 34Parameter 31Schließen 35SetzenWert 35, 44, 62StopAlleMakros 36, 38StopMakro 36, 38, 39, 53SuchenDatensatz 36SuchenWeiter 36Tastaturbefehle 36, 51, 53Warnmeldungen 36

Aktualisierungsabfrage 14

Alt (Tastenkombinationen) 24

Anfügeabfrage 15

Anzahl (Aggregatfunktion) 8, 17

Arbeitsgruppe 58

Arbeitsgruppen-Administrator 58

Archiv erstellen 13

AssistentenAutoFormular 4Befehlsschaltflächenassistent 24Einspaltiges Formular 4Gruppierung 5Haupt-/Unterformular 4Kombinationsfeldassistent 23Kreuztabellenabfrage 18Listenfeldassistent 23Menü-Editor 48Optionsgruppenassistent 23Steuerelementassistenten 20Tabellarische Darstellung 5

Ausdruck1 (Feldname) 12

Ausdrücke siehe Formeln

AutoFormular 4

Page 69: MS Access 2.0 für Fortgeschrittene

64 Access 2.0 für Fortgeschrittene

— B —

BedingungenVariable Bedingungen 10Verknüpfen (in Makros) 39

Beenden von Access 34

Befehlsschaltfläche Siehe Steuerelemente

Befehlsschaltflächenassistent 24

Beispieldatenbank 2Abfrage „Ausleihinformationen“ 4Abfrage „Ausleihstatistik“ 5Abfrage „Inventurliste“ 8Abfrage „Leserinformationen“ 4Abfrage „Leserstatistik“ 5Abfrage „Pauschalverlängerung“ 14Abfragen 5Bericht „Ausleihstatistik“ 5Bericht „Mahnungen“ 5Berichte 5Beziehungen 4Formular „Ausleihen“ 4Formular „Büchereingabe“ 4Formular „Lesereingabe“ 4Formulare 4Tabelle „Ausleihen“ 4Tabelle „Bücher“ 3, 4Tabelle „Leser“ 3, 4Tabelle „Lesergruppen“ 3Tabellenstruktur 3

Benutzer (Gruppe) 55

Benutzer() (Funktion) 41, 53

Benutzerkennung 54

Benutzerverwaltung 53Administrator 53, 55, 56Arbeitsgruppe 58Benutzer rekonstruieren 56Benutzergruppen 55Benutzerkonten einrichten 54Berechtigungen 53Berechtigungen zuweisen 57Datenschutz 57Grundprinzipien 53Gruppen anlegen 55Gruppenberechtigungen 54, 56Netzwerkinstallation 58PID 56system.mda (Datei) 56, 58Systemdatenbank 56, 58

Berechtigungen 53

Bereiche

Berichtskopf 28Eigenschaften 28Seitenkopf 28

Berichte 18Assistenten 18Bereiche 28Eigenschaften 28Eigenschaftenfenster 19Entwurfsansicht 18Ereignisse 42, 44Mit Makro öffnen 34Mit Makro schließen 35Palette 20Seitenkopf 28Toolbox 20

Bezeichnungsfeld Siehe Steuerelemente

Beziehungen1:n-Beziehung 22Alle Datensätze einer Tabelle anzeigen8Equi Join 9Fremdschlüssel 22Gleichheitsverknüpfung 9Inklusionsverknüpfung 8, 9Outer Join 9Pfeilsymbol 9Verknüpfungseigenschaften 8

— D —

DatenAn Tabelle anfügen 15Archivieren 13Aus Makros verändern 35, 36Automatisch ändern 14Automatisch löschen 15Einzelne Felder löschen 15Mit Makro suchen 36Numerisch sortieren 17

DatenbankBeispieldatenbank 2Berechtigungen 53Datenbankanwendungen 2Normalisierung der Tabellen 1Planung 1

DatensätzeGruppieren 5, 9Gruppierung 5

Datenschutz 56Im Netzwerk 58

DatentypenDatum/Zeit 11

Page 70: MS Access 2.0 für Fortgeschrittene

Stichwortverzeichnis 65

Text 4, 11Zahl 11Zä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 19Aktiviert 30Andere Eigenschaften 20Automatisch ergänzen 23Beschriftung 27Bildlaufleisten 27Daten-Eigenschaften 19Datenherkunft 22, 27Datensatzmarkierer 27Eingabeformat 30Ereignis-Eigenschaften 20Ereigniseigenschaften 42Format 30Gebundene Spalte 22Gesperrt 30Gültigkeitsmeldung 30Gültigkeitsregel 30Herkunftstyp 21In Reihenfolge 30Kategorien 19Kontextmenü 50Layout-Eigenschaften 19, 20, 27, 31Mit Max Schaltfläche 28Mit Min Schaltfläche 28Mit Systemmenüfeld 28Name 29Navigationsschaltflächen 28Nur Listeneinträge 22Optionswert 23, 25Rahmenart 28Reihenfolgenposition 27Seitenfuß 28Seitenkopf 28Sichtbar 30, 35, 36Spaltenanzahl 22

Spaltenbreiten 22Standardwert 30, 60Statuszeilentext 30Steuerelementinhalt 25, 29Steuerelementname 60Vergrößerbar 29, 31Verkleinerbar 29, 31

Eigenschaftenfenster 19

Eingabe der Parameterwerte (Fenster) 11

Eingabeaufforderung 11

Einspaltiges Formular 4

Eltern-Objekt 25

Equi Join 9

EreignisAblauf abbrechen 33

Ereignisprozedur 61

Ereignisprozeduren 42, 44, 45, 46, 61

Ereignisse 20, 41Bei Änderung 45Bei Entladen 61Bei Fehler 44Bei Nicht In Liste 45Beim Anzeigen 43Beim Doppelklicken 45Beim Formatieren 44Beim Klicken 20, 42, 45Beim Löschen 33, 38, 43, 46Beim Öffnen 44Beim Schließen 44Liste 42Nach Aktualisierung 43, 45Nach Eingabe 43Vor Aktualisierung 43, 45, 46Vor Löschbestätigung 43, 46

— F —

Feldliste 18, 21

Feldreihenfolge 26

Flußkontrolle 27, 28, 39Beenden der Anwendung 60Eigene Menüleisten 48Starten der Anwendung 40

Flußkontrolle.Das Makro „Autoexec“ 41

Format() (Funktion) 16, 18

Formeln 12, 25, 29, 30, 34, 38, 39In Formularfeldern 25Verweise auf Steuerelemente 25Werte aus der Datenbank ermitteln 26

Page 71: MS Access 2.0 für Fortgeschrittene

66 Access 2.0 für Fortgeschrittene

Formulare 18Assistenten 18, 19Bereiche 28Datensatzmarkierer 27, 28Dialogfeld 27, 28Eigenschaften 27Eigenschaftenfenster 19Entwurfsansicht 18Ereignisse 42, 43Feldliste 18, 21Feldreihenfolge 26, 30Fensterrand 28Mit Makro öffnen 34Mit Makro schließen 35Navigationsschaltflächen 28Palette 20Rollbalken 27Titelleiste 27Toolbox 20Unterformular 25Verstecken 34, 35

FormularfelderFormeln 25

Fremdschlüssel 22

Funktionen 7

— G —

Gäste (Gruppe) 55

Gleichheitsverknüpfung 9

Gruppierung 5

— H —

Haupt-/Unterformular 4

— I —

Inklusionsverknüpfung 8, 9

— J —

Ja (Schlüsselwort) 9

— K —

Kind-Objekt 25

Kombinationsfeld Siehe Steuerelemente

Kombinationsfeldassistent 23

Kreuztabellenabfrage 15

Kriterien

Parameterabfragen 10Schlüsselwörter 6Variable Bedingungen 6Verknüpfen 6, 7, 10, 15

— L —

Linienart 20

Listenfeld Siehe Steuerelemente

Listenfeldassistent 23

Löschabfrage 15Einzelne Felder löschen 15

— M —

Makros 15, 20, 22, 31, 39Aktionen 32Alternativbedingungen 39Aufruf durch Ereignisse 42, 45Aus Makros ausführen 33, 34Ausführung durch Befehlsschaltfläche24AutoExec 41, 50, 51, 61Bedingungen 33, 37, 41Bedingungen übernehmen 38Beispiel 32Einführung 31Entwurfsansicht 32Grundbausteine 31Kommentare 32Makrogruppen 32, 46Makronamen 33Sicherheitsabfragen zur Steuerung 38Symbolleiste 33Tastaturbelegung 52Testen 34

Max (Aggregatfunktion) 9

Meldung (Aktion) 34

Meldung() (Funktion) 38

MenübefehleAus einem Makro ausführen 34

Menüleisten 27, 28, 48„Gefährliche“ Befehle 50Assistent 48

Menüs 34

Monat aus Datum extrahieren 16

msacc20.ini (Datei) 59

Mustersuche 6

Page 72: MS Access 2.0 für Fortgeschrittene

Stichwortverzeichnis 67

— N —

Nein (Schlüsselwort) 9

Netzwerk 58

Nicht (Schlüsselwort) 6, 41

Normalisierung 1

Null (leeres Feld) 9

— O —

Oder (Schlüsselwort 7

Oder (Schlüsselwort) 6

Optionsfeld Siehe Steuerelemente

Optionsgruppe Siehe SteuerelementeInhalte berechnen 25

Optionsgruppenassistent 23

Outer Join 9

— P —

Palette 20, 31

Parameterabfragen 10, 14Eingabeaufforderung 11

Paßwort 54

Pauschalverlängerung 14

PID 56

Primärschlüssel 3

— R —

Rahmenstil 20

— S —

Schlüsselwörter 6< 6<= 6<> 6= 6> 6, 25>= 6, 37Englische Varianten 26Ja 9Nein 9Nicht 6Oder 6, 7Und 6, 7Wie 6, 11Zwischen...Und 6, 13

Shortcut 24

Shortcuts 24, 48

Sicherheitsabfragen 38

Spaltenüberschrift (Kreuztabelle) 16

Sperren von Steuerelementen 30

SQL 22, 27

Standardwert 30

Statuszeile 30

SteuerelementeAssistent 18, 20, 23Befehlsschaltfläche 24, 45Berechnete Felder 24, 29, 43Bezeichnungsfeld 23Eigenschaften 19, 29Eigenschaftenfenster 19Ereignisse 42, 44Hinzufügen 18, 20Kombinationsfeld 21, 23, 45Kontrollkästchen 60Layout 20Listenfeld 23, 45Optionsfeld 23, 25Optionsgruppe 4, 23, 25Rahmen 20Rahmen und Linien 20Schriftart etc. 20Sperren 30Textfeld 21, 25, 29Verstecken 30, 35, 36, 44Verweis in Formeln 25

SymbolleistenAnpassen 51Ausblenden 51Selber definieren 51Standard 50Standardsymbolleisten verstecken 50Symbole ändern 52Zwischenräume 51

SysCmd (Funktion) 60

system.mda (Datei) 56

Systemdatenbank 56

— T —

Tabellarische Darstellung 5

TabellenMit Makro öffnen 34Mit Makro schließen 35

Tabelleneintrag (Kreuztabelle) 17

Tabellenerstellungsabfrage 13

Page 73: MS Access 2.0 für Fortgeschrittene

68 Access 2.0 für Fortgeschrittene

Tabulator-Reihenfolge 27, 30

Tastaturabkürzungen 24, 48

Tastaturbelegung 52

Tastenanschläge imitieren 36

Text 4

Textfeld Siehe SteuerelementeDatenformat 30

Tippfehler 11

Toolbox 20, 24

— U —

Und (Schlüsselwort) 6, 7

UnterformularVerweis auf Steuerelemente 25, 37

— V —

Variable Bedingungen 6, 10

Vorkenntnisse 1, 5, 18

— W —

Wie (Schlüsselwort) 6, 11

WindowsAndere Anwendungen 20, 23Datei-Manager 59Programm-Manager 40Standarddefinitionen 23, 24, 45, 48

— Z —

Zähler 3

Zeilenüberschrift (Kreuztabelle) 16

Zeilenumbruch 29

Zusammenfassen von Datensätzen 5

Zwischen...Und (Schlüsselwort) 6, 13