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 Kurzübersicht Vorwort . . . . . . . . ... . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 1 Ein füh r un g . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .... . . . . . . . . . . . 31 2 Programm ier ne mit VBA . . . . . . . . . . . . . 73 3 D at nemakros . . . . ... . . . . . . . . . . .... . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . 141 4 Form ul a r e und St euer elem net e .. . . . . . . . . . . ... . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . 161 5 B re cht i e . . . . .. . . . . . . . . . . . . . . . . . . . ..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 6 Programmi er ne mit Ob jekt ne . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . 7 . . . . . . . . . . . . . . . . .. 273 . D A O -Programmi er un g . . . ... . . . . . . . . . . . . ... . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 8 A DO-Progra m m i re ung ... . . . .. . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . 397 9 S QL in Th oeri e und Pra ixs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 10 Fortg sechri tten e D at ne bank prog rammi re ung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . 545 11 Microso tf S QL S re ver . . . . . . . . . . . . . . . . . . . 641 12 D at ie ne und Verzeich niss e 741 13 XML i n Th oe ri e un d Pra ixs 805 14 P rogram msch n ttst i ellen . . . . ... . . ... . . . . . . . . . .... . . . . 877 15 Acc ses im nt I erneI t/ ntran te . . . . . .... . . . . . . . . . . . . ... . . . . . . . . . . .. . . . . . . . . . . . . .. . 955 16 Acc ses und Shar Peoint . . . . . . . . . . . . . .. . . . . . . . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 987 17 Di eAcc ses S re vic se . . . .. . . . . . . . . . 1019 18 D at ne di nest ein Microso tf Acc ses ienbind ne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1061 19 Anw ne d un gsd seign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . .. . . . . . . . . . 1083 20 Men üba n d und Backstag -eAnsicht prog rammi re ne . . .... ............................ 1125 21 Technik en d re Prog ramm netwick lun g . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . 1191 A Glossar . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . ... 1253 B Wichtig e D at ie rew iet re un g ne . . . . . . . . . . . . . . . .... . . . . . . . . . . . . . . . . . . .... . . . . . . . . . .. . . 1259 c ANS -T I a b elle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1261 D Wich igt eTastat urcod se . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 1265 . . . . . Stichwort ver zeichnis . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1269 Inhaltsverzeichnis 'iiiM@;. Die Bonuskapitel 9 und 13 finden Sie als PDF-Datei auf der beiliegenden CD. Im Inhaltsverzeichnis sind sie durch ein CD-Symbol gekennzeichnet 1 Vorwort 27 Ein füh r un g 31 VBA- Programmierung unter Microsoft Access 2010 32 Visual Basic versus VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . Objekt- und ereignisorientierte Programmierung VBA- oder Makro-Programmierung? Die VBA-Entwicklungsumgebung Formularentwurf . . . . . . . . . . . . . Code-Fenster und Symbolleiste . . . . . . . . . . . . . . . . . . . . . . . . . . Das Code- Fenster . . . . . Arbeiten mit der Hilfe Sicherheitseinstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . ...... . . ... . . . . . . . . . . .. . ... . . . ......... . . . . ........ . . .......... . .. . . . . . Das Eigenschaftenfenster Der Projekt-Explorer . ... . .. . . . 32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Das Sicherheitscenter . . . . . . . . . . . . . . . . . . . . 42 . . . . . . . . . . . . . . . . . ...... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 . . . . . . . . . . . . . . . . .. . . 45 . . 48 ............... . . .... . . . .. ....... . . . . . . ... .. . Erstellen der Testdatenbank . ... . ..... . Programmieren mit VBA . . . . . . . Automatische Makrokonvertierung Programmieren mit Datenmakro . . . ........ .. . . . ... . ........... . . ....... . . .. . . ..... . . . . ........... Konventionelle Programmierung . . Highlights und Features von Access 20 1 0 . .. . . . .. . . ... ..... . .. ........ ... . . . . . . . Zur Geschichte der Vorgängerversionen . . . . . . . . . . . . . . . . . . . . . .. . . . . . . .. . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . . . . . . . . ....... . . . . . . . . . . 61 . . . . . . . . . 63 . . . . . . . . . ..... , .. . . . . . . . . . . . . . . . . . . . . . . 68 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P og r ar m m ieren mit VBA ... . . . . ............. . . . . . . . . ... . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 73 Datentypen, Variablen und Konstanten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 65 68 Deutsche und englische Bezeichner . 51 60 übersichten und Ergänzungen . . DoCmd-Objekt . . . . 50 50 56 . . ..... .. . ... . . . ....... ...... . ... . . . . Das ist neu i n Microsoft Office Access 2010 . 38 42 . Definition vertrauenswürdiger Speicherorte Übersicht 35 41 . . . .. . Eine nicht vertrauens"vürdige Datenbank öffnen 2 34 34 37 . Zur Geschichte der Access-Sicherheit . . Einführungsbeispiele . 33 37 . ........... ............ ....................... . 32 74 . . . . . 74 Variablendeklaration 75 Konstantendeklaration 80 Gültigkeitsbereiche 80 . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . 8 Inhaltsverzeichnis Einzelheiten zu den Datentypen . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . .. . . . Single- und Double-Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Integer-, Long- und Boolean-Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Date- Datentyp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....... . . . Currency-Datentyp . . . . . . . . . . . . . . . . . . . . . . . . . String-Datentyp . . . . .. . . . . . . . Variant- Datentyp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . Datenfelder (Arrays) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Statische Arrays .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dynamische Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Benutzerdefinierte Datentypen . . . . . . . . . . . . . . . . Type-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . With-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Strings innerhalb Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Enumerationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arrays in benutzerdefinierten Typen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operatoren . . . . . . . . . . . . . . . . . . . .... . . . . Arithmetische Operatoren . . . . . . . . . . . . . Logische Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vergleichsoperatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . Bedingte Verzweigungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Schleifenanweisungen . . . . . . . . . . . . . . . . . . . . . . .. . GoTo und GoSub .. . . . . . . . .. . . .. . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . Zeichenkettenfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stringverarbeitung Format-Funktion Vordefinierte Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mathematische Funktionen Finanzmathematische Funktionen . . .. .. . . . . . . . . . . . . .. . Datums-/Zeitfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ben utzerdefmierte Funktionen/Prozeduren Funktion . . . . . . . . . Prozedur . . . . . . . . . . . . . . . . . . . . . .. . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Parameterüb ergabe ByRef oder ByVal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ................... Optionale Argumente Benannte Argumente . . . . . . . . . Parameter-Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . .. . . . . . . . . . . Dynamische Arrays als Argumente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rückgabe von Arrays . . . . .. . . . ... . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . .. . . . . Private-, Public- und Static-Dekla rationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Übersichten und Ergänzungen . . Datumskonstanten . . . . . . . . . . . . . . . . ... . . . . . . . . . . . . . . . . . . . . .. . .. . . . . . . . . . . Rückgabewerte der VarType- 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 9 Inhaltsverzeichnis 3 Dat enm akros . . Grundlagen von Datenmakros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Einsatzmöglichkeitem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funktionsprinzip . . ................... . Datenmakros und VBA . . . . . . . . . . . Erzeugen von Datenmakros . . . . . . . . . . .......................................... . Datenmakros umbenennen, löschen und ändern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ................ .................................. .......... Aktionen in Datenmakros .................................. Aktionen für alle Tabellenereignisse Zusätzliche Aktionen der Nachfolgeereignisse . . . . ... . . . . Auswahl des richtigen Tabellenereignisses . . Vorabereignisse . ..................................... ........ Nachfolgeereignisse ............ Einschränkungen ................... ............... Praxisbeispiele . ............ ................ . . . . . . . . Ein ereignisgesteuertes Datenmakro erstellen . . Arbeiten mit einem benannten Datenmakro . . . . USysApplicationLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Per VBA auf ein benanntes Datenmakro zugreifen . . . Änderungen von Tabelleninhalten protokollieren 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ........................ . F om r ulaer un d Ste u e er em l en te 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Praxisbeispiele . . . . . . . . . . . . . . . . . . . . Das Textfeld programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . In ungebundene Textfelder ein- und ausgeben Ein ungebundenes Kombinationsfeld füllen . . . . . . . . . . . . ... . . . . . . . . . . . . . . . . . . . . . . ... . . . . . . . . . . . . . . . . Vergleich mit den integrierten Steuerelementen . . . . StatusBar als Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..................... . . . . . . . . . . . . . 141 142 142 143 144 144 145 145 146 146 146 147 147 147 148 148 148 153 157 158 161 162 162 163 163 163 164 170 171 172 173 176 177 178 181 182 182 183 194 195 196 198 198 199 203 203 205 207 10 Inhaltsverzeichnis Ein Unterformular programmieren . . . . . . . . Das Register-Steuerelement kennen lernen Eine Statusleiste programmieren . Verwenden von Bild-Ressourcen . . . . . . . . . . . . .... ..... . ... . . . . . . . . . . . . .. . ... . ... ..... . . Programmieren des Navigationssteuerelements . . 5 .... . ... . . . . . . .... . . . . . . . .... . . . . . .. . .... . .. . . . . . ... . .... ... . . . . . . . . . . . . . .... .. . . ... . . . .. . . . ... . . . ... . . . . . . . . . . . . '" . . . . . . . . . . . . .. . . . ... . . . .... . . . . . . . . . ... . . .... . . . ... . . . B re cht i e. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .......... .... . .. .................................... ................. ........... .. ... . ....................... .. Reportansichten Allgemeines . . . . . . . . . . . . . . . Die OpenReport-Methode . . . Parameterübergabe . ......... . . .. . . . . . . . .. . . . . . . . . . . . . . . ... . .. . . . . . . . ... . . .. . ..... . . . . . . . ...... . . . . . . . . . . ..... .... . . .. . . . . .. . . . . . . ...................................... . . . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .... . . . . . . . .. .. . ... . . . . . . . . Dateneigenschaften . . . . . . . . Grafikeigenschaften . .... . Wichtige Berichtseigenschaften . . Formateigenschaften .... . . . . . .... . .. .. . . . .. . . .... . . . . . . . .. . . . . . . ..... . ... . . . . . . .... . . . . .. .. . . . . . ... . . . . . . . ..... .... ........ . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . ... . . . . . . . . . . ... . . ..... Schrifteigenschaften . . Farb- und Mustereigenschaften . .. . .. ... ..... . . . . ... .... . ... . . . . . Sonstige Eigenschaften ... ... . .. . . ................................... Berichtsereignisse . . . . . . . . . .. . ... . . . . . .. . . . .. . ... . ... Allgemeine Ereignisse . . . . . . . . .. .. .. . . . .. .. ................ Tastatur- und Mausereignisse . . . . . .... ... . ... .. . .. . ... .... Berichtsmethoden .. . . . . .... ..... .... ... . . .. . . . . ... . . ... . Grafikmethoden (Übersicht) . . . . . . .. . . . . . . . . . . . . . . . . .... .. .. . . . ....... ... . . .. . ... ... . .. ... ... . . . . . Scale . . . Linien- und Stifteigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Line . . PSet . . . . . . . . . . . Circle Print . . . . . . . . . .. . ...... . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .... . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . .. . . . . . . . . . . . . . . . . . . .. . . . .... . . . . . ... . . . . . . . . . . . . . .. . ... . . . . . ... ..... . . . . . . . . ... . . . . . .. . . . . . . . .. . ... . . . . . . . . . . . . . . . . . . . ..... .... .. . . . . . . . . . . . . . . . . . . ... . . . . . . . . . . .. . . . . . . . . ..... .. Weitere Features des Report-Objekts . . .... ... . . ... . . . .. . . . . . . . . . . . . . . ... . . . . . . . . .. TextWidth und TextHeight Sonstige Methoden . . . .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . . . . . . . . . . .. ... . . . . . . . . . . . . .. .. . . . . . . . . .... .... ... . ... . . . . . . . . . . . . . . . .... ... . . . . . . . . . . ... . Rich-Text-Felder drucken . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Verlauf eines Memofeldes drucken . Eine Liste der A.nlagen drucken Berichte nachträglich ftItern . . . . . . . . . . . ... . Berichte als PDF-Datei exportieren . . . .... . ... . ... . . . . . . . . . . ... . . . . . . . . . .... . . . . Die Printers-Collection . . . . Auswahl eines Druckers . . . . . ... . . . . . . . .. . . . . . . ... . . . . . . . . ... . ... . . . . . . . . . . Speichern von Berichts-Optionen . . . . . . . . . . . . Übersichten . . . . . . . . . .. . . . . .. . . . . . . . . . . DrawMode-Eigenschaft . . . . Farbkonstanten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . . . . . . . . . .. . . . . . . .. .... . . . .. . . . . . . . . . . . . . . . . . .. . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . .... . . . . . . . . .. . . . . . .. .. .... . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... .... .. . ... . . .. ... . . .... . . .. .. . .... . . . .. . . .. . . . .. . ... . . . . . . . .. . . . . . .. . . . . . . .. .. . ... . . . . . .... . . . . . . . . . . .. . . . . . .... ... . . . .. . . . . . . . . . ..... .. .. .... ... . . . . . . . . . . ... . . .. . . .. . . . . . . .. . . ........................................... . . . . . . . . . . . . . . . . . . . . . . . ... . . . ... . . . . . . . . . ... . . . .. . . . . . . . . . . . . . . . ... ... ... ... .... .. .. ... .... . . . . . .. ... ... . ... ... .... ..... . . Eigenschaften des Printers Direkte Druckausgabe . . . .... . . . .... . . .............. . . . . . . . . . . . . .... . Wo finde ich das Printer-Objekt? . . . . . . . . . . . ... . .. .... . . . .. . .. . .. . Berichte als RTF-Datei exportieren . . . . . . Das Printer- Objekt . . . . . . . . . . . . . . ... . . .. . . .... .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 212 216 219 221 225 226 226 226 227 228 228 229 229 233 234 234 236 238 238 240 241 241 241 242 243 244 246 246 247 247 247 248 249 251 253 254 254 255 255 256 258 258 260 260 260 261 11 Inhaltsverzeichnis Praxis beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . Aufruf eines Berichts mit Datenfilter . . Im Report gruppieren und rechnen . . . . . . . . . . . . . . . . . 6 P ogrammi r re ne mit O b jekt en Objektvariablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Form- und Report-Objekt Control-Objekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Forms/Reports Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Collection-Objekt . Dictionary- Objekt . . . . . . . . . . . Property und Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Das Application-Objekt allgemein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . ... . . . . . . . . .. . . . . . . . . . . . Eigenschaften und Methoden des Application-Objekts Weitere wichtige Objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . . . . .................... . . . . . . . . . . . . . . . . . Reference-Objekt und References-Auflistung Der Objektkatalog . . Module-Objekt und Modules-Auflistung Die Access-Objekthierarchie . . . . . . Benutzerdefinierte Form-/Report-Objekte Eigenständige Klassenmodule . . ................................................. . . ............. . . . . .. . . . . . . . . . . Instanzen von Formularen und Berichten Auflistungen . . . . . . . . . Formular- und Berichtsmodule . . . Objekttypen und Set-Anweisung Object-Datentyp . . . . Erstellen und Drucken eines Pivot-Diagramms Berichte in Formularen anzeigen . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . .. CurrentData . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Übersichten Konstanten der ControlType-Eigenschaft . . . Rückgabewerte der CurrentObjectType- Funktion . Praxisbeispiele . . . Ein Steuerelemente-Array automatisch erstellen . Mit Formular-Instanzen arbeiten . .. . Mit einer eigenständigen Klasse experimentieren . . . . . . . . . . Auf Objekte in Auflistungen zugreifen . . . Properties-Auflistungen untersuchen . . AccessObject . CurrentProject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D A O-Programmi er un g . . . . . . . . . . . . . . . . . . . . . . . . . . . DBEngine Workspace-Objekt . . .. .. .. .... .. Database-Objekt . . . . . . . . . . . . . . . . . . . . . . . . . . 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Recordset-Objekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Verwendung der Datenbankobjekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . " . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 261 265 268 272 273 274 274 275 276 278 281 281 283 285 288 288 290 291 293 294 295 297 299 299 300 302 307 309 310 311 312 312 313 313 313 316 318 321 324 327 328 328 329 329 329 330 12 Inhaltsverzeichnis . � ... . . . . . . . . .. . . . . . . . . ... . .. . . . . . .. . . . . . .. . . . . . . . . . . . . . . .... . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . ....... . . . . . . . .. . ... . . . Test und Bemerkungen . . . . 331 331 332 335 340 342 344 346 349 349 352 355 357 358 359 360 361 364 367 368 369 369 371 372 372 374 378 382 384 387 387 387 388 396 A DO-Programmi reung . . . . . . ... . . . . ... . .... . . . . . . . . . . . . . . . .. . . . . ....... . . ... . . . . . . . . . Ein erster Blick auf ADO . . . . . Kleines Einführungsbeispiel . . . . . . ... . . . .. . . Zur Geschichte von ADO .. . .. Hinweise zu den ADO- Bibliotheken . . ADO und OLE DB .. ADO-Objektmodell . .. . .. . . . .. . .... . . . . . . . . . . . . . .. .... . . ..... . . ... . . . . . . . . .. . . ... . . . . . ADO-Grundoperationen . . ..... . Beziehungen zwischen den Objekten . . Die Verbindung zur Datenquelle . .. . Aktionsabfragen mit dem Command-Objekt . Recordsets mit Daten füllen . . . Weitere Operationen mit Recordsets . ... .. . . .. . . . .. . . . ... . . . . . . Welche Recordset-Features werden unterstützt? . . 397 398 398 400 400 401 402 404 404 405 409 412 416 417 Grundlegende Arbeitstechniken . Arbeitsumgebung festlegen . . . . . . . Datenbank anlegen und ö ffnen Tabellen/Indizes anlegen Tabellen einbinden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tabellen verknüpfen (Relationen) . . . . . . . . . . . . . . . . . . . . .. . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . ..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..... . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . . . .. . . . . . .. . . . . . Arbeiten mit Recordsets . ..... . . . . . . .. . . . . . .. . .. . . .. . . . .. . . ... . . .. . . . . . . . .. . .... . . . . . . . . . Eigenschaften und Methoden von Recordsets . . . Datensätze anzeigen . . Datensätze hinzufügen/ändern . .. Datensätze löschen . . .. . . . . . . . . . . . . Datensätze sortieren . . . .. Datensätze suchen . .. . .. Datensätze fUtern . . . . DAO in gebundenen Formularen . . . . Auf Anlage- Felder zugreifen . . ... . ....... Auf mehrwertige Felder zugreifen . . Verlaufsverfolgung eines Memo-Felds .. . Weitere Funktionen . .. .. Eigenschaften (Properties) . . . . . . Transaktionen . .. .. .. . Abfragen erstellen/ausführen . . Öffuen von Tabellen/Abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Praxisbeispiele . . . . . . . . . . . . . . . . . . Eine Tabelle anlegen . . Navigieren mit DAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Eine Datenbank analysieren . . . . . . . Eingabemaske Anforderungen . . . Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . 8 . . . . . . . . . . . . . . . . . . . . Komplexbeispiel: Telefonverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Den Datensatzzeiger bewegen In Recordsets suchen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 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 . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . S QL inTh oe ir e un d P ax r si . . . . . . . . . . . . . SQL-Dialekte .. . . . . . . . . . . . . . . . . . Ein intelligentes ADO-Frontend entwickeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kategorien von SQL-Anweis ungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tabellen vereinigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 418 419 420 421 421 422 423 424 424 425 427 427 428 429 430 431 432 432 433 433 435 436 437 440 445 446 446 447 448 449 453 458 460 464 464 464 465 466 467 468 468 469 470 476 477 478 481 14 Inhaltsverzeichnis Datensätze sortieren . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Datensätze gruppieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Unterabfragen . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Anlage-Felder mit SQL verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mehrwertige Felder mit SQL abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Daten manipulieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Einfügen einzelner Datensätze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Einfügen von Abfragedaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . Aktualisieren/Ändern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Löschen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Berechnete/Formatierte Spalten NULL-Werte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kreuztabellenabfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Datum und Zeit i n SQL-Abfragen Datentypumwandlungen . . . . . . . . . . . . . . Steuerelemente-Eigenschaften in Abfragen verwenden Globale Variablen in Abfragen verwenden Datenbankverwaltung mit SQL (DDL) Datenbanken Tabellen Indizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Nutzer- und Rechteverwaltung Transaktionen . . . . . . . SQL in der Access-Praxis SQL in Abfragen . . . . . . . . SQL im Basic-Code . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . SQL beim Oberflächenentwurf . . . . . . . . . . . . . . . . . . . . . Basic-Funktionen in SQL-Anweisungen Tipps & Tricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 F ortg sechrit ten e D at ne bank programmi re un g Tabellendefinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . Datum und Zeit in SQL einbauen Datenbanken erstellen . . Ein komfortables SQL-Abfrageprogramm erstellen Datenbankverwaltung mit ADOX . . . . Warum erhalte ich zu viele Datensätze beim Verknüpfen? . . . . . . . . .. . . . . . . . . . . . . . . Wie lösche ich doppelte Datensätze aus einer Tabelle? . . . . . Wie kann ich die Groß-/Kleinschreibung berücksichtigen? Praxisbeispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Wie kann ich die Anzahl der Datensätze ermitteln? . Wie nutze ich Datumsteile in SQL zur Suche? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tabellen/Indizes löschen oder verändern Sichten (Views) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..... . . ................................ .. .................... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exportieren/Importieren von Abfragedaten . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . Berechnungsfunktionen . . History-Felder mit SQL abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Erweiterte SQL-Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ............ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . .... . . . ... . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Indexdefinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482 483 485 489 491 493 494 494 496 497 500 501 502 502 510 511 513 518 519 523 523 524 524 524 525 528 529 530 531 531 532 532 534 535 537 537 537 538 538 539 541 541 542 545 546 547 550 554 15 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 (ADOIADOX) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 . . . . . . . . . . . .. . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TransferDatabase-Methode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _ . . . . Exportieren von Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556 557 558 558 560 561 563 564 568 571 572 572 574 574 575 577 579 584 585 587 589 590 593 595 595 597 598 599 600 600 601 601 605 608 609 611 613 613 613 614 616 619 621 621 621 622 623 16 Inhaltsverzeichnis Tipps & Tricks . . . . . . . . . . . . . . . . . . . . . . . . ;. . . . . . . . . . . . . . . . . ... . . . . ... . . . . . . . . . . . . . . . . . . . . . . . . . Wie prüft man die ADO-Versionsnummer? Access-Datenbanken exklusiv öffnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . . . . . . . . . . . Alle aktiven Verbindungen zur Datenbank auflisten . . Access-Datenbanken im Netzwerk . . Das Datenbank-Kennwort ändern . . . . . . . . . Abfragen über meh rere Datenbanken Datenbanken reparieren/komprimieren . . . . . . . . .. . . . . . . . . . Der selbst geschriebene Assistent Oberfläche . . . . . . . . . . . . . . . . Programmierung (Backup) Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Komplexbeispiel: Datenbank-Backup/-Restore Vorbemerkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . . . . . ... . . . . . . . . . . . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . Microso ft S QL Ser evr ... . .... . Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . Was ist SQL Server Express? . . . . . . . . . . . . . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Unterschiede SQL Server Express/SQL ServerlJet-Engine . Client- versus Fileserver-Programmierung Installation SQL Server Express Erste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .... . . . . . . . . . . . . . . . .. . . . . . . . . . . Den Netzwerkzugriff für den SQL Server Express aktivieren integration in die Access-Oberfläche . . Die wichtigsten Client-Tools . Vordefinierte Datenbanken Einschränkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . Kommentare . Zeichenketten ... . .......... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Variablen deklarieren/verwenden . . . Bedingungen mit IF/ELSE auswerten Verwenden von CASE . . . . . . . . . . . . . . . . . . . . Verwenden von GOTO Fehlerbehandlung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . .. . . . . . . . . . . . . . . . . . . . .. . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .................................. ....................... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Erzeugen und Verwenden von Sichten (Views) Verwenden von Gespeicherten Prozeduren . . . . . . . . . Erstellen neuer SQL Server-Datenbanken Erzeugen und Verwalten von Tabellen Programmieren von Triggern . .................. . . . Praktisches Arbeiten mit dem SQL Server . . . . Verwenden von \"1HILE.. . BREAK/CONTINUE Datum und Uhrzeit in T-SQL . . . . . . . . . . . . .. . . . . . . .. . . . . . .................................. ... .......... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . . . . . . . ..................... . . . . Transact-SQL - die Sprache des SQL Servers Schreibweise . . . . . Weitere SQL Server-Funktionen im Kurzüberblick Datenbanken verwalten mit DMO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ein neues Access- Projekt (neue SQL Server-Datenbank) Upgrading von Access zum SQL Server . . . . . Bemerkung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . .. .. . . . .. . 11 . . . . . . . . . . . . . . . ... ................. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ........................ 625 625 625 625 626 626 628 628 629 629 630 630 631 640 640 641 642 642 643 644 646 650 650 652 655 656 659 663 663 664 666 668 669 669 670 670 671 672 673 674 674 675 675 675 678 685 687 691 17 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 Verzeich nisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 . . . . . . . . . . . . . . . . . . . . 696 697 703 708 708 709 709 710 712 714 714 717 720 723 727 727 728 729 730 730 731 731 732 732 732 733 734 734 734 735 735 735 737 737 737 738 738 739 741 742 742 742 743 744 744 746 746 747 18 I nha ltsverzeich nis Ein Verzeichnis erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....... . . . ............ . . Das Datenbankverzeichnis bestimmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Abfragen des Temp-/System-/Windows-Verzeichnisses . . . . . . . . . . . . . . . . Prüfen, ob eine Datei existiert . . . . . ............... ...... ....... ..................... . . VerzeichnisselDateien kopieren/löschen . . . . . . . . . . . . . . . . . . . . . ......... . .... . .. . . . . . . . . . . Auflisten aller Dateien eines Verzeichnisses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....... ......... . . . ... . . ... ... . . . . . ... . . . . . . .... . . . ... Textdateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . Klassischer Zugriff auf Textdateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zugriff auf Textdateien mit den File System Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..... . . . . . .. . . . . . .. . . . . . . . ... . . . . . ... . . . . . . . . ... . .... . ..... Typisierte Dateien . . . öffnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . . . ... . . . . Name, Pfad und Extension einer Datei ermitteln . . . . . . . . . . . . Einen Tempfile-Namen erzeugen . . . . . . . . . . . . . . . . . . . . . . . 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 S hellfunktionen verwenden . . . . . . . ................. .............. ....... . . Einen Verzeichnisbaum in eine TreeView einlesen . . . . . . . . Ein Datenbank- Backup mit CDIDVD-Brenner realisieren X M L in Theorie und Praxis XML - etwas Theorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ............... . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . . Der XML-Grundaufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Wohlgeformte Dokumente . . . . . . . . . . . . . . . . . . . .. . . . . . . . .. . . . . . . .. . Processing Instructions (PI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . .. .. . . . 748 749 750 750 751 751 752 754 754 755 757 760 760 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 806 806 809 810 812 19 I nhaltsverzeichnis Elemente und Attribute ... . . .. . . . .. . . . . .. . . . . . . . .. .... . .. . . . .. ... . . .. . . . . Verwendbare Zeichensätze... .. . . . .... . .. . . XSD-Schemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Das Grundprinzip .. . . . . . . . .. . . . .. . . . . . . . Ein XSD-Schema mit Microsoft Access erzeugen XML-Verarbeitung mit dem DOM Was ist das DOM? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _ . . . . . . . . . . . . . . . . . .. . _ . . . . . . . . . . . . . . . . . . ... . . . . . . ... . ..... . . . . . . . . . . _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Erste Schritte .. . Laden von Dokumenten . . . . . . XML-Fehlerprüfung/-Analyse . . . . . . . . . . . . . . Erzeugen von XML-Dokumenten . . . Auslesen von XML-Dateien . . Einfügen von Informationen Attribute oder Element . . . . . . . . . Suchen in den Baumzweigen . . . . . . . . . . . . . . . . . Importieren . Exportieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XML-Transformation mit XSLT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Grundsätzlicher Vergleich . . . . . . . Praxisbeispiele . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..." .............. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vor- und Nachteile von XML. . . . .. . . . Zeitvergleich ADO/XML . . . Application-Objekt (ImportXMLlExportXML) ADO-Recordset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ....................................................... . .................... . Das Interpretieren von Leerzeichen XML-Integration in Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _ . . . . . . . . . . . . . . . . . . . _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . _ . . .............................................................. Speichern im UTF-8-/UTF- 1 6-Format . . . .. . . . . . . . . . . . . _ Laden UTF-8-/UTF- 1 6 - Format aus einem ADO-Stream . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 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 Programmschnittstellen . . . . . 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 . . . . . . . . . . . .. ... . . . . . . . .. . . . . . . . . . . . 813 814 816 816 818 821 822 823 825 825 827 829 833 835 839 842 845 845 848 851 853 856 859 859 859 861 861 863 865 866 869 872 875 877 878 878 879 882 882 882 884 885 887 887 888 889 890 891 20 Inhaltsverzeichnis OLE/ActiveX überblick OLE . . . . ... . . übersicht zum Objektfeld-Steuerelement Programmieren mit dem Objektfeld . . . . . . . . . . . . . . . . . . ActiveX-Code-Komponenten (OLE-Automation) . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Programmieren mit ActiveX-Code-Komponenten DDE . . . . . . .. . . . . . . . . . .. . . . . . . .... . . . . . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ........... . . . . ... . . . . ...... . . . . . . . . . . . .. Verwenden von Steuerelementen VBA- Programmierung . Scanner-Unterstützung per WIA . . . .. .. ... . .. . . . Was kann WIA? . . ... . . . . . . InstallationlVorbereitung .. . ..... . . . . . . Einstieg mit kleiner Beispielanwendung . Reagieren auf das Verbinden/Trennen von Geräten . . . . . . . . . . . . . . ... . . . . . ... . . . . . . . . . . . . ... . . . . Ermitteln der verfügbaren Geräte Anzeige der Geräteeigenschaften . . . . . . . . . . . . . . . . .. . . . . . . . . . . . .. . ... . . .... . . . . . . . . . . Ein Bild einlesen ' Bild(er) drucken (Assistent) . . . Funktionsprinzip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Grafikbearbeitung . . . . . . Zugriffsmöglichkeiten TransferSpreadsheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . Import/Export per DAO . . . . . . . . Zugriff auf Tabellenbereiche OLE-Automation Praxisbeispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .