microsoft access 2010 programmierung - das handbuch …€¦ · microsoft access 2010...
Post on 18-Sep-2018
245 Views
Preview:
TRANSCRIPT
Microsoft Access 2010 Programmierung - Das Handbuch
vonWalter Doberenz, Thomas Gewinnus
1. Auflage
Microsoft Access 2010 Programmierung - Das Handbuch – Doberenz / Gewinnus
schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG
Thematische Gliederung:
Integrierte Softwarepakete
Microsoft 2011
Verlag C.H. Beck im Internet:www.beck.de
ISBN 978 3 86645 459 0
Kurzübersicht
Vorwort . . . . . . . . ... . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1 Ein füh r ung . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .... . . . . . . . . . . .
2 Programm ier en mit VBA . . . . . . . . . . . . .
3 Dat enmakros . . . . . .. . . . . . . . . . . . ... . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . .
31
73
141
4 Form ula r e und St euer elem ent e .. . . . . . . . . . . ... . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . 161
5 B er icht e . . . . .. . . . . . . . . . . . . . . . . . . . ..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
6 Programmi er en mit Ob jekt en . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
7 DA O-Programmi er ung . . . . .. . . . . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8 A DO-Programmi er ung ... . . . .. . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . .
9 S QL in Th eori e und Pra xis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10 Fortg eschri tten e Dat enbank programmi er ung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . .
11 Microso ft S QL S er ver . . . . . . . . . . . . . . . . . . .
12 Dat ei en und Verzeichniss e
13 XML i n Th eori e und Pra xis
14 P rogrammsch n ittst ellen . . . . . .. . . ... . . . . . . . . . .... . . . .
15 Acc ess im Int ernet/Intran et . . . . . . ... . . . . . . . . . . . . ... . . . . . . . . . . .. . . . . . . . . . . . . .. .
16 Acc ess und Shar ePoint . . . . . . . . . . . . . .. . . . . . . . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17 Di e Acc ess S er vic es . . . .. . . . . . . . . .
18 Dat endi enst e in Microso ft Acc ess einb ind en . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19 Anw end ungsd esign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . .. . . . . . . . . .
327
397
445
545
641
741
805
877
955
987
1019
1061
1083
20 Men üband und Backstag e-Ansicht prog rammi er en . . .... ............................ 1125
21 Technik en d er Prog ramm entwick lung . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . 1191
A Glossar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 1253
B Wichtig e Dat ei erw eit er ung en . . . . . . . . . . . . . . . .... . . . . . . . . . . . . . . . . . . . . . .... . . . . . . . . . .. . . 1259
c ANS I-Tab elle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1261
D Wich tig e Tastat urcod es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1265
Stichwort ver zeichn is . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1269
Inhaltsverzeichnis
'iiiM@;. Die Bonuskapitel 9 und 13 finden Sie als PDF-Datei auf der beiliegenden CD. Im Inhaltsverzeichnis sind sie
durch ein CD-Symbol gekennzeichnet
1
2
Vorwort
Ein füh r ung VBA- Programmierung unter Microsoft Access 2010
Visual Basic versus VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . .
27
31
32
32
Objekt- und ereignisorientierte Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
VBA- oder Makro-Programmierung? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Die VBA-Entwicklungsumgebung . . . . . . . .. . . . . . . . . . . . . ... . . . . . . . . . .. . . . . . . . . . ... . . . . . . 34
Formularentwurf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 34
Code-Fenster und Symbolleiste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 35
Das Eigenschaftenfenster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Der Projekt-Explorer . . . . . . .. .. ... . . . . . . .... . . . . . ... . . . .. . . . . ... .. . . .. . . 37
Das Code-Fenster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Arbeiten mit der Hilfe Sicherheitseinstellungen . . . .. . .
Zur Geschichte der Access-Sicherheit . .
41
42
42
Eine nicht vertrauens"vürdige Datenbank öffnen . . . . . . . . . . . . . . . . 43
Das Sicherheitscenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . 45
Definition vertrauenswürdiger Speicherorte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . 48
Einführungsbeispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Erstellen der Testdatenbank . . . . . . . . . . . . . . . . . . . . . . . 50
Konventionelle Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Programmieren mit VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Automatische Makrokonvertierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Programmieren mit Datenmakro . . . . . . . . . . . . . . .. . . . . .. . . . . . . . . ... . . . . . . . . ... . . . . . . . . . 61
Highlights und Features von Access 20 1 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Zur Geschichte der Vorgängerversionen . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Das ist neu in Microsoft Office Access 2010 . . . . . . . . . . .... , . . . 65
übersichten und Ergänzungen . . Deutsche und englische Bezeichner DoCmd-Objekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
P rog ramm ieren mit VBA ... . . . . ............. . . . . . . . . ... . . . . . . . . . . . . .. . . . . . . . . . . . . Datentypen, Variablen und Konstanten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Übersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Variablendeklaration Konstantendeklaration Gültigkeitsbereiche . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .
68
68
69
73
74
74
75
80
80
8 Inhaltsverzeichnis
Einzelheiten zu den Datentypen . . . . . . . . .. . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . .. . . . Single- und Double-Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Integer-, Long- und Boolean-Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Date- Datentyp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Currency-Datentyp . . . . . . . . . . . . . . . . . . . . . . . . . String-Datentyp . . . . .. . . . . . . . . . . . . . . . . .
Variant- Datentyp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Datenfelder (Arrays) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Statische Arrays .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dynamische Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Benutzerdefinierte Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . .
Type-Anweisung . . . . . . . . . . . . . .
With-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Strings innerhalb Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Enumerationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arrays in benutzerdefinierten Typen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arithmetische Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . Logische Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Vergleichsoperatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . .
Bedingte Verzweigungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Schleifenanweisungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
GoTo und GoSub .. . . . . . . . ... . .. . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zeichenkettenfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Stringverarbeitung Format-Funktion
Vordefinierte Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mathematische Funktionen Finanzmathematische Funktionen . . .. .. . . . . . . . . . . . . .. .
Datums-/Zeitfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ben utzerdefmierte Funktionen/Prozeduren
Funktion . . . . . . . . .
Prozedur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Parameterübergabe ByRef oder ByVal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Optionale Argumente . . . . . . . . . . . . . . . . . . . .
Benannte Argumente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Parameter-Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dynamische Arrays als Argumente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rückgabe von Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Private-, Public- und Static-Deklarationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Übersichten und Ergänzungen . . . . . . . . . . . . . . .
Datumskonstanten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rückgabewerte der Va rType-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Praxisbeispiele . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . .
In einem Textfeld suchen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zeitangaben runden . . '
Das Wochenende feststellen . . . . . . . . . . . Mit dynamischen Arrays rechnen . . . . . .
84 84 84 84 87 88 89 93 93 95 97 97 97 98 99
100 101 102 104 106 106 106 108 110 111 111 113 115 115 119 120 123 124 124 125 126 127 127 128 128 129 131 131 132 l32 l32 134 l35 136
Inhaltsverzeichnis 9
3
4
Dat enmakros . . Grundlagen von Datenmakros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Einsatzmöglichkeitem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Funktionsprinzip . . . . . . . . . . . . . . . . . . . . Datenmakros und VBA . . . . . . . . . . . .
141 142 142 143 144
Erzeugen von Datenmakros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 Datenmakros umbenennen, löschen und ändern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 USysApplicationLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Aktionen in Datenmakros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Aktionen für alle Tabellenereignisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Zusätzliche Aktionen der Nachfolgeereignisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Auswahl des richtigen Tabellenereignisses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 Vorabereignisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 Nachfolgeereignisse . . . . . . . . . . . . . . . . . . . . . 147 Einschränkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Praxisbeispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 Ein ereignisgesteuertes Datenmakro erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 Arbeiten mit einem benannten Datenmakro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Per VBA auf ein benanntes Datenmakro zugreifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 Änderungen von Tabelleninhalten protokollieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Fo rm ulare und Ste ue re lem ente Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Gruppen von Eigenschaften . . . . .. . . . . . . . . . . . . . . . . . . . . . . . .
Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Gruppen von Ereignissen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Das Form-O bjekt . . . . . . . . . . . . . . . . . . . . . . . Format-Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Daten-Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fenster- und Fokus-Ereignisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tastatur- und Maus-Ereignisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Daten- und Filter-Ereignisse . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Ereignisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Unterformulare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Steuerelemente (Controls) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Allgemeine Eigenschaften auf einen Blick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Allgemeine Ereignisse auf einen Blick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Methoden von Steuerelementen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Das Screen-Objekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ActiveX-Steuerelemente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Vergleich mit den integrierten Steuerelementen . . . . . . . . . . . . . . . .
StatusBar als Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Praxisbeispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Das Textfeld programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
In ungebundene Textfelder ein- und ausgeben . . . . . . . . . . . . . . . . . . . . . . . .
Ein ungebundenes Kombinationsfeld füllen . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . .
161 162 162 163 163 163 164 170 171 172 173 176 177 178 181 182 182 183 194 195 196 198 198 199 203 203 205 207
10 Inhaltsverzeichnis
Ein Unterformular programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 Das Register-Steuerelement kennen lernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 Eine Statusleiste programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 Verwenden von Bild-Ressourcen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ' " . . . . . . . . . . . 219 Programmieren des Navigationssteuerelements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
5 B er icht e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Reportansichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 Die OpenReport-Methode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 Parameterübergabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Wichtige Berichtseigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 Formateigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 Dateneigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Grafikeigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . 229 Linien- und Stifteigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 Schrifteigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 Farb- und Mustereigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 Sonstige Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Berichtsereignisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 Allgemeine Ereignisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 Tastatur- und Mausereignisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Berichtsmethoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 Grafikmethoden (Übersicht) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 Scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 PSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 Circle 244 Print . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 TextWidth und TextHeight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 Sonstige Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Weitere Features des Report-Objekts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 Rich-Text-Felder drucken . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 Verlauf eines Memofeldes drucken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 Eine Liste der A.nlagen drucken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 Berichte nachträglich ftItern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 Berichte als PDF-Datei exportieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 Berichte als RTF-Datei exportieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Das Printer-Objekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 Wo finde ich das Printer-Objekt? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 Die Printers-Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 Auswahl eines Druckers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 Speichern von Berichts-Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 Eigenschaften des Printers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Direkte Druckausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 Übersichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
DrawMode-Eigenschaft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 Farbkonstanten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Inhaltsverzeichnis 11
Praxis beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 Aufruf eines Berichts mit Datenfilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 Im Report gruppieren und rechnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 Erstellen und Drucken eines Pivot-Diagramms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 Berichte in Formularen anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
6 P rogrammi er en mit Ob jekt en . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 Objektvariablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Objekttypen und Set-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 Object-Datentyp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 Form- und Report-Objekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 Control-Objekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Formular- und Berichtsmodule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 Instanzen von Formularen und Berichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 Benutzerdefinierte Form-/Report-Objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 Eigenständige Klassenmodule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
Auflistungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 Forms/Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 Collection-Objekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 Dictionary-Objekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 Property und Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 Module-Objekt und Modules-Auflistung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 Reference-Objekt und References-Auflistung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Die Access-Objekthierarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 Der Objektkatalog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 Das Application-Objekt allgemein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 Eigenschaften und Methoden des Application-Objekts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 Weitere wichtige Objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 AccessObject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 CurrentProject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310 CurrentData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Übersichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 Konstanten der ControlType-Eigenschaft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 Rückgabewerte der CurrentObjectType-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
Praxisbeispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 Ein Steuerelemente-Array automatisch erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 Mit Formular-Instanzen arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 Mit einer eigenständigen Klasse experimentieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 Auf Objekte in Auflistungen zugreifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 Properties-Auflistungen untersuchen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
7 DA O-Programmi er ung . . . . . . . . . . . . . . . . . . . . . . . . . . " . . . . . . . . . . . . . . . . . . . . . . . 327 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
DBEngine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328 Workspace-Objekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 Database-Objekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 Recordset-Objekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 Verwendung der Datenbankobjekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
12 Inhaltsverzeichnis
Grundlegende Arbeitstechniken . . . . . . . . . � . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 Arbeitsumgebung festlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 Datenbank anlegen und öffnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..... . . . . . . . . . . . ..... . . 332 Tabellen/Indizes anlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 Tabellen einbinden . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . 340 Tabellen verknüpfen (Relationen) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 Abfragen erstellen/ausführen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 Öffuen von Tabellen/Abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
Arbeiten mit Recordsets . ..... . . . . . . .. . . . . . .. . .. . . .. . . . .. . . ... . . .. . . . . . . . .. . .... . . . . . . . . . 349 Eigenschaften und Methoden von Recordsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 Datensätze anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 Datensätze hinzufügen/ändern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 Datensätze löschen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 Datensätze sortieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 Datensätze suchen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 Datensätze fUtern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 DAO in gebundenen Formularen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 Auf Anlage-Felder zugreifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....... . . . . . . . . . . . 364 Auf mehrwertige Felder zugreifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 Verlaufsverfolgung eines Memo-Felds . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . 368
Weitere Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . .. 369 Eigenschaften (Properties) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 Transaktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . .. . . . .. . . . . . . . . . . . . . . . . . . . . . . . 371
Praxisbeispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 Eine Tabelle anlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 Navigieren mit DAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 Den Datensatzzeiger bewegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 In Recordsets suchen . . . . . . . . . . . . . . . . . . . . . . . . . . .... . . . . . . . . ... . . . .. . . . . . . . . . . . . . . . . . 382 Eine Datenbank analysieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
Komplexbeispiel: Telefonverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 Eingabemaske . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 Programmierung . . . . . . . .... . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . ....... . . . . . . . .. . ... . . . 388 Test und Bemerkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
8 A DO-Programmi erung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . ... . . . . . . . . . 397 Ein erster Blick auf ADO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
Kleines Einführungsbeispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . . . . . . . . .. . . . . . . . . 398 Zur Geschichte von ADO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400 Hinweise zu den ADO-Bibliotheken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400 ADO und OLE DB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401 ADO-Objektmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
ADO-Grundoperationen . . . . . ..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404 Beziehungen zwischen den Objekten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404 Die Verbindung zur Datenquelle . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405 Aktionsabfragen mit dem Command-Objekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 Recordsets mit Daten füllen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
Weitere Operationen mit Recordsets . . . . . . . . . . . . . . . . . .. . . . . . .. . . . . . . .. . . . . . . . . . . . . . 416 Welche Recordset-Features werden unterstützt? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Inhaltsverzeichnis
Editieren von Datensätzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hinzufügen von Datensätzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Löschen von Datensätzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Recordsets filtern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ungebundene Recordsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Recordsets abspeichern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bewegen in Recordsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Daten direkt einlesen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sortieren . . . . . . . . . . .
Suchen . . . . . . . .
Ereignisse auswerten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zugriff auf ADO-Auflistungen . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Allgemeine Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Property und Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Field und Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Parameter und Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Error und Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Übersichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Connection-Objekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Command-Objekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Recordset-Objekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Praxis beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mit ADO auf eine Access-Datenbank zugreifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ein ADO-Datenklassenmodul verwenden . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ein intelligentes ADO-Frontend entwickeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
S QL in Th eo ri e und P rax is . . . . . . . . . . . . . . .
Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SQL-Dialekte .. . . . . . . . . . . .
Kategorien von SQL-Anweisungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Etwas (Datenbank-)Theorie .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Allgemeines/Begriffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Normalisieren von Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Beziehungen zwischen den Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Verknüpfen von Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Testprogramm und Beispieldatenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hinweise zur Bedienung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Beispieldatenbank im Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ADO Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bemerkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Daten abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Abfragen mit SELECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Alle Spalten auswählen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Auswahl der Spalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Filtern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Beschränken der Ergebnismenge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Eindeutige Records/doppelte Datensätze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tabellen verknüpfen . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . .
Ta bellen vereinigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
417 418 419 420 421 421 422 423 424 424 425 427 427 428 429 430 431 432 432 433 433 435 436 437 440
445 446 446 447 448 449 453 458 460 464 464 464 465 466 467 468 468 469 470 476 477 478 481
14 Inhaltsverzeichnis
Datensätze sortieren . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Datensätze gruppieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Unterabfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anlage-Felder mit SQL verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
History-Felder mit SQL abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mehrwertige Felder mit SQL abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Daten manipulieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Einfügen einzelner Datensätze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Einfügen von Abfragedaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . .
Exportieren/Importieren von Abfragedaten . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . .
Aktualisieren/Ändern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Löschen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Erweiterte SQL-Funktionen
482 483 485 489 491 493 494 494 496 497 500 501 502
Berechnete/Formatierte Spalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 Berechnungsfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510 NULL-Werte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511 Datum und Zeit i n SQL-Abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513 Datentypumwandlungen .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518 Kreuztabellenabfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 Steuerelemente-Eigenschaften in Abfragen verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 Globale Variablen in Abfragen verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
Datenbankverwaltung mit SQL (DDL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 Indizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525 Tabellen/Indizes löschen oder verändern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528 Sichten (Views) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529 Nutzer- und Rechteverwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530 Transaktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
SQL in der Access-Praxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' . . . . . . 531 SQL in Abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532 SQL im Basic-Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532 SQL beim Oberflächenentwurf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534 Basic-Funktionen in SQL-Anweisungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
Tipps & Tricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537 Wie kann ich die Anzahl der Datensätze ermitteln? . . . . . . . . . . . . 537 Wie nutze ich Datumsteile in SQL zur Suche? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537 Wie kann ich die Groß-/Kleinschreibung berücksichtigen? . . . . . . . . . . . . . . . . . . . . . . . . . 538 Warum erhalte ich zu viele Datensätze beim Verknüpfen? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538 Wie lösche ich doppelte Datensätze aus einer Tabelle? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
Praxisbeispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541 Ein komfortables SQL-Abfrageprogramm erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541 Datum und Zeit in SQL einbauen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
10 Fortg eschrit ten e Dat enbank programmi er ung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545 Datenbankverwaltung mit ADOX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
Datenbanken erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547 Tabellendefinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550 Indexdefinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
Inhaltsverzeichnis
Erstellen von Prozeduren und Sichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tabellen verknüpfen (Relationen) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Erstellen spezieller Feldtypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Automatische Zufallswerte (GUID) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Memofeld mit Archiv-Funktion (Nur anfügen) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anlage-Feld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rich-Text-Feld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Multivalue-Feld (MV F) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Berechnete Spalten . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Beschreibung von Datenbankfeldern setzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zugriffsschutz in Access- Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . .
Sichern auf Datenbankebene (DAO) . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sichern auf Datenbankebene (ADOI ADOX) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Erstellen neuer Benutzer und Gruppen (DAO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Vergabe von Rechten (DAO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Komplettbeispiel: Nutzerbasierte Sicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Erstellen neuer Benutzer und Gruppen (ADOX) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Vergabe von Rechten (ADOX) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verschlüsseln von Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Multiuserzugriff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . .
Verwenden der DAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verwenden der ADO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ODBC-Verbindungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ein Blick auf den ODBC-Datenquellen-Administrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Erstellen einer ODBC-Verbindung (DAO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Öffnen einer ODBC-Verbindung (DAO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Öffnen einer ODBC-Verbindung (ADO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _ . . .
Konfigurieren von ODBC-Verbindungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ODBCDirect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zugriff auf Fremdformate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
dBASE IIIIN- und FoxPro-Datenbanken . . . . . . . . . . . . . . . . . . . . . . . _ . . . . . . . . . . . . . . . . . . . .
Textdateien (TXT/ASCICSV) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Einbinden externer Tabellen . . . . . . . _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _
Verwenden der DAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verwenden der ADOX . . . . . . . . . . . .. . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exportieren von Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TransferDatabase-Methode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exportieren mit SQL-Anweisungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _ . . .
Replizieren von Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Replikation mit Hilfe der DAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Replikation mit Hilfe der JRO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optimierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Indizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Abfrage-Optimierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Möglichkeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ADO/DAOIODBC - Was ist schneller? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
556 557 558 558 560 561 563 564 568 571 572 572 574 574 575 577 579 584 585 587 589 590 593 595 595 597 598 599 600 600 601 601 605 608 609 611 613 613 613 614 616 619 621 621 621 622 623
16 Inhaltsverzeichnis
Tipps & Tricks . . . . . . . . . . . . . . . . . . . . . . . . . ; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625 Wie prüft man die ADO-Versionsnummer? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625 Access-Datenbanken exklusiv öffnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625 Access-Datenbanken im Netzwerk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625 Alle aktiven Verbindungen zur Datenbank auflisten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626 Das Datenbank-Kennwort ändern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626 Abfragen über mehrere Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628 Datenbanken reparieren/komprimieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
Komplexbeispiel: Datenbank-Backup/-Restore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629 Vorbemerkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629 Der selbst geschriebene Assistent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630 Oberfläche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630 Programmierung (Backup) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631 Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640 Bemerkung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . .. ... . . .. . . 640
11 Microso ft S QL Ser ver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642
Was ist SQL Server Express? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642 Unterschiede SQL Server Express/SQL ServerlJet-Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643 Client- versus Fileserver-Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644 Installation SQL Server Express . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646
Erste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650 Ein neues Access-Projekt (neue SQL Server-Datenbank) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650 Den Netzwerkzugriff für den SQL Server Express aktivieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652 integration in die Access-Oberfläche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655 Upgrading von Access zum SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656 Die wichtigsten Client-Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659 Vordefinierte Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 Einschränkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 Weitere SQL Server-Funktionen im Kurzüberblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664 Datenbanken verwalten mit DMO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666
Transact-SQL - die Sprache des SQL Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668 Schreibweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669 Kommentare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669 Zeichenketten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670 Variablen deklarieren/verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670 Bedingungen mit IF/ELSE auswerten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671 Verwenden von CASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672 Verwenden von \"1HILE .. . BREAK/CONTINUE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673 Datum und Uhrzeit in T-SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674 Verwenden von GOTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674 Fehlerbehandlung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675
Praktisches Arbeiten mit dem SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675 Erstellen neuer SQL Server-Datenbanken . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . 675 Erzeugen und Verwalten von Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678 Erzeugen und Verwenden von Sichten (Views) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685 Verwenden von Gespeicherten Prozeduren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687 Programmieren von Triggern . . ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691
Inhaltsverzeichnis
Erzeugen von Datenbankdiagrammen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . .
Volltextabfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Datenbanken sichern und wiederherstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fehlerbehandlung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . .
Das Fehlermodell des SQL Servers . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Verwenden von @@ERROR . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verwenden von RAlSEERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . .
Fehlerbehandlung mit TRY. .. CATCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fehlerbehandlung mit den ADO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Datensicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verwalten mit dem SQL Server Management Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verwalten mit T-SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . .. . . . . . . . . . . . . . . . . . . . . . . . . . .
Verwalten mit SQLDMO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . .
Tipps & Tricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Alle Nutzer einer Datenbank ermitteln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Alle registrierten Microsoft SQL Server ermitteln . . . . . . . . . . . . . . . . . .
Alle Datenbanken und deren Tabellen ermitteln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Eine Tabelle löschen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . .
Eine Tabelle mit den DMO erzeugen . . . . . . .. . . . . . .. . . . . . . . . . . .. . . . . . . .. . . . . . . . . . . . . . . .
Anzahl der Datensätze beschränken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Platzhalterzeichen in TSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Leerzeichen entfernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Teilstrings erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mit einer Datenbankdatei verbinden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Warum wird @@ERROR nicht korrekt verarbeitet? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Anzahl der Datensätze einer Abfrage bestimmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Warum sind Abfragen mit Platzhaltern so langsam? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Groß-/KIeinschreibung berücksichtigen . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Das Ergebnis einer Stored Procedure speichern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Nach dem Löschen IDENTITY auf 0 setzen . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . Datenbankstruktur kopieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Eine Tabellenspalte umbenennen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Aktualisierungs- und Löschweitergaben realisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Daten aus verschiedenen Datenbanken anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
übersichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Unterschiede Access- und SQL Server-Daten typen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12 Dateien und Verzeichnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ANSI/ASCII/Unicode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Gemeinsamer Dateizugriff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verwenden der File System Objects . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . .. . .
Zugriff auf das Dateisystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ermitteln aller Laufwerke und deren Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ermitteln aller Verzeichnis-Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... .
Auflisten aller Unterverzeichnisse eines bestimmten Folders . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rekursiv alle Unterverzeichnisse auflisten . . . . . . . . . . . . . .
17
696 697 703 708 708 709 709 710 712 714 714 717 720 723 727 727 728 729 730 730 731 731 732 732 732 733 734 734 734 735 735 735 737 737 737 738 738 739
741 742 742 742 743 744 744 746 746 747
18 I nha ltsverzeichnis
Ein Verzeichnis erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748 Das Datenbankverzeichnis bestimmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749 Abfragen des Temp-/System-/Windows-Verzeichnisses . . . . . . . . . . . . . . . . 750 Prüfen, ob eine Datei existiert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750 VerzeichnisselDateien kopieren/löschen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751 Auflisten aller Dateien eines Verzeichnisses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751 Name, Pfad und Extension einer Datei ermitteln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752 Einen Tempfile-Namen erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754
Textdateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 754 Klassischer Zugriff auf Textdateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755 Zugriff auf Textdateien mit den File System Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757
Typisierte Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760 öffnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760 Lesen/Schreiben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Binärdateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . INI -Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Registrierdatenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . APINBA-Zugriff auf die Registrierungsdatenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . API-Konstanten/Funktionen für den Registry-Zugriff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Prüfen, ob ein Schlüssel existiert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Einen vorhandenen Wert auslesen Einen Schlüssel erstellen Einen Wert setzen bzw. ändern . . . . . . . . . . . . . . . . . . . Einen Schlüssel löschen . . . . . . . . . . . . . . . . . . . . . Ein Feld löschen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aufruf der Funktionen
Dateidialoge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Variante 1 (Office 14 Library) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Variante 2 (Windows-API) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Verzeichnisdialog (Windows-API) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Übersichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dateifunktionen in Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FSO-Eigenschaften und -Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Praxisbeispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Auf eine Textdatei zugreifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dateien suchen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Die Shellfunktionen verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Einen Verzeichnisbaum in eine TreeView einlesen . . . . . . . . Ein Datenbank- Backup mit CDIDVD-Brenner realisieren
X M L in Theorie und Praxis
761 762 762 763 765 765 767 767 769 770 770 771 772 772 772 774 775 778 783 784 784 785 787 787 791 793 797 798
805 XML - etwas Theorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806
Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806 Der XML-Grundaufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809 Wohlgeformte Dokumente . . . . . . . . . . . . . . . . . . . .. . . . . . . . .. . . . . . . .. . . . . . . . . . . . . . . . . . . . . . 810 Processing Instructions (PI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812
Inhaltsverzeichnis
Elemente und Attribute .... . ... . . ... . . . .. . . . . . . . .. ..... .. . . . .. .... . .. . . . . .
Verwendbare Zeichensätze ... ... . . ..... .. . . . . . . . . . .. . . . .
XSD-Schemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _ . . . . . . . . . . . . .
19
813 814 816
Das Grundprinzip .. . . . . . . . ... . . .. . . . . . . .. . . . . . . . . . . . . . . . . . . . . _ . . . . . . . . . . . . . . . 816 Ein XSD-Schema mit Microsoft Access erzeugen . . .. . . . . . . . . . . . . . . .. . . . . . . . . . . . . _ . . . . . . 818
XML-Verarbeitung mit dem DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821 Was ist das DOM? . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 822 Erste Schritte .. . 823 Laden von Dokumenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825 XML-Fehlerprüfung/-Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825 Erzeugen von XML-Dokumenten . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827 Auslesen von XML-Dateien . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . " . . . . . . . . . . . . . . 829 Einfügen von Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833 Attribute oder Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835 Suchen in den Baumzweigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839 Das Interpretieren von Leerzeichen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842
XML-Integration in Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845 Importieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _ _ . . . . . . . . . . . . . . . . . . . . . 845 Exportieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 848 XML-Transformation mit XSLT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851 Application-Objekt (ImportXMLlExportXML) . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . 853 ADO-Recordset . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 856
Vor- und Nachteile von XML . . . . .. . . . 859 Grundsätzlicher Vergleich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . _ . . 859 Zeitvergleich ADO/XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859
Praxisbeispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 861 Speichern im UTF-8-/UTF- 16-Format . .. . . .. . . . . . . . . . _ . . . . . . . . . . . . . . .. . . . . . . . . .. . . . . 861 Laden UTF-8-/UTF- 16-Format aus einem ADO-Stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863 XML-Daten asynchron verarbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XML-Daten in einer TreeView darstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Navigieren zwischen einzelnen XML-Baumknoten . . . . . . . . . . . . . . . . .. .
ADO-XML-Streams nachbearbeiten . .. . . . . . . . . .. . ... . . . .. . . . . . . . . . .
Strukturierte Textdaten in XML-Dokumente umwandeln . . . . .. .. . . .. . . . . .. . . . . . .. . . . .
14 Programmschnittstel len . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . .. . . . . . . . . . . . _ . . . . . . . . . . . . . . . Zwischen ablage . . ... . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Kopieren/Einfügen mittels DoCmd-Objekt . .. .. . ... . . . .. ... . . . . . . .. . . . . . . ... . . . . . . - . . .
Ein Clip board-Objekt programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
API- und DLL-Einbindung ... . .. . . . . . . . . . . . . . . . . _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Allgemeines ' " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Und was ist mit der 64-Bit Access Version? . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . .
Woher bekomme ich Informationen über die Win32-API? . .. . . . . . . ... .... . .. .. . . . . . ... .
Einbinden der Deklaration ... . . . . . . . . . .. . ... . . . .. .. . . . . . Wert oder Zeiger? . . . . . . . . . .. . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ausnahmen bestätigen die Regel - übergabe von Strings . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verwenden von As Any . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .
übergabe von Arrays . . . .. .. . .. . . ... . . . . . . . . ... . . .. . . . . . . . . . . . .. . . . . . .. . . . .. . . . . . . . . . .
Besonderheiten mit Records ... . . . . . .. . . . . . . . . .. . . . . . . ... . . . . .. . ... . . . . . . .. . . . ..... . . .
Zuordnen der Datentypen . . . . . . . . . . . .. .... . . . . . . .. . . . . . . .
865 866 869 872 875
877 878 878 879 882 882 882 884 885 887 887 888 889 890 891
20 Inhaltsverzeichnis
OLE/ ActiveX überblick OLE . . .
892 892 893
übersicht zum Objektfeld-Steuerelement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 894 Programmieren mit dem Objektfeld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897 ActiveX-Code-Komponenten (OLE-Automation) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900 Programmieren mit ActiveX-Code-Komponenten . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . 901
DDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904 Funktionsprinzip . . . . . . . . . . . . . . . . 904 Verwenden von Steuerelementen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904 VBA- Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 906
Scanner-Unterstützung per WIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907 Was kann WIA? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907 InstallationlVorbereitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907 Einstieg mit kleiner Beispielanwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 909 Reagieren auf das Verbinden/Trennen von Geräten . . . . . . . . . . . . . . . . . . . . . . . . 910 Ermitteln der verfügbaren Geräte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 911 Anzeige der Geräteeigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 911 Ein Bild einlesen . . ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 913 Bild(er) drucken (Assistent) . . . . . . . . . . . . . . . . . . 914 Den Scanner-Assistent aufrufen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915 Grafikbearbeitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 916
Arbeiten mit Excel-Arbeitsmappen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 918 Zugriffsmöglichkeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 918 TransferSpreadsheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 919 Import/Export per DAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 922 Daten auslesen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926 Zugriff auf Tabellenbereiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . 928 OLE-Automation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 929
Praxis beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932 Eine externe Anwendung starten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932 Informationen über das aktuelle System ermitteln . . . . . . . . . . . . . . . . . . 934 Das aktuelle Betriebssystem ermitteln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . 937 Den Windows-Lizenznehmer ermitteln . . . . . . . . . . . . . . . . . . . . . . 939 Zeitmessungen in Access durchführen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 940 Microsoft Word über ActiveX steuern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 944 Microsoft Excel über ActiveX steuern . . . . . . . . . . . . . . . . . . . . . . .. . 947 Von Visual Basic 20 10 per OLE-Automation auf Access zugreifen . . . . . . . . . . . . . . 949
15 Access im Internet/Intranet . . . . Kleine Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Internetllntranet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TCP/IP und UDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
URL, HTTP und HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Webdienst/Webservice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hyperlinks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hyperlinks in Tabellen . . . . . . . . . . . . . . .
Hyperlinks verwenden . . . . .
955 956 956 957 958 959 960 960 962
Inha ltsverzeichnis 21
Exportieren von Daten im HTML-Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964 Automatisches Generieren von HTML-Seiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 965 Exportieren mit Hilfe von SQL-A.nweisungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 966 HTML-Export über Textdateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 966
Darstellen von HTML-Seiten in Microsoft Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 968 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 968 Das WebBrowserControl-Objekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 969 Alternative: Einbinden des ActiveX-Steuerelements in Access . . . . . . . . . . . . . . . . . . .. . . . . . . . 972 Einen Web-Browser programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 973 Einsatz des InternetExplorer-Objekts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975
Zusammenarbeit mit E-Mail-Programmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976 Mailversand über das DoCmd-Objekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977 Mailversand über OLE-Automation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 979 Mailversand über die MAPI .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 980 Eingabedaten per E-Mail sammeln 981
16 Access und SharePoint . . . . . . . . . . . . 987 Kurzeinführung SharePoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . . 988
Versionsübersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 988 Soft- und Hardwareanforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 989 SharePoint Foundation 2 0 1 0 . . . . . . . . . .. . .. . .. . . . . . . ... . . . . .. . . . . . .. . . . . .. . . . . . . . . . . 990 SharePoint Server 20 1 0 Enterprise Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 991 Access Services - was ist das? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 992 SharePoint-Listen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 992 SharePoint-Datentypen .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 993 Formen der Zusammenarbeit von SharePoint und Access 2 0 1 0 . . . . . . . . . . . . . . . . . . . . . . . . . . 994 Vorteile von SharePoint gegenüber Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 995
Import W1d Einbindung von SharePoint-Listen . . . . . . . . . . . . . . . . . . . . . ..... . . . . . . . . . .. . . . . . . . 995 Zu erwartende Probleme beim Import . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 996 Listen vom SharePoint-Server einbinden/importieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 999 Arbeiten mit Offline-Daten . . . . . . . . . . . . . . . . . . . .. . . . . . . .. . . . . . . . . . . . . . . . . 1002
Access-Daten auf den SharePoint-Server exportieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1005 Probleme beim Export . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1006 Alle Tabellen nach SharePoint migrieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1007 Access-Datenbanken in SharePoint veröffentlichen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1007
Tipps & Tricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1010 Eine SharePoint-Liste erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1010 Eine SharePoint-Ansicht erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . ... . . . . . . . . . . . . . 1013 Die Datenblattansicht nutzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015 Ärger mit dem Offline-Modus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1016 Tabellen per Browser importieren .. . . .. . . . . ... . . . ... . . . . . . . .. . .. . . . . . . . . . . . . . . . . . 1017
17 Die Access Ser vices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1019 Das Grundprinzip . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1020
Unterscheidung zwischen Client- und Web-Objekten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1021 Vor- und Nachteile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1023 Grundsätzliche Einschränkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024 Verwendung der Access-Runtime . . . . . . . . .. . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1025
22 Inhaltsverzeichnis
Das Veröffentlichen im Detail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Eine neue Webdatenbank erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . Eine bestehende Datenbank migrieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _
Veröffentlichen und erster Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . .
Hilfe! Was passiert mit meinen IDs? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ein Standardformular festlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Synchronisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Synchronisationskonflikte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Offline-Szenario/Zwischenspeichern der Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _
Die Web- und Clientobjehe im Detail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Übersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arbeiten mit Webtabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Makros . . . _ _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Webformulare/Clientformulare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Berichte . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tipps & Tricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Administrieren der Access Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Einstellungen innerhalb des eigenen Webs vornehmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anonymen Zugriff auf die Website ermöglichen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Distribution Ihrer Webanwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Eine Webdatenbank in eine lokale Datenbank umwandeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18 Datend ienste in Microsoft Access einbinden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Übersicht zu den Konzepten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ein erster Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Grundlagen von Webdiensten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Bedeutung der Business Connectivity Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verwendung der BDCM-Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Einschränkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Unsere Werkzeuge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Komplettbeispiel: Vom Webdienst bis zur Einbindung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Erstellen des Webdienstes mit Visual C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Erzeugen der BDCM-Datei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Einbinden in Microsoft Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zugriff auf Webdienste mit VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ' " . . . . . . . . . . , . . . " . . . . .
19 Anwendungsdesign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Access-Oberflächengestaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Beschriften der Kopfzeile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Informationen in der Statuszeile anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fortschrittsanzeige mit dem Progressbar realisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Navigationsbereich konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Access-Hauptfenster komplett ausblenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Steuern der Anwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Autostart mit AutoExec-Makro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Formulare automatisch starten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Warten auf das Ende . . . . . . . . . .
1026 1026 1027 1028 1031 1032 1033 1034 1035 1039 1039 1040 1043 1047 1049 1051 1051 1051 1053 1055 1059 1059
1061 1062 1062 1063 1066 1067 1068 1069 1069 1069 1074 1078 1080 1081
1083 1084 1084 1086 1087 1088 1094 1097 1097 1098 1099
Inha ltsverzeichnis 23
Access per VBA beenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1099 Runtime-Modus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1100 Befehlsze. ilen-Optionen verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Entwickeln von Assistenten und Add-Ins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1101 1102
Assistenten-Typen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1102 Einbinden der Assistenten in die Access-IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1103 Menü-Assistent (Beispiel) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1105 Objekt-Assistent (Beispiel) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107 Steuerelemente-Assistent (Beispiel) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1110 Eigenschaften-Assistent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1113
Entwickeln und Einbinden von Managed A dd-Ins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1114 Interaktion Anwendung/Add-In . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1114 Entwurf des Add-Ins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115 Verweise einrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1117 Der Quellcode des Add-Ins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1118 Formularentwurf für das Add-In . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1121 Kompilieren und Einbinden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1121 Das Access-Formular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1122
20 Menüband und Backstage-Ansicht programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1125 Allgemeine Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1126
Manuelle Konfigurationsmöglichkeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1127 Grundprinzip der Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1128 Verwenden der Tabelle USysR.ibbons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1129 Application.LoadCustom UI als Alternative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1130
Ein kleines Testprogramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1131 Praktische AufgabensteIlungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1132
Informationen über Steuerelemente und Symbole erhalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1132
Hauptregisterkarten ausblenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1135 Einzelne Registerkarten ausblenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1136 Einzelne Gruppen ausblenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1137 Eigene Registerkarten, Gruppen und Schaltflächen einfügen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1137 Ereignisbehandlung mit VBA-Code/Makros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1139 Verändern von Eigenschaften mit VBA-Callbacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1140 Aktualisieren des Menübands per VBA-Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1141 Kontextabhängige Registerkarten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1142 Registerkarten per VBA aktivieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1143 Fehlermeldungen des Menübands anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1143 Vorhandene Funktionen des Menübands ändern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1144 Die Schnellzugriffsleiste erweitern/programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1145
übersicht der Steuerelemente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . " 1146 labeiControl-Steuereiement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1146 button-Steuerelement 1146 separator-Steuerelement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1150 toggleButton-Steuereiement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1151 buttonGroup-Steuerelement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1152 checkBox-Steuerelement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1153 editBox-Steuerelement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
comboBox-Steuerelement 1153 1155
24 Inha ltsverzeichnis
dropDownElement-Steuerelement . . . . . . . . . . . . . gallery-Steuerelement . . . . . . . . . . . . . . menu-Steuerelement . . . . . . . . . . . . . . . . . . . . . . . . . . splitButton-Steuerelement . . . . . . . . . . . . . . . . . . . . . . . . . . . dialogBoxLauncher . . . . . . . . . . . . . . . . . . . . . .
Die Backstage-Ansicht konfigurieren und programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Die Standardansicht verändern . . . . . . . . . . . . . . . . . . . . . . . . . . . Die drei möglichen Layouts für Registerkarten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Die neuen Möglichkeiten von Gruppen . . . . . . . . . . . Anordnen von Steuerelementen mit LayoutContainern . . . . . . . . . . . . . . . . . . . .
Das Verhalten der Schaltflächen beeinflussen . . '
Mit VBNMakros auf Ereignisse reagieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tipps & Tricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die guten alten Access 2003-Menüs anzeigen . . . . . . . . . . . . . . . . . . . . . . Das Office-Menü für Access 2007 anpassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XML-Daten komfortabel editieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arbeiten mit dem RibbonCreator
Übersichten . . . . . . . . . . . . . . . . . . . . Callback-Methoden für das Menüband . . . . . . . . .
21 Techniken der Prog rammentwicklung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fehlersuche . . . . . . . . . . . . . . . .
Direktfenster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Verwendung des Debug-Objekts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arbeiten mit dem Lokal-Fenster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Überwachungs- Fenster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Noch mehr Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fehlerbehandlung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Anweisungen zum Error-Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Beispiele zum Error-Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fehlerbehandlung per Ereignis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fehlerbehandlung komplett deaktivieren . . . . . . . . . . . . . .
Dialogfelder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Einfache MsgBox-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ausführliche MsgBox-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rückgabewerte der MsgBox-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Abfrage von Werten mit der InputBox-Funktion . . . . Libraries unter Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Erstellen und Einbinden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Einfaches Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . H inweise . . . . . . . . . . . . . .
Programmieren von ActiveX-DLLs mit VB 2 0 1 0 . . . . . . . . . . . . . . . . . . . . Die Wahl der Entwicklungsumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vorbereitungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Einbinden in Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Registrieren der Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1158 1161 1163 1166 1167 1168 1170 1172 1177 1180 1181 1181 1183 1183 1184 1185 1186 1188 1188
1191 1192 1193 1194 1195 1196 1197 1201 1201 1202 1204 1204 1205 1205 1206 1207 1209 1209 1210 1210 1211 1213 1213 1214 1214 1217 1220 1223
Inhaltsverzeichnis 25
A
DLL-Programmierung mit C++ 20 1 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223 Entwicklungsumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223 Projekt und Dateien erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1224 Ein- und Austrittsprozedur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1226 Aufrufkonventionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1227 Funktionsparameter und Variablentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1227 Beispiel einer Sortierroutine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1231 Tipps und Tricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234
Entwickeln von HTML-Hilfedateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1235 HTML Help Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1236 Unterschiede WinHelp - HTMLHelp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1236 Kurzbedienung am Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1237 Aufruf der HTML-Hilfe unter Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ' . . . 1240 Alternative Hilfe-Entwicklungsumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1240
Verteilen von Access-Anwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1241 Vorbereitungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1242 Erstellen der Installationsdateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1242
Praxisbeispiele . . . . Arbeiten mit dem Debugger
Glossar . " " . . . . . . . . . . .
1247 1247
1253
B Wichtige Dateierweiterungen
c ANSI-Tabel le . . . .
1259
1261
D Wichtige Tastaturcodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tastencodes für KeyDown, KeyUp . . . . . . . . . . . . . . . . . . Tastencodes der SendKeys-Funktion . . . . . . . . . . . . . . .
1265 1266 1268
Stichwortverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1269
top related