Inhalt - Access 2007 - Das Grundlagenbuch für Entwickler

Werbung
Inhalt
Vorwort 1 Warum Access 2007? 1.1
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 27
31
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
Inhalt
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 2 Tabellen und Datenmodellierung 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
1:n-Beziehungen 2.5.5
n:1-Beziehungen oder Lookup-Beziehungen 2.5.6
m:n-Beziehungen 2.5.7
1:1-Beziehungen 2.5.8
Reflexive Beziehungen 49
49
50
52
52
52
52
53
53
53
53
54
55
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
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 3 Abfragen 3.1
3.2
3.3
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
INSERT INTO mit UNION-Abfragen Suchen in m:n-Beziehungen Handhabung von 1:1-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 127
128
128
131
132
134
136
136
138
138
140
141
143
144
145
147
148
149
151
151
152
153
153
154
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 1:n-Beziehungen 3.12 Reflexive m:n-Beziehungen 4 Formulare 4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
10
182
183
184
184
184
186
187
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
1:1-Beziehungen 4.5.6
n:1-Beziehungen 4.5.7
1:n-Beziehungen 4.5.8
1:n-Beziehung per Unterformular und Datenblattansicht 4.5.9
1: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 188
188
192
196
198
201
204
205
206
206
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
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 5 Steuerelemente 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
Wertliste erben 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
Auswählen-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 und Co. 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 5.1
280
280
281
282
284
289
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
303
303
303
305
305
306
306
307
311
311
313
314
11
Inhalt
5.10.6 Symbole im TreeView 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 TreeView 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 6 Berichte 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
Summen in der Layoutansicht Berichtsbereiche und Ereignisse 6.4.1
Berichtsbereiche 315
315
316
318
320
321
323
324
324
328
329
330
331
332
334
337
340
345
350
354
358
358
359
361
361
362
364
365
366
366
367
367
368
368
368
369
371
371
372
372
373
375
376
376
Inhalt
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
1: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 7 VBA 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
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
425
426
426
427
427
13
Inhalt
7.4
7.5
7.6
7.7
7.8
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
Select Case 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 8 Access-SQL 8.1
8.2
8.3
14
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
Tabellen erstellen 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 9 DAO 9.1
9.2
9.3
9.4
9.5
9.6
9.7
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-Objekts 9.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 485
486
486
487
487
489
490
490
493
499
500
500
501
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
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 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
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 Bilder bearbeiten 11.10.5 Ersatz für Anlagen? 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
619
621
622
624
624
627
628
629
630
631
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 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
14 Performance 723
14.1 Tabellen 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 einer 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 AddIn 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 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 18.1
18.2
18.3
18.4
18.5
18.6
18.7
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 Binding 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