21
Microsoft Access 2010 Programmierung - Das Handbuch von Walter 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

Microsoft Access 2010 Programmierung - Das Handbuch …€¦ · Microsoft Access 2010 Programmierung - Das Handbuch von Walter Doberenz, Thomas Gewinnus 1. Auflage Microsoft Access

Embed Size (px)

Citation preview

Page 2: Microsoft Access 2010 Programmierung - Das Handbuch …€¦ · Microsoft Access 2010 Programmierung - Das Handbuch von Walter Doberenz, Thomas Gewinnus 1. Auflage Microsoft Access

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

Page 3: Microsoft Access 2010 Programmierung - Das Handbuch …€¦ · Microsoft Access 2010 Programmierung - Das Handbuch von Walter Doberenz, Thomas Gewinnus 1. Auflage Microsoft Access

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

Page 4: Microsoft Access 2010 Programmierung - Das Handbuch …€¦ · Microsoft Access 2010 Programmierung - Das Handbuch von Walter Doberenz, Thomas Gewinnus 1. Auflage Microsoft Access

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

Page 5: Microsoft Access 2010 Programmierung - Das Handbuch …€¦ · Microsoft Access 2010 Programmierung - Das Handbuch von Walter Doberenz, Thomas Gewinnus 1. Auflage Microsoft Access

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

Page 6: Microsoft Access 2010 Programmierung - Das Handbuch …€¦ · Microsoft Access 2010 Programmierung - Das Handbuch von Walter Doberenz, Thomas Gewinnus 1. Auflage Microsoft Access

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

Page 7: Microsoft Access 2010 Programmierung - Das Handbuch …€¦ · Microsoft Access 2010 Programmierung - Das Handbuch von Walter Doberenz, Thomas Gewinnus 1. Auflage Microsoft Access

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

Page 8: Microsoft Access 2010 Programmierung - Das Handbuch …€¦ · Microsoft Access 2010 Programmierung - Das Handbuch von Walter Doberenz, Thomas Gewinnus 1. Auflage Microsoft Access

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

Page 9: Microsoft Access 2010 Programmierung - Das Handbuch …€¦ · Microsoft Access 2010 Programmierung - Das Handbuch von Walter Doberenz, Thomas Gewinnus 1. Auflage Microsoft Access

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

Page 10: Microsoft Access 2010 Programmierung - Das Handbuch …€¦ · Microsoft Access 2010 Programmierung - Das Handbuch von Walter Doberenz, Thomas Gewinnus 1. Auflage Microsoft Access

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

Page 11: Microsoft Access 2010 Programmierung - Das Handbuch …€¦ · Microsoft Access 2010 Programmierung - Das Handbuch von Walter Doberenz, Thomas Gewinnus 1. Auflage Microsoft Access

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

Page 12: Microsoft Access 2010 Programmierung - Das Handbuch …€¦ · Microsoft Access 2010 Programmierung - Das Handbuch von Walter Doberenz, Thomas Gewinnus 1. Auflage Microsoft Access

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

Page 13: Microsoft Access 2010 Programmierung - Das Handbuch …€¦ · Microsoft Access 2010 Programmierung - Das Handbuch von Walter Doberenz, Thomas Gewinnus 1. Auflage Microsoft Access

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

Page 14: Microsoft Access 2010 Programmierung - Das Handbuch …€¦ · Microsoft Access 2010 Programmierung - Das Handbuch von Walter Doberenz, Thomas Gewinnus 1. Auflage Microsoft Access

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

Page 15: Microsoft Access 2010 Programmierung - Das Handbuch …€¦ · Microsoft Access 2010 Programmierung - Das Handbuch von Walter Doberenz, Thomas Gewinnus 1. Auflage Microsoft Access

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

Page 16: Microsoft Access 2010 Programmierung - Das Handbuch …€¦ · Microsoft Access 2010 Programmierung - Das Handbuch von Walter Doberenz, Thomas Gewinnus 1. Auflage Microsoft Access

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

Page 17: Microsoft Access 2010 Programmierung - Das Handbuch …€¦ · Microsoft Access 2010 Programmierung - Das Handbuch von Walter Doberenz, Thomas Gewinnus 1. Auflage Microsoft Access

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

Page 18: Microsoft Access 2010 Programmierung - Das Handbuch …€¦ · Microsoft Access 2010 Programmierung - Das Handbuch von Walter Doberenz, Thomas Gewinnus 1. Auflage Microsoft Access

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

Page 19: Microsoft Access 2010 Programmierung - Das Handbuch …€¦ · Microsoft Access 2010 Programmierung - Das Handbuch von Walter Doberenz, Thomas Gewinnus 1. Auflage Microsoft Access

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

Page 20: Microsoft Access 2010 Programmierung - Das Handbuch …€¦ · Microsoft Access 2010 Programmierung - Das Handbuch von Walter Doberenz, Thomas Gewinnus 1. Auflage Microsoft Access

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

Page 21: Microsoft Access 2010 Programmierung - Das Handbuch …€¦ · Microsoft Access 2010 Programmierung - Das Handbuch von Walter Doberenz, Thomas Gewinnus 1. Auflage Microsoft Access

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