Access 2007 Das Grundlagenbuch für Entwickler

Werbung
Andre Min hörst
Access 2007
Das Grundlagenbuch
für Entwickler
ADDISON-WESLEY
An imprint of Pearson Education
München • Boston • San Francisco • Harlow, England
Don Mills, Ontario • Sydney • Mexico City
Madrid • Amsterdam
Inhalt
Vorwort
27
Warum Access 2007?
31
1.1
32
33
35
36
37
37
37
38
38
39
40
40
40
40
41
41
42
42
43
43
43
43
44
44
44
44
45
45
45
46
46
47
47
47
48
48
48
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
1.10
1.11
1.12
1.13
1.14
•
1.15
Die Benutzeroberfläche
1.1.1
Navigationsbereich statt Datenbankfenster
1.1.2
Ribbon statt Menü- und Symbolleisten
1.1.3
Neuer Optionen-Dialog
1.1.4
Neuer Startbereich
1.1.5
Neue Onlinehilfe
Neues Datenbankformat
Runtime gratis
Goodbye Sicherheitssystem
Neue Sicherheitsfunktionen
Bye-bye Replikation
Adieu Datenzugriffsseiten
ACE - die neue Jet-Engine
MDI vs. SDI oder »Jedem Objekt sein Register«
Neuer Datentyp: Anlagefeld
Mehrwertige Felder
Weitere Neuigkeiten zu Felddatentypen und Steuerelementen
1.12.1 Rich-Text
*
1.12.2 Historie in Memofeldern
1.12.3 Datumssteuerelement
1.12.4 Schaltflächen mit Bild und Text
1.12.5 Kombinationsfelder und Listenfelder
1.12.6 Bildsteuerelement mit Steuerelementinhalt
1.12.7 Zu große Zahlen ersetzen
Neues in Tabellen
1.13.1 Alternative Hintergrundfarbe
1.13.2 Entwurf in der Datenblattansicht von Tabellen
Neues bei den Formularen
,
1.14.1 Layoutansicht
1.14.2 Geteilte Ansicht
1.14.3 Filtern und Sortieren
1.14.4 Berechnungen auf Spaltenbasis
1.14.5 Vereinfachtes Layouten
1.14.6 Verankern von Steuerelementen
1.14.7 AutoHeight für Formularbereiche
Neues bei Berichten
1.15.1 Berichtsansicht
Inhalt
2
1.15.2 Neues bei Makros
1.16 VBA
1.16.1 TempVars
1.16.2 VBA in Formularen, Steuerelementen, Berichten und DAO
1.17 Sonstige Neuheiten
1.17.1 Neuer Farbauswahldialog
1.17.2 ClearType-Fonts in Access
1.17.3 Neue Schriftarten
1.17.4 Import und Export
1.17.5 PDF-Export
1.17.6 Daten sammeln per E-Mail
1.17.7 SharePoint
49
49
50
52
52
52
52
53
53
53
53
54
Tabellen und Datenmodellierung
55
2.1
2.2
2.3
2.4
2.5
Techniken zur Datenmodellierung
2.1.1
Tabellen anlegen
2.1.2
Felder hinzufügen
2.1.3
Schlüssel festlegen
2.1.4
Eigenschaften festlegen
2.1.5
Beziehungen herstellen
2.1.6
Nachschlagefelder mit Wertliste
2.1.7
Tabelleninformationen im Überblick
Namenskonventionen für Tabellen und Felder
2.2.1
Tabellennamen
2.2.2
Feldnamen
Normalisierung
2.3.1
Die erste Normalform
2.3.2
Die zweite Normalform
2.3.3
Die dritte Normalform
2.3.4
Weitere Normalformen
2.3.5
Das richtige Maß treffen
Integritätsregeln
2.4.1
Integrität der Werte (Wertbereichsintegrität)
2.4.2
Format der Werte (semantische Integrität)
2.4.3
Abhängigkeit von Feldinhalten (Attributintegrität)
2.4.4
Eindeutige Datensätze (Entitätsintegrität)
2.4.5
Referentielle Integrität
Beziehungen
2.5.1
Benennen von Primär- und Fremdschlüsselfeldern
2.5.2
Halbautomatisches Festlegen von Beziehungen
2.5.3
Festlegen referentieller Integrität
2.5.4
l:n-Beziehungen
2.5.5
n:l-Beziehungen oder Lookup-Beziehungen
2.5.6
m:n-Beziehungen
2.5.7
l:l-Beziehungen
2.5.8
Reflexive Beziehungen
;
:
57
57
58
69
72
75
82
85
86
87
89
91
93
98
101
103
103
103
103
104
105
105
* 107
107
109
110
111
113
113
117
119
124
Inhalt
2.6
2.7
3
Autowerte als Long oder GUID?
Datenmodell-Muster
2.7.1
Adressen-/Kundenverwaltung
2.7.2
Rezepteverwaltung
2.7.3
Artikelverwaltung
2.7.4
CD-Verwaltung
2.7.5
Projektverwaltung
2.7.6
Mitarbeiterverwaltung
2.7.7
Literaturverwaltung
2.7.8
Mitgliederverwaltung
2.7.9
Urlaubsverwaltung
2.7.10 Aufgabenverwaltung
2.7.11 Projektzeitverwaltung
2.7.12 Kunden und Weihnachtsgeschenke
2.7.13 Fahrtenbuch
127
128
128
131
132
134
136
136
138
138
140
141
143
144
145
Abfragen
147
3.1
3.2
3.3
148
149
151
151
152
153
153
154
3.4
3.5
3.6
3.7
3.8
3.9
Anlegen von Abfragen mit Access 2007
Abfragen mit Anlage-Feldern und mehrwertigen Feldern
Verwendung von Abfragen als Datensatzquelle oder Datensatzherkunft
3.3.1
Tabelle als Datensatzquelle
3.3.2
SQL-Ausdruck als Datensatzquelle
3.3.3
Gespeicherte Abfrage als Datensatzquelle
3.3.4
Datensatzquelle per VBA zuweisen
3.3.5
Parameter statt Zusammensetzen von SQL-Ausdrücken
3.3.6
Abfragen mit Parameter oder zusammengesetzte
SQL-Ausdrücke?
3.3.7
Probleme mit Kriterienausdrücken bei SQL-Ausdrücken in VBA
3.3.8
Zeichenkette oder Zahlenwert?
3.3.9
Probleme mit Datumsangaben
3.3.10 Verweis auf Steuerelemente
Aktualisierbarkeit von Abfragen
3.4.1
Wie erkennen Sie, ob das Abfrageergebnis aktualisierbar ist?
3.4.2
Nicht aktualisierbare Abfragen
UNION-Abfragen
3.5.1
UNION-Abfragen zur Optimierung von Kombinationsfeldern
3.5.2
Eindeutige Schlüssel mit UNION-Abfragen
3.5.3
INSERTINTO mit UNION-Abfragen
Suchen in m:n-Beziehungen
Handhabung von l:l-Beziehungen
Extremwerte per Abfrage ermitteln
3.8.1
Extremwert einer Gruppierung ermitteln
3.8.2
Extremwert per TOP und ORDER BY
3.8.3
Extremwerte per Unterabfrage
3.8.4
Extremwerte von Gruppierungen
Datensätze mehrfach anzeigen
158
158
158
160
162
162
163
163
165
165
167
168
169
172
177
177
178
178
179
181
Inhalt
3.10 Nummerierung von Datensätzen
3.10.1 Alternative: Nummerieren per Unterabfrage
3.10.2 Nummerierung von Abfrageergebnissen mit alternativen
Sortierungen
3.10.3 Nummerierung von Abfrageergebnissen mit eingeschränkten
Ergebnismengen
3.11 Reflexive l:n-Beziehungen
3.12 Reflexive m:n-Beziehungen
4
184
184
184
186
Formulare
187
4.1
188
188
192
196
198
201
204
205
206
206
4.2
4.3
4.4
4.5
4.6
4.7
4.8
10
182
183
Formulare in Access 2007
4.1.1
Anlegen eines Formulars
4.1.2
Formularansichten
4.1.3
Geteilte Formulare
4.1.4
Hilfreiche Funktionen für den Formularentwurf
4.1.5
Sonstige Neuerungen
4.1.6
Formularvorlage
Formulare öffnen
Ereignisse in Formularen und Steuerelementen
4.3.1
Ereignisse in Formularen
4.3.2
Abfolge und Bedeutung der Ereignisse beim Öffnen und Schließen
eines Formulars
4.3.3
Abfolge und Bedeutung der Ereignisse beim Bearbeiten von
Datensätzen
Ereignisse von Steuerelementen
Abbildung verschiedener Beziehungsarten
4.5.1
Einfache Daten in der Detailansicht
4.5.2
Einfache Daten in der Übersicht mit Endlosformularen
4.5.3
Einfache Daten in der Übersicht als Datenblatt
4.5.4
Daten in der Übersicht als Listenfeld
4.5.5
l:l-Beziehungen
4.5.6
n:l-Beziehungen
4.5.7
l:n-Beziehungen
4.5.8
l:n-Beziehung per Unterformular und Datenblattansicht
4.5.9
l:n-Beziehung per Listenfeld
4.5.10 m:n-Beziehungen in Haupt- und Unterformular
4.5.11 m:n-Beziehungen per Listenfeld
4.5.12 Reflexive Beziehungen
Von Formular zu Formular
Besonderheiten von Unterformularen
4.7.1
Eingabe von Daten ohne Detaildatensatz
4.7.2
Undo in Haupt- und Unterformular
Eingabevalidierung
4.8.1
Validieren direkt bei der Eingabe
:.
4.8.2
Validieren vor dem Speichern
4.8.3
Sonderfälle beim Validieren
209
210
212
216
216
220
224
229
231
232
233
234
238
240
246
253
256
260
260
262
275
275
276
279
Inhalt
4.9
5
Suchen in Formularen
4.9.1
Schnelles Suchen in Formularen
4.9.2
Schnelles Filtern in der Datenblattansicht
4.9.3
Schnellauswahl per Kombinationsfeld
4.9.4
Schnelles Filtern von Listenfeldern
280
280
281
282
284
Steuerelemente
289
5.1
289
289
291
292
292
292
293
295
295
295
295
295
296
296
296
297
298
299
299
300
300
300
301
302
302
303
Textfelder
5.1.1
Rich-Text in Textfeldern
5.1.2
Datum auswählen
5.1.3
Texte als Hyperlink anzeigen
5.1.4
Abgeschnittene Zahlenfelder
5.2 Schaltflächen
5.3 Kombinationsfelder
5.3.1
Wertiisteerben
5.3.2
Formular zum Bearbeiten anzeigen
5.3.3
Wachsen und Schrumpfen
5.3.4
Hyperlinks
5.3.5
Mehrwertige Felder
5.4 Kombinationsfeld-Techniken
5.4.1
Kombinationsfeld aufklappen
5.4.2
Auswahlen-Eintrag hinzufügen
5.4.3
Abhängige Kombinationsfelder
5.4.4
Bestimmten Eintrag auswählen
5.4.5
Aktuell markierten Eintrag auslesen
5.4.6
Wert zu einem gebundenen Kombinationsfeld hinzufügen
5.4.7
Weitere Techniken
5.5 Listenfelder
5.5.1
Mehrfachauswahl auslesen
5.5.2
Ja/Nein-Felder im Listenfeld anzeigen
5.5.3
Weitere Techniken
5.6 Unterformulare
5.7 Das Anlagen-Steuerelement
5.8 Optionsgruppe, Umschaltfläche, Kontrollkästchen, Bildsteuerelement
undCo
5.9 Weitere Steuerelementeigenschaften
5.9.1
Steuerelemente verankern
*
5.9.2
Layout oder nicht?
5.9.3
Gitternetzlinien
5.9.4
Textabstand
5.10 Das TreeView-Steuerelement
5.10.1 TreeView anlegen
5.10.2 Eigenschaften des TreeView-Steuerelements
5.10.3 Erzeugen eines Baumes
?.
5.10.4 Stil einstellen
5.10.5 Element-Eigenschaften per VBA zuweisen
303
303
303
305
305
306
306
307
311
311
313
314
11
Inhalt
6
5.10.6 Symbole im Tree View
5.10.7 Daten aus Tabellen im TreeView-Steuerelement darstellen
5.10.8 Daten aus verknüpften Tabellen anzeigen
5.10.9 Reflexive Daten im TreeView-Steuerelement
5.10.10 Tree View füllen bei großen Datenbeständen
5.10.11 Elemente erst bei Bedarf anlegen
5.10.12 Neuzeichnen des Baumes verhindern
5.10.13 Drag and Drop im TreeView-Steuerelement
5.10.14 VBA-Ereignisprozeduren für Drag and Drop einrichten
5.11 ListView
5.11.1 Möglichkeiten des ListView-Steuerelements
5.11.2 Füllen des ListView-Steuerelements
5.11.3 Eigenschaften des ListView-Steuerelements
5.11.4 Sortieren von ListView-Einträgen
5.11.5 Einträge des ListView-Steuerelements auswählen
5.11.6 ListView-Steuerelement mit Daten füllen
5.11.7 Icons im ListView-Steuerelement
5.11.8 Drag and Drop mit dem ListView-Steuerelement
5.11.9 Reihenfolge per Drag and Drop einstellen
5.12 Das ImageList-Steuerelement
5.13 Tipps und Tricks zu Steuerelementen
5.13.1 Standardeinstellungen speichern
5.13.2 Autoformate
315
315
316
318
320
321
323
324
324
328
329
330
331
332
334
337
340
345
350
354
358
358
359
Berichte
361
6.1
6.2
6.3
6.4
12
Berichte erstellen
6.1.1
Anlegen eines Berichts
6.1.2
Vereinfachtes Layouten
6.1.3
Einheitliches Design mit Autoformat
6.1.4
Wechselnde Hintergrundfarbe
6.1.5
Bedingte Formatierung
6.1.6
Sonstige Layout-Vereinfachungen
6.1.7
Berichtsbereiche
6.1.8
Berichtsansichten
6.1.9
Gruppieren und sortieren
Berichte anzeigen
Filtern und sortieren
6.3.1
Filtern und Sortieren in der Berichtsvorschau
6.3.2
Filtern, Sortieren und Gruppieren
in der Layoutansicht
6.3.3
Filtern in der Layoutansicht
6.3.4
Sortieren in der Layoutansicht
6.3.5
Gruppieren in der Layoutansicht
6.3.6
Sumnien in der Layoutansicht
Berichtsbereiche und Ereignisse
6.4.1
Berichtsbereiche
.•
.-.
361
362
364
365
366
366
367
367
368
368
368
1 369
371
371
372
372
373
375
376
376
Inhalt
7
6.4.2
Ereignisse in Berichten
6.4.3
Zusammenfassung der Berichtsereignisse
6.4.4
Zusammenfassung der Bereichsereignisse
6.4.5
Zugriff auf die Berichtsbereiche
6.5 Beispiele für den Einsatz der Berichts- und Bereichsereignisse in der
Seitenansicht
6.5.1
Beim Öffnen: Auswertung von Öffnungsargumenten
6.5.2
Bei Aktivierung und Bei Deaktivierung:
Berichtsabhängige Funktionen ein- und ausschalten
6.5.3
Bei Ohne Daten: Öffnen leerer Berichte vermeiden
6.5.4
Bei Fehler: Fehler abfangen
6.5.5
Bei Seite: Seiten verschönern
6.5.6
Beim Formatieren: Layout anpassen
6.5.7
Beim Drucken
6.6 Wichtige Eigenschaften von Berichten und Berichtsbereichen
6.6.1
Kopfzeilenbereich und Fußzeilenbereich
6.6.2
Gruppieren nach und Intervall
6.6.3
Zusammenhalten von Daten
6.6.4
Neue Seite, Zeile oder Spalte
6.6.5
Vergrößerbar und Verkleinerbar
6.6.6
Bereich wiederholen
6.7 Darstellung von Daten
6.7.1
Einzelne Tabellen
6.7.2
l:n-Beziehungen
6.7.3
m:n-Beziehungen
6.8 Berichte mit Unterberichten
6.8.1
Unterberichte
.-.
6.8.2
Einbinden der Unterberichte in den Hauptbericht
6.8.3
Unterberichte über mehrere Seiten
6.9 Rechnungserstellung mit Berichten
6.9.1
Konzept für die Erstellung des Berichts
6.9.2
Erstellen des Gruppenkopfs
6.9.3
Anlegen des Detailbereichs
6.9.4
Berechnungen in Berichten oder Berechnungen in Formularen
6.9.5
Summenbildung im Fußbereich der Gruppierung
6.9.6
Feinheiten: Zwischensumme und Übertrag
6.9.7
Überschriften für Folgeseiten und Rechnungsübertrag
6.9.8
Rechnungsentwurf im Zusammenhang und Restarbeiten
6.10 Die Berichtsansicht
6.11 Anwendungsbeispiel für die Berichtsansicht
384
385
385
385
387
388
390
391
392
393
393
394
395
395
396
400
403
404
404
404
407
407
410
410
411
412
412
413
413
414
419
420
VBA
425
7.1
7.2
7.3
VBA-Neuigkeiten in Access 2007
Namenskonventionen in VBA
•
Layout von Code
7.3.1
Funktionalität vor Schönheit?
377
378
378
380
381
381
426
426
427
427
13
Inhalt
7.4
7.5
7.6
7.7
7.8
8
Access-SQL
8.1
8.2
8.3
14
7.3.2
Code einrücken zur Verdeutlichung der logischen Struktur
7.3.3
Leerzeilen für bessere Lesbarkeit
7.3.4
Zeilenumbrüche
7.3.5
Anweisungen zusammenfassen
Kommentare
Konstanten
Variablen
7.6.1
Variablennamen
7.6.2
Spezielle Variablennamen
7.6.3
Arrays
7.6.4
Benutzerdefinierte Typen
7.6.5
Alle Variablen verwenden
7.6.6
Globale Variablen
Kontrollstrukturen
7.7.1
If...Then-Anweisung
7.7.2
SelectCase
7.7.3
For...Next-Schleifen
7.7.4
For Each-Schleifen
7.7.5
Do...Loop-Schleifen und Varianten
7.7.6
Exit
7.7.7 Die GoTo-Anweisung und Sprungmarken
Routinen
7.8.1
Routinenarten
7.8.2
Routinennamen
7.8.3
Starker Zusammenhalt von Routinen
7.8.4
Lose Kopplung zwischen Routinen
7.8.5
Parameter und Rückgabewerte einer Routine
7.8.6
Gleichzeitige Rückgabe von Statuswert und Ergebnis
7.8.7
Alle Routinen verwenden
SQL-Versionen
SQL und Access
8.2.1
Wozu trotz Abfrage-Entwurfsansicht SQL lernen?
8.2.2
Wo lässt sich SQL überall einsetzen?
Daten auswählen
8.3.1
Festlegen der anzuzeigenden Felder
8.3.2
Festlegen der enthaltenen Tabellen
8.3.3
Festlegen von Bedingungen
8.3.4
Vergleichsausdrücke
8.3.5
Sortieren von Daten
8.3.6
Aggregatfunktionen
8.3.7
Gruppieren von Daten
8.3.8
WHERE, GROUP BY, HAVING und ORDER BY im Überblick
8.3.9
Verknüpfen von Tabellen in Abfragen
8.3.10 Zugriff auf externe Datenquellen
428
430
431
432
433
434
437
437
438
439
440
441
441
441
441
444
445
446
447
448
449
450
450
451
453
453
453
456
457
459
459
460
461
462
463
* 464
465
466
467
470
471
472
475
475
485
Inhalt
8.3.11
8.4
8.5
Zugriff auf Felder des Datentyps Anhang und mehrwertige
Felder
Daten manipulieren
8.4.1
Daten aktualisieren
8.4.2
Daten löschen
8.4.3
Daten an bestehende Tabelle anfügen
8.4.4
Neue Tabelle mit Daten erstellen
Datenmodell erstellen und manipulieren
8.5.1
Tabellenerstellen
8.5.2
Primärschlüssel, Indizes und Einschränkungen
mit CONSTRAINT
8.5.3
Tabelle ändern
8.5.4
Tabelle löschen
8.5.5
Index löschen
DAO
9.1
9.2
9.3
9.4
9.5
9.6
9.7
485
486
486
487
487
489
490
490
493
499
500
500
501
DAO und ADO im Einsatz
Das DAO-Objektmodell
9.2.1
Zugriff auf die Elemente des Objektmodells
9.2.2
Deklarieren und Instanzieren
9.2.3
Auf Auflistungen zugreifen
9.2.4
Punkte und Ausrufezeichen
DBEngine
Workspace — Arbeitsbereich oder Sitzung?
9.4.1
Auflistungen des Workspace-Objekts
9.4.2
Aufgaben des Workspace-Objekts9.4.3
Datenbanken erzeugen und öffnen
Aktuelle Datenbank referenzieren
9.5.1
Users und Groups
Das Database-Objekt
9.6.1
Manipulation des Datenmodells
9.6.2
Erstellen einer Tabelle
9.6.3
Autowert anlegen
9.6.4
Attachment-Feld anlegen
9.6.5
Mehrwertige Felder anlegen
9.6.6
Löschen einer Tabelle
9.6.7
Erstellen eines Index
'
9.6.8
Löschen eines Index
9.6.9
Erstellen einer Beziehung
9.6.10 Löschen einer Beziehung
9.6.11 Erstellen von Eigenschaften
9.6.12 Zugriff auf Auflistungen und Elemente
9.6.13 Datensatzgruppen erstellen mit OpenRecordset
9.6.14 Ausführen von Aktionsabfragen
Daten bearbeiten mit dem Recordset- und dem
Recordset2-Objekt
503
504
504
506
507
508
509
509
510
510
511
511
513
514
514
514
517
517
518
521
522
523
524
526
526
526
528
533
534
15
Inhalt
9.7.1
9.7.2
9.7.3
9.7.4
9.7.5
9.7.6
9.7.7
9.7.8
9.7.9
9.7.10
Methoden und Eigenschaften des Recordset2-Objekts
Datensätze durchlaufen
Alle Datensätze durchlaufen
Zu bestimmten Datensätzen springen
Aktuelle Position des Datensatzzeigers ermitteln
Anzahl der Datensätze ermitteln
Daten aus Datensätzen ausgeben
Datensätze suchen
Die Seek-Methode zum Suchen in Table-Recordsets
Die Find-Methoden zum Suchen in Dynaset- und
Snapshot-Recordsets
9.7.11 Alle Datensätze mit einem bestimmten Kriterium finden
9.7.12 Lesezeichen
9.8 Sortieren und Filtern von Datensätzen
9.8.1
Sortieren mit der Sort-Eigenschaft
9.8.2
Sortieren mit der Index-Eigenschaft
9.8.3
Filtern mit der Filter-Eigenschaft
9.9 Daten bearbeiten
9.9.1
Anlegen eines Datensatzes
9.9.2
Bearbeiten eines Datensatzes
9.9.3
Löschen eines Datensatzes
9.9.4
Umgang mit Attachments
9.9.5
Attachment-Felder auslesen
9.9.6
Dateien aus einem Attachment-Feld auf der Festplatte speichern
9.9.7
Datei in Attachment-Feldern speichern
9.9.8
Löschen von Dateien in Attachment-Feldern
9.9.9
Ersetzen eines Attachments
.-.
9.9.10 Umgang mit mehrwertigen Feldern
9.9.11 Lesen des Inhalts von mehrwertigen Feldern, Variante I
9.9.12 Lesen des Inhalts mehrwertiger Felder, Variante II
9.10 QueryDefs — Auswahl oder Aktion nach Wahl
9.11 Transaktionen
10 ADO
10.1 Zugriff auf eine Datenquelle herstellen
10.2 Manipulation des Datenmodells
10.2.1 Anlegen einer Tabelle
10.2.2 Autowert anlegen
10.2.3 Löschen einer Tabelle
10.2.4 Erstellen eines Index
10.2.5 Löschen eines Index
10.2.6 Erstellen einer Beziehung
10.2.7 Löschen einer Beziehung
10.3 Zugriff auf Tabellen, Abfragen und die darin enthaltenen Daten ....,
10.3.1 Ausgeben aller Tabellen
10.3.2 Prüfen, ob eine Tabelle vorhanden ist
16
534
536
536
537
537
539
541
542
542
543
544
545
546
546
547
548
549
549
550
550
551
551
555
557
558
558
559
560
561
561
562
567
568
571
* 571
573
573
574
575
575
577
577
577
578
Inhalt
10.4
10.5
10.6
10.7
10.3.3 Datensatzgruppe auf Basis einer Tabelle öffnen
10.3.4 Cursor-Typen
10.3.5 Sperrung von Daten
10.3.6 Datensätze eines Recordsets durchlaufen
10.3.7 Daten eines Recordsets mit mehrwertigen Feldern ausgeben
10.3.8 Daten eines Recordsets mit Attachment-Feldern ausgeben
10.3.9 Anzahl der Datensätze in einer Datensatzgruppe ermitteln
10.3.10 Prüfen, ob eine Datensatzgruppe leer ist
10.3.11 Ausgabe des Inhalts eines Recordsets
10.3.12 Speichern der Daten in einem Array
10.3.13 Abfragen mit Parametern verwenden
Datensätze suchen
10.4.1 Gesuchte Datensätze per Source-Eigenschaft des Recordsets
ermitteln
10.4.2 Seek
,
10.4.3 Find
10.4.4 Filtern
10.4.5 Sortieren
10.4.6 Lesezeichen
Datensätze bearbeiten
10.5.1 Datensatz anlegen
10.5.2 Datensatz bearbeiten
10.5.3 Datensatz löschen
10.5.4 Aktionsabfragen ausführen
Transaktionen
Besonderheiten von ADO gegenüber DAO
10.7.1 Datensatzgruppe speichern
10.7.2 Datensatzgruppe laden
10.7.3 Ungebundene Recordsets verwenden
10.7.4 Disconnected Recordsets
10.7.5 Ereignisse von Datensatzgruppen
11 Bilder und binäre Dateien
11.1
11.2
11.3
11.4
11.5
11.6
11.7
11.8
11.9
Bilder und Dateien als Anlage speichern
Bilder aus Anlage-Feldern in Formularen anzeigen
Bilder aus Anlage-Feldern in Berichten anzeigen
Bilder und Dateien aus Anlage-Feldern auf der* Festplatte speichern
Dateien per VBA in Anlage-Felder importieren und exportieren
11.5.1 Importieren von Dateien in Anlage-Felder
11.5.2 Exportieren von Dateien aus dem Anlage-Feld
Bilder und Dateien im OLE-Feld einbetten oder verknüpfen
Bilder und Dateien als Binärstrom im OLE-Feld speichern
Bilder und Dateien im binären Format
aus einem OLE-Feld wiederherstellen
Bilder von der Festplatte in Formularen
und Berichten anzeigen
578
579
579
580
580
581
582
582
583
583
584
585
585
586
588
589
590
591
591
591
592
593
593
593
594
594
594
595
596
599
601
602
604
607
608
609
610
612
614
615
617
619
17
Inhalt
11.9.1 Anzeigen externer Bilddateien im Formular
11.9.2 Anzeige externer Bilddateien in Berichten
11.9.3 Alternative zum Bildsteuerelement von Access
11.10 Die Office Graphics Library
11.10.1 Bilder aus dem OLE-Feld in einem Formular anzeigen
11.10.2 Bild aus einem OLE-Feld wiederherstellen
11.10.3 Speichern in verschiedenen Formaten
11.10.4 Bilderbearbeiten
11.10.5 Ersatz für Anlagen?
619
621
622
624
624
627
628
629
630
12 Ribbon
12.1 Definition des Ribbons
12.2 Symbolleiste für den Schnellzugriff
12.3 Eigene Ribbon-Tabs erstellen
12.3.1 Ein einfaches Ribbon
12.3.2 Schaltfläche mit Funktion versehen
12.4 Fehler in Ribbon-XML-Dokumenten erkennen
12.5 Callback-Funktionen
12.5.1 Die get...-Attribute
12.5.2 Ereigniseigenschaften
12.5.3 Umgang mit Callback-Funktionen
12.6 Weitere Ribbon-Steuerelemente
12.6.1 Schaltflächen
12.6.2 Kontrollkästchen (checkBox)
12.6.3 Textfelder
12.6.4 Kombinationsfelder I: Das comboBox-Element
12.6.5 Kombinationsfelder II: Das dropDown-Element
12.6.6 Umschaltflächen
12.6.7 Galerien
12.6.8 Menüs (menu)
12.6.9 Splitbuttons (splitButton)
12.6.10 Gruppendialog anzeigen
12.6.11 Trennstrich (separator)
12.7 Weitere Anpassungen des Ribbons
12.7.1 Tastenkombinationen
12.7.2 Alle Ribbons ausblenden
12.7.3 Ribbon-Leiste minimieren
12.7.4 Ein tab-Element ein- und ausblenden
12.7.5 Eine Gruppe ein- und ausblenden
12.7.6 Ein Steuerelement ein- und ausblenden
12.7.7 Eingebaute Steuerelemente aktivieren und deaktivieren
12.7.8 Eingebaute Steuerelemente mit neuen Funktionen belegen
12.7.9 Sonderzeichen in Ribbon-Texten
12.7.10 Einen Eintrag zum Office-Menü hinzufügen
.-.
12.7.11 Einträge des Office-Menüs ausblenden
12.7.12 Einen Eintrag zur Schnellzugriffsleiste hinzufügen
18
631
r
632
633
636
637
639
641
642
642
643
644
646
646
650
650
652
656
658
659
661
663
664
665
665
666
667
* 667
668
668
669
669
670
670
670
671
672
Inhalt
12.8 Ribbons für Formulare und Berichte
12.9 XML-Dokument mit Application.LoadCustomUI laden
12.9.1 Dynamisches Aktualisieren des Ribbons
12.9.2 Beispiel: Abhängige Kontrollkästchen
12.10 Menü- und Symbolleisten aus bestehenden Access 2003-Anwendungen
12.11 Übersicht über Ribbon-XML-Elemente und Attribute
12.11.1 Auflistung der Ribbon-Elemente
12.11.2 Attribute der Ribbon-Elemente
12.11.3 Ereigniseigenschaften der Ribbon-Elemente
12.11.4 Steuerelemente und ihre Eigenschaften
13 Debugging, Fehlerbehandlung und Fehlerdokumentation
13.1 Fehlerarten
13.1.1 Syntaxfehler
13.1.2 Laufzeitfehler
13.1.3 Logische Fehler
13.2 Debugging in der VBA-Entwicklungsumgebung
13.2.1 Die Debuggen-Symbolleiste
13.2.2 Das Direktfenster
13.2.3 Haltepunkte
13.2.4 Die Aufrufliste
13.2.5 Ausdrücke überwachen
13.2.6 Das Lokal-Fenster
13.3 Fehlerbehandlung in VBA
13.3.1 Elemente der Fehlerbehandlung
13.3.2 Fehlerbehandlung einleiten
:
13.3.3 Klassischer Aufbau einer Fehlerbehandlung
13.3.4 Fehler auswerten
13.3.5 Das Err-Objekt
13.3.6 Nach der Fehlerbehandlung
13.3.7 Fehlernummern und -beschreibungen
13.3.8 Benutzerdefinierte Fehlerbehandlung temporär ausschalten
13.3.9 Funktionale Fehlerbehandlung
13.3.10 Benutzerdefinierte Fehler
13.3.11 Fehler bei API-Aufrufen
13.4 Fehlerdokumentation und -Übermittlung
13.4.1 Wichtige Fehlerinformationen
*
13.4.2 Zeilen nummerieren
13.4.3 Einsatz der accessVBATools
13.5 Fehlerbehandlung in Formularen
13.5.1 Behandlung von Formularfehlern
13.5.2 Formularfehler dokumentieren
14 Performance
14.1 Tabellen
'.
673
673
675
676
678
680
680
682
684
687
691
691
692
694
695
695
696
696
697
699
699
701
701
702
702
703
704
704
705
705
705
706
709
710
711
712
712
714
719
720
721
723
723
19
Inhalt
14.2
14.3
14.4
14.5
14.6
14.7
14.1.1 Normalisieren des Datenmodells
14.1.2 Indizes
14.1.3 Datentypen
Abfragen
14.2.1 Abfragen und die ACE-Engine
14.2.2 Datenbank mit kompilierten Abfragen ausliefern
14.2.3 Gespeicherte Abfragen versus Ad-hoc-Abfragen
14.2.4 Abfragen auf Performance trimmen
Formulare
14.3.1 Formulare offen halten oder schließen?
14.3.2 Daten des Formulars
14.3.3 Steuerelemente
14.3.4 VBA in Formularen
Berichte
14.4.1 Datensatzquelle unsortiert übergeben
14.4.2 Keine Funktionen und Ausdrücke in Sortierungen und
Gruppierungen
14.4.3 Bericht nur öffnen, wenn er Daten enthält
VBA
:
14.5.1 Performance von VBA-Code optimieren
14.5.2 Punkt oder Ausrufezeichen
14.5.3 Datenzugriff optimieren
Sonstige Performance-Tipps
14.6.1 Verwendung als .accde-Datei
14.6.2 Exklusiver Zugriff bei Einzelplatzanwendungen
14.6.3 Komprimieren der Datenbank
14.6.4 Objektnamen-Autokorrektur abschalten
14.6.5 Unterdatenblätter abschalten
14.6.6 Rechtschreibprüfung ausschalten
Performance-Unterschiede messen
14.7.1 Werkzeug für Performance-Tests selbst gebaut
15 Objektorientierte Programmierung
15.1 Abstrakte Datentypen, Klassen und Objekte
15.2 Objekte
15.2.1 Eingebaute Objekte
15.2.2 Erzeugen eines Objekts
15.2.3 Zugriff auf die Methoden, Eigenschaften und Ereignisse eines
Objekts
15.2.4 Lebensdauer eines Objekts
15.3 Klassenmodule
15.3.1 Anlegen eines Klassenmoduls
15.3.2 Benennen des Klassenmoduls
15.4 Eigenschaften efner Klasse
15.4.1 Öffentliche und nicht öffentliche Eigenschaften
15.4.2 Zugriff auf die Eigenschaften einer Klasse kontrollieren
20
723
725
727
728
728
734
735
735
737
737
737
738
741
742
743
743
743
744
744
754
754
755
756
756
756
756
757
757
757
758
769
772
773
774
* 778
778
779
780
780
780
781
782
783
Inhalt
15.5
15.6
15.7
15.8
15.9
15.4.3 Property Let: Setzen von skalaren Variablen
15.4.4 Property Set: Setzen von Objektvariablen
15.4.5 Property Get: Lesen von skalaren Variablen und Objektvariablen
15.4.6 Vertrauen ist gut, Kontrolle ist besser
Methoden einer Klasse
Standardereignisse in Klassen
Benutzerdefinierte Ereignisse
15.7.1 Ereignisse abfangen
15.7.2 Eigene Ereignisse anlegen
Benutzerdefinierte Auflistungen mit dem Collection-Objekt
15.8.1 Auflistungen selbst gemacht
15.8.2 Benutzerdefinierte Auflistungsklassen
15.8.3 Nachbildung relationaler Beziehungen per Auflistungsklasse
15.8.4 »Echtes« Objekt mit Auflistung
Schnittstellen und Vererbung
15.9.1 Beispiel für den Einsatz der Schnittstellenvererbung
15.9.2 Vereinheitlichen per Schnittstellenvererbung
15.9.3 Realisierung der Schnittstellenvererbung
15.9.4 Was vom Beispiel übrig bleibt
16 Objektorientierung im Praxiseinsatz
16.1 Standardfunktionen von Formularen auslagern
16.1.1 Formulare zur Datenbearbeitung
16.1.2 Codeauslagerung am Beispiel der OK-Schaltfläche
16.1.3 Abbrechen der Bearbeitung auslagern
16.1.4 Löschen von Datensätzen auslagern
16.1.5 Hinzufügen von Datensätzen auslagern
16.1.6 Einstellen des Kombinationsfeldes für die Schnellauswahl
16.1.7 Aktualisieren des Kombinationsfeldes
16.1.8 Anzeige des im Kombinationsfeld ausgewählten Datensatzes
16.1.9 Weitere Möglichkeiten
16.2 Mehrere Formularinstanzen anzeigen
16.2.1 Beispielformulare
16.2.2 Erzeugen einer neuen Instanz
16.2.3 Öffnen mehrerer Instanzen eines Formulars
16.2.4 Formularinstanz-Sammlung
16.2.5 Neue Formularinstanz erzeugen und zur Collection hinzufügen
16.2.6 Schließen aller Instanzen des Formulars
16.2.7 Schließen einer bestimmten Instanz
16.2.8 Schließen-Vorgang des Formulars anpassen
16.3 Mehrschichtige Anwendungen
16.3.1 Beispiel
16.3.2 Die GUI-Schicht
16.3.3 Die Business-Schicht
,
16.3.4 Die Datenzugriffsschicht
16.3.5 Die Datenschicht
785
785
786
787
788
790
790
790
793
798
799
801
803
808
811
812
814
815
817
819
819
820
821
826
827
829
829
831
833
834
834
834
835
837
837
838
840
842
845
846
847
848
849
849
850
21
Inhalt
16.3.6
16.3.7
16.3.8
16.3.9
16.3.10
16.3.11
16.3.12
16.3.13
16.3.14
16.3.15
16.3.16
16.3.17
16.3.18
16.3.19
16.3.20
16.3.21
Zusammenhänge der Objekte und Schichten
Initialisieren des Formulars
Initialisieren des Controller-Objekts
Aufruf der Methode GetPersons der Business-Schicht
Zugriff des Datenzugriffsobjekts auf die Datenschicht
Die Klasse clsPerson
Auswählen und Anzeigen eines Datensatzes
Einlesen von Personen, die nicht in der Collection enthalten
sind
Neuer Datensatz
Speichern eines Datensatzes
Datensatz neu anlegen oder aktualisieren?
Neuen Datensatz anlegen
Aktualisieren eines Datensatzes
Löschen eines Datensatzes
Businesslogik und mehr
Objektklassen und Datenzugriffsobjekte automatisch erstellen
17 Anpassen der Entwicklungsumgebung
17.1 Gründe für die Erweiterung der Entwicklungsumgebung
17.1.1 Automatische Codegenerierung
17.1.2 Fehlerbehandlung per Knopfdruck
17.1.3 Nummerieren von Codezeilen
17.2 Programmieren der Entwicklungsumgebung
17.3 Das Objektmodell der VBA-Entwicklungsumgebung
17.3.1 Verweis für den Zugriff auf das VBE-Objektmodell einrichten
17.3.2 Aufbau des Objektmodells
17.4 Mit Modulen arbeiten
17.4.1 Auflisten aller enthaltenen Module
17.4.2 Anlegen eines neuen Moduls
17.4.3 Entfernen eines Moduls
17.5 Mit Prozeduren arbeiten
17.5.1 Lesender Zugriff auf den Quellcode
17.5.2 Zählen der Codezeilen des Moduls
17.5.3 Zählen der Zeilen des Deklarationsbereichs eines Moduls
17.5.4 Erste Zeile und Deklarationszeile einer Prozedur
17.5.5 Zeilenanzahl einer Prozedur
17.5.6 Anzahl der Codezeilen einer Prozedur
17.5.7 Zu welcher Prozedur gehört eine Zeile?
17.5.8 Ausgabe des kompletten Codes eines Moduls
17.5.9 Ermitteln der Position der aktuellen Markierung
17.5.10 Ermitteln des Inhalts der aktuellen Markierung
17.5.11 In Modulen suchen
17.6 Beispielanwendung: Codeviewer
,
17.6.1 Anzeige der Module
17.6.2 Anzeige der Prozedurliste
22
850
850
852
852
853
855
856
858
859
860
860
861
862
864
865
866
869
872
872
872
874
874
876
876
877
878
879
880
881
881
882
883
883
883
'. 884
884
885
886
887
888
889
890
891
893
Inhalt
17.6.3 Anzeige des Codes einer Prozedur
17.7 Manipulieren des Quellcodes
17.7.1 Code hinzufügen
17.7.2 Ereignisprozeduren hinzufügen
17.7.3 Löschen von Zeilen
17.7.4 Beispielanwendung: Nummerieren von Codezeilen in einem
Modul
17.8 Toolwindows
17.8.1 Benutzerdefiniertes Toolwindow = COM-Add-In
17.8.2 Anlegen eines leeren Toolwindows
17.8.3 Anlegen eines neuen Projekts
17.8.4 Der COM-Add-In-Designer
17.8.5 Das Userdocument als Toolwindow
17.8.6 Ereignisprozeduren des COM-Add-Ins mit Leben füllen
17.8.7 Anpassen der Eigenschaften des COM-Add-Ins
17.8.8 Anzeige des Toolwindows beim Starten der VBAEntwicklungsumgebung
17.8.9 Testen des neuen Toolwindows
17.8.10 Das Toolwindow füllen
17.9 COM-Add-Ins per Menübefehl aufrufen
17.9.1 Vorbereitungen
17.9.2 Objekte hinzufügen
17.9.3 Eigenschaften der Addln Class anpassen
17.9.4 Anpassen des Standardmoduls
17.9.5 Weitere Einstellungen
17.9.6 Projekt speichern
17.9.7 Hinzufügen der Funktionen und Menüs
18 Sicherheit von Access-Datenbanken
18.1
18.2
18.3
18.4
18.5
18.6
18.7
Code schützen per .accde-Datenbank
Code schützen per Kennwort
Einfacher Kennwortschutz mit Verschlüsselung
Vertrauensstellungscenter
Digitale Signaturen
Schutz vor bösartigen SQL-Statements
Kein Sicherheitssystem — was nun?
18.7.1 Benutzer- und gruppenabhängige Benutzeroberfläche
18.7.2 Daten schützen: Alternativen
18.8 MySQL
18.8.1 MySQL installieren
18.8.2 Einfache Konfiguration
18.8.3 MySQL-Anweisungen
18.8.4 Sicherheit unter MySQL
18.8.5 Administrationstool für MySQL
18.8.6 Installation von MyODBC
18.9 Access und MySQL
897
898
899
900
900
901
902
903
904
905
907
908
909
914
915
916
917
917
918
918
920
920
921
921
922
925
926
927
928
929
933
934
935
936
936
938
940
942
943
945
945
946
946
23
Inhalt
18.9.1
18.9.2
18.9.3
18.9.4
18.9.5
18.9.6
18.9.7
Upsizing von Access-Datenbanken auf MySQL
Export von Tabellen nach MySQL
Verwenden von MySQL-Datenbanken mit Access
Aktualisieren von Tabellen
Internetverbindung mit MySQL
Erstellen eines Profils mit PuTTY
Testen des Tunnels
19 Installation, Betrieb und Wartung
19.1 Verschiedene Access-Versionen auf demselben Rechner
19.2 Weitergabe von Access-Datenbanken
19.2.1 Benutzerdefinierte Menüs
19.2.2 Fehlerbehandlung
19.2.3 Runtime-Simulation
19.2.4 Weitergabe ohne Runtime
19.3 Aktionen beim Starten oder Beenden der Datenbank durchführen
19.3.1 Code beim Starten einer Datenbank ausführen
19.3.2 Formular beim Starten einer Datenbank anzeigen
19.3.3 Aktion beim Schließen einer Datenbank ausführen
19.4 Datenbanken komprimieren und reparieren
19.5 Mehrbenutzerbetrieb mit Access-Datenbanken
19.5.1 Aufteilen einer Access-Datenbank
19.5.2 Tabellen in neue Datenbank importieren
19.5.3 Tabellen aus der Ausgangsdatenbank löschen
19.5.4 Tabellen als Verknüpfung einbinden
19.5.5 Erneutes Einbinden der Tabellen nach Umbenennen oder
Verschieben des Backends
19.5.6 Zeitpunkt zum Wiedereinbinden von Tabellen
19.6 Sichern von Access-Datenbanken
19.6.1 Voraussetzungen und Vorbereitungen
19.6.2 Einfaches Kopieren mit FileCopy
19.6.3 Kopieren per API-Funktion
19.6.4 Kopieren und komprimieren
19.6.5 Kopieren und zippen
19.6.6 Sicherungsstrategie
19.7 Datenbank reparieren
19.7.1 Symptome
19.7.2 Sicherung geht vor
19.7.3 Allgemeine Reparaturversuche
19.7.4 Weitere Informationen
19.8 Verweise und Probleme mit Verweisen
19.8.1 Meldung bei fehlenden Verweisen
19.8.2 Ohne Verweise arbeiten?
19.8.3 Late Blnding und Early Binding
•
19.8.4 Verweise und die Weitergabe von Anwendungen
19.8.5 Auf Nummer Sicher
24
946
947
951
951
952
953
954
957
957
958
959
960
960
960
961
962
962
962
964
965
965
965
965
966
966
970
971
971
974
974
975
975
975
978
'. 979
979
980
980
980
981
982
983
983
983
Inhalt
19.8.6
Index
Gleichnamige Objekte, Eigenschaften
und Methoden in Bibliotheken
986
987
25
Herunterladen