Walter Doberenz, Thomas...

30

Transcript of Walter Doberenz, Thomas...

Page 1: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch
Page 2: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch

Walter Doberenz, Thomas Gewinnus

Microsoft Access 2010-Programmierung Das Handbuch

Page 3: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch
Page 4: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch

Walter Doberenz, Thomas Gewinnus

Microsoft Access 2010-Programmierung Das Handbuch

Page 5: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch

Walter Doberenz, Thomas Gewinnus: Microsoft Access 2010-Programmierung – Das HandbuchCopyright © 2011 O'Reilly Verlag GmbH & Co. KG

Das in diesem Buch enthaltene Programmmaterial ist mit keiner Verpflichtung oder Garantie irgendeiner Art ver-bunden. Autor, Übersetzer und der Verlag übernehmen folglich keine Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieses Programmmaterials oder Teilen davon entsteht.

Das Werk einschließlich aller Teile ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlags unzulässig und strafbar. Das gilt insbesondere für Ver-vielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen.

Die in den Beispielen verwendeten Namen von Firmen, Organisationen, Produkten, Domänen, Personen, Orten, Ereignissen sowie E-Mail-Adressen und Logos sind frei erfunden, soweit nichts anderes angegeben ist. Jede Ähn-lichkeit mit tatsächlichen Firmen, Organisationen, Produkten, Domänen, Personen, Orten, Ereignissen, E-Mail-Adressen und Logos ist rein zufällig.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 113 12 11

ISBN 978-3-86645-459-0, PDF-ISBN 978-3-86645-357-9

© O'Reilly Verlag GmbH & Co. KGBalthasarstr. 81, D-50670 KölnAlle Rechte vorbehalten

Satz: Ingenieurbüro Dipl.-Ing. Th. Gewinnus (www.doko-buch.de)Layout: Gerhard Alfes, mediaService, Siegen (www.media-service.tv)Umschlaggestaltung: Hommer Design GmbH, Haar (www.HommerDesign.com)Gesamtherstellung: Kösel, Krugzell (www.KoeselBuch.de)

Page 6: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch

Kurzübersicht

Vorwort ................................................................................ 27

1 Einführung ............................................................................ 31

2 Programmieren mit VBA .............................................................. 73

3 Datenmakros .......................................................................... 141

4 Formulare und Steuerelemente ....................................................... 161

5 Berichte ............................................................................... 225

6 Programmieren mit Objekten ......................................................... 273

7 DAO-Programmierung ................................................................ 327

8 ADO-Programmierung ................................................................ 397

9 SQL in Theorie und Praxis ............................................................. 445

10 Fortgeschrittene Datenbankprogrammierung ......................................... 545

11 Microsoft SQL Server .................................................................. 641

12 Dateien und Verzeichnisse ............................................................ 741

13 XML in Theorie und Praxis ............................................................ 805

14 Programmschnittstellen ............................................................... 877

15 Access im Internet/Intranet ........................................................... 955

16 Access und SharePoint ................................................................ 987

17 Die Access Services .................................................................... 1019

18 Datendienste in Microsoft Access einbinden .......................................... 1061

19 Anwendungsdesign ................................................................... 1083

20 Menüband und Backstage-Ansicht programmieren ................................... 1125

21 Techniken der Programmentwicklung ................................................. 1191

A Glossar ................................................................................ 1253

B Wichtige Dateierweiterungen ......................................................... 1259

C ANSI-Tabelle .......................................................................... 1261

D Wichtige Tastaturcodes ................................................................ 1265

Stichwortverzeichnis ................................................................... 1269

Page 7: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch
Page 8: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch

HINWEIS

Inhaltsverzeichnis

Die Bonuskapitel 9 und 13 finden Sie als PDF-Datei auf der beiliegenden CD. Im Inhaltsverzeichnis sind sie durch ein CD-Symbol gekennzeichnet.

Vorwort ................................................................................ 27

1 Einführung ............................................................................ 31VBA-Programmierung unter Microsoft Access 2010 ....................................... 32

Visual Basic versus VBA .............................................................. 32Objekt- und ereignisorientierte Programmierung ...................................... 32VBA- oder Makro-Programmierung? .................................................. 33Die VBA-Entwicklungsumgebung ..................................................... 34Formularentwurf .................................................................... 34Code-Fenster und Symbolleiste ....................................................... 35Das Eigenschaftenfenster ............................................................. 37Der Projekt-Explorer ................................................................. 37Das Code-Fenster .................................................................... 38Arbeiten mit der Hilfe ................................................................ 41

Sicherheitseinstellungen ................................................................. 42Zur Geschichte der Access-Sicherheit .................................................. 42Eine nicht vertrauenswürdige Datenbank öffnen ....................................... 43Das Sicherheitscenter ................................................................. 45Definition vertrauenswürdiger Speicherorte ........................................... 48

Einführungsbeispiele .................................................................... 50Erstellen der Testdatenbank ........................................................... 50Konventionelle Programmierung ..................................................... 51Programmieren mit VBA ............................................................. 56Automatische Makrokonvertierung ................................................... 60Programmieren mit Datenmakro ..................................................... 61

Highlights und Features von Access 2010 .................................................. 63Zur Geschichte der Vorgängerversionen ............................................... 63Das ist neu in Microsoft Office Access 2010 ............................................ 65

Übersichten und Ergänzungen ........................................................... 68Deutsche und englische Bezeichner ................................................... 68DoCmd-Objekt ...................................................................... 69

2 Programmieren mit VBA .............................................................. 73Datentypen, Variablen und Konstanten ................................................... 74

Übersicht ............................................................................ 74Variablendeklaration ................................................................. 75Konstantendeklaration ............................................................... 80Gültigkeitsbereiche .................................................................. 80

Page 9: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch

Inhaltsverzeichnis

Einzelheiten zu den Datentypen .......................................................... 84Single- und Double-Datentypen ...................................................... 84Integer-, Long- und Boolean-Datentypen .............................................. 84Date-Datentyp ....................................................................... 84Currency-Datentyp .................................................................. 87String-Datentyp ..................................................................... 88Variant-Datentyp .................................................................... 89

Datenfelder (Arrays) ..................................................................... 93Statische Arrays ..................................................................... 93Dynamische Arrays .................................................................. 95

Benutzerdefinierte Datentypen ........................................................... 97Type-Anweisung ..................................................................... 97With-Anweisung ..................................................................... 97Strings innerhalb Type ............................................................... 98Enumerationen ...................................................................... 99Arrays in benutzerdefinierten Typen .................................................. 100

Operatoren ............................................................................. 101Arithmetische Operatoren ............................................................ 102Logische Operatoren ................................................................. 104Vergleichsoperatoren ................................................................. 106

Kontrollstrukturen ...................................................................... 106Bedingte Verzweigungen .............................................................. 106Schleifenanweisungen ................................................................ 108GoTo und GoSub .................................................................... 110

Zeichenkettenfunktionen ................................................................ 111Stringverarbeitung ................................................................... 111Format-Funktion .................................................................... 113

Vordefinierte Funktionen ................................................................ 115Mathematische Funktionen ........................................................... 115Finanzmathematische Funktionen .................................................... 119Datums-/Zeitfunktionen ............................................................. 120

Benutzerdefinierte Funktionen/Prozeduren ............................................... 123Funktion ............................................................................ 124Prozedur ............................................................................ 124Parameterübergabe ByRef oder ByVal ................................................. 125Optionale Argumente ................................................................ 126Benannte Argumente ................................................................. 127Parameter-Arrays .................................................................... 127Dynamische Arrays als Argumente .................................................... 128Rückgabe von Arrays ................................................................. 128Private-, Public- und Static-Deklarationen ............................................. 129

Übersichten und Ergänzungen ........................................................... 131Datumskonstanten ................................................................... 131Rückgabewerte der VarType-Funktion ................................................. 132

Praxisbeispiele .......................................................................... 132In einem Textfeld suchen ............................................................. 132Zeitangaben runden .................................................................. 134Das Wochenende feststellen ........................................................... 135Mit dynamischen Arrays rechnen ..................................................... 136

8

Page 10: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch

Inhaltsverzeichnis

3 Datenmakros .......................................................................... 141Grundlagen von Datenmakros ............................................................ 142

Einsatzmöglichkeitem ................................................................ 142Funktionsprinzip .................................................................... 143Datenmakros und VBA ............................................................... 144Erzeugen von Datenmakros ........................................................... 144Datenmakros umbenennen, löschen und ändern ....................................... 145USysApplicationLog ................................................................. 145

Aktionen in Datenmakros ................................................................ 146Aktionen für alle Tabellenereignisse ................................................... 146Zusätzliche Aktionen der Nachfolgeereignisse .......................................... 146

Auswahl des richtigen Tabellenereignisses ................................................. 147Vorabereignisse ...................................................................... 147Nachfolgeereignisse .................................................................. 147Einschränkungen .................................................................... 148

Praxisbeispiele .......................................................................... 148Ein ereignisgesteuertes Datenmakro erstellen .......................................... 148Arbeiten mit einem benannten Datenmakro ........................................... 153Per VBA auf ein benanntes Datenmakro zugreifen ...................................... 157Änderungen von Tabelleninhalten protokollieren ...................................... 158

4 Formulare und Steuerelemente ....................................................... 161Allgemeines ............................................................................. 162

Gruppen von Eigenschaften .......................................................... 162Methoden ........................................................................... 163Gruppen von Ereignissen ............................................................. 163

Das Form-Objekt ........................................................................ 163Format-Eigenschaften ................................................................ 164Daten-Eigenschaften ................................................................. 170Weitere Eigenschaften ................................................................ 171Fenster- und Fokus-Ereignisse ........................................................ 172Tastatur- und Maus-Ereignisse ........................................................ 173Daten- und Filter-Ereignisse .......................................................... 176Weitere Ereignisse .................................................................... 177Methoden ........................................................................... 178Unterformulare ...................................................................... 181

Steuerelemente (Controls) ............................................................... 182Allgemeines ......................................................................... 182Allgemeine Eigenschaften auf einen Blick .............................................. 183Allgemeine Ereignisse auf einen Blick ................................................. 194Methoden von Steuerelementen ....................................................... 195Das Screen-Objekt ................................................................... 196

ActiveX-Steuerelemente .................................................................. 198Vergleich mit den integrierten Steuerelementen ........................................ 198StatusBar als Beispiel ................................................................. 199

Praxisbeispiele .......................................................................... 203Das Textfeld programmieren .......................................................... 203In ungebundene Textfelder ein- und ausgeben ......................................... 205Ein ungebundenes Kombinationsfeld füllen ............................................ 207

9

Page 11: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch

Inhaltsverzeichnis

Ein Unterformular programmieren ................................................... 209Das Register-Steuerelement kennen lernen ............................................. 212Eine Statusleiste programmieren ...................................................... 216Verwenden von Bild-Ressourcen ...................................................... 219Programmieren des Navigationssteuerelements ........................................ 221

5 Berichte ............................................................................... 225Allgemeines ............................................................................. 226

Reportansichten ..................................................................... 226Die OpenReport-Methode ............................................................ 226Parameterübergabe .................................................................. 227

Wichtige Berichtseigenschaften ........................................................... 228Formateigenschaften ................................................................. 228Dateneigenschaften .................................................................. 229Grafikeigenschaften .................................................................. 229Linien- und Stifteigenschaften ........................................................ 233Schrifteigenschaften .................................................................. 234Farb- und Mustereigenschaften ....................................................... 234Sonstige Eigenschaften ............................................................... 236

Berichtsereignisse ....................................................................... 238Allgemeine Ereignisse ................................................................ 238Tastatur- und Mausereignisse ......................................................... 240

Berichtsmethoden ....................................................................... 241Grafikmethoden (Übersicht) ......................................................... 241Scale ................................................................................ 241Line ................................................................................. 242PSet ................................................................................. 243Circle ............................................................................... 244Print ................................................................................ 246TextWidth und TextHeight ........................................................... 246Sonstige Methoden ................................................................... 247

Weitere Features des Report-Objekts ...................................................... 247Rich-Text-Felder drucken ............................................................. 247Verlauf eines Memofeldes drucken .................................................... 248Eine Liste der Anlagen drucken ....................................................... 249Berichte nachträglich filtern .......................................................... 251Berichte als PDF-Datei exportieren .................................................... 253Berichte als RTF-Datei exportieren .................................................... 254

Das Printer-Objekt ...................................................................... 254Wo finde ich das Printer-Objekt? ...................................................... 255Die Printers-Collection ............................................................... 255Auswahl eines Druckers .............................................................. 256Speichern von Berichts-Optionen ..................................................... 258Eigenschaften des Printers ............................................................ 258

Direkte Druckausgabe ................................................................... 260Übersichten ............................................................................. 260

DrawMode-Eigenschaft .............................................................. 260Farbkonstanten ...................................................................... 261

10

Page 12: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch

Inhaltsverzeichnis

Praxisbeispiele .......................................................................... 261Aufruf eines Berichts mit Datenfilter .................................................. 261Im Report gruppieren und rechnen ................................................... 265Erstellen und Drucken eines Pivot-Diagramms ......................................... 268Berichte in Formularen anzeigen ...................................................... 272

6 Programmieren mit Objekten ......................................................... 273Objektvariablen ......................................................................... 274

Objekttypen und Set-Anweisung ...................................................... 274Object-Datentyp ..................................................................... 275Form- und Report-Objekt ............................................................ 276Control-Objekt ...................................................................... 278

Formular- und Berichtsmodule .......................................................... 281Instanzen von Formularen und Berichten .............................................. 281Benutzerdefinierte Form-/Report-Objekte ............................................. 283Eigenständige Klassenmodule ......................................................... 285

Auflistungen ............................................................................ 288Forms/Reports ....................................................................... 288Controls ............................................................................. 290Collection-Objekt .................................................................... 291Dictionary-Objekt ................................................................... 293Property und Properties ............................................................. 294Module-Objekt und Modules-Auflistung .............................................. 295Reference-Objekt und References-Auflistung ........................................... 297

Die Access-Objekthierarchie .............................................................. 299Der Objektkatalog ................................................................... 299Das Application-Objekt allgemein .................................................... 300Eigenschaften und Methoden des Application-Objekts ................................. 302Weitere wichtige Objekte ............................................................. 307AccessObject ........................................................................ 309CurrentProject ...................................................................... 310CurrentData ......................................................................... 311

Übersichten ............................................................................. 312Konstanten der ControlType-Eigenschaft .............................................. 312Rückgabewerte der CurrentObjectType-Funktion ...................................... 313

Praxisbeispiele .......................................................................... 313Ein Steuerelemente-Array automatisch erstellen ........................................ 313Mit Formular-Instanzen arbeiten ..................................................... 316Mit einer eigenständigen Klasse experimentieren ....................................... 318Auf Objekte in Auflistungen zugreifen ................................................. 321Properties-Auflistungen untersuchen .................................................. 324

7 DAO-Programmierung ................................................................ 327Allgemeines ............................................................................. 328

DBEngine ........................................................................... 328Workspace-Objekt ................................................................... 329Database-Objekt ..................................................................... 329Recordset-Objekt .................................................................... 329Verwendung der Datenbankobjekte ................................................... 330

11

Page 13: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch

Inhaltsverzeichnis

Grundlegende Arbeitstechniken .......................................................... 331Arbeitsumgebung festlegen ........................................................... 331Datenbank anlegen und öffnen ....................................................... 332Tabellen/Indizes anlegen .............................................................. 335Tabellen einbinden ................................................................... 340Tabellen verknüpfen (Relationen) ..................................................... 342Abfragen erstellen/ausführen ......................................................... 344Öffnen von Tabellen/Abfragen ........................................................ 346

Arbeiten mit Recordsets .................................................................. 349Eigenschaften und Methoden von Recordsets .......................................... 349Datensätze anzeigen .................................................................. 352Datensätze hinzufügen/ändern ........................................................ 355Datensätze löschen ................................................................... 357Datensätze sortieren .................................................................. 358Datensätze suchen ................................................................... 359Datensätze filtern .................................................................... 360DAO in gebundenen Formularen ..................................................... 361Auf Anlage-Felder zugreifen .......................................................... 364Auf mehrwertige Felder zugreifen ..................................................... 367Verlaufsverfolgung eines Memo-Felds ................................................. 368

Weitere Funktionen ...................................................................... 369Eigenschaften (Properties) ............................................................ 369Transaktionen ....................................................................... 371

Praxisbeispiele .......................................................................... 372Eine Tabelle anlegen .................................................................. 372Navigieren mit DAO ................................................................. 374Den Datensatzzeiger bewegen ......................................................... 378In Recordsets suchen ................................................................. 382Eine Datenbank analysieren .......................................................... 384

Komplexbeispiel: Telefonverzeichnis ...................................................... 387Eingabemaske ....................................................................... 387Anforderungen ...................................................................... 387Programmierung .................................................................... 388Test und Bemerkungen ............................................................... 396

8 ADO-Programmierung ................................................................ 397Ein erster Blick auf ADO ................................................................ 398

Kleines Einführungsbeispiel .......................................................... 398Zur Geschichte von ADO ............................................................. 400Hinweise zu den ADO-Bibliotheken ................................................... 400ADO und OLE DB ................................................................... 401ADO-Objektmodell .................................................................. 402

ADO-Grundoperationen ................................................................. 404Beziehungen zwischen den Objekten .................................................. 404Die Verbindung zur Datenquelle ...................................................... 405Aktionsabfragen mit dem Command-Objekt .......................................... 409Recordsets mit Daten füllen ........................................................... 412

Weitere Operationen mit Recordsets ...................................................... 416Welche Recordset-Features werden unterstützt? ........................................ 417

12

Page 14: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch

Inhaltsverzeichnis

Editieren von Datensätzen ............................................................ 417Hinzufügen von Datensätzen ......................................................... 418Löschen von Datensätzen ............................................................. 419Recordsets filtern .................................................................... 420Ungebundene Recordsets ............................................................. 421Recordsets abspeichern ............................................................... 421Bewegen in Recordsets ............................................................... 422Daten direkt einlesen ................................................................. 423Sortieren ............................................................................ 424Suchen ............................................................................. 424Ereignisse auswerten ................................................................. 425

Zugriff auf ADO-Auflistungen ........................................................... 427Allgemeine Features ................................................................. 427Property und Properties .............................................................. 428Field und Fields ...................................................................... 429Parameter und Parameters ............................................................ 430Error und Errors ..................................................................... 431

Übersichten ............................................................................. 432Connection-Objekt .................................................................. 432Command-Objekt ................................................................... 433Recordset-Objekt .................................................................... 433

Praxisbeispiele .......................................................................... 435Mit ADO auf eine Access-Datenbank zugreifen ........................................ 436Ein ADO-Datenklassenmodul verwenden ............................................. 437Ein intelligentes ADO-Frontend entwickeln ............................................ 440

9 SQL in Theorie und Praxis ............................................................. 445Einführung ............................................................................. 446

SQL-Dialekte ........................................................................ 446Kategorien von SQL-Anweisungen .................................................... 447

Etwas (Datenbank-)Theorie .............................................................. 448Allgemeines/Begriffe ................................................................. 449Normalisieren von Tabellen ........................................................... 453Beziehungen zwischen den Tabellen ................................................... 458Verknüpfen von Tabellen ............................................................. 460

Testprogramm und Beispieldatenbank .................................................... 464Hinweise zur Bedienung .............................................................. 464Die Beispieldatenbank im Überblick .................................................. 464ADO Query ......................................................................... 465Bemerkungen ........................................................................ 466

Daten abfragen .......................................................................... 467Abfragen mit SELECT ................................................................ 468Alle Spalten auswählen ............................................................... 468Auswahl der Spalten .................................................................. 469Filtern ............................................................................... 470Beschränken der Ergebnismenge ...................................................... 476Eindeutige Records/doppelte Datensätze ............................................... 477Tabellen verknüpfen ................................................................. 478Tabellen vereinigen ................................................................... 481

13

Page 15: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch

Inhaltsverzeichnis

Datensätze sortieren .................................................................. 482Datensätze gruppieren ............................................................... 483Unterabfragen ....................................................................... 485Anlage-Felder mit SQL verwalten ..................................................... 489History-Felder mit SQL abfragen ...................................................... 491Mehrwertige Felder mit SQL abfragen ................................................. 493

Daten manipulieren ..................................................................... 494Einfügen einzelner Datensätze ........................................................ 494Einfügen von Abfragedaten ........................................................... 496Exportieren/Importieren von Abfragedaten ............................................ 497Aktualisieren/Ändern ................................................................ 500Löschen ............................................................................. 501

Erweiterte SQL-Funktionen .............................................................. 502Berechnete/Formatierte Spalten ....................................................... 502Berechnungsfunktionen .............................................................. 510NULL-Werte ........................................................................ 511Datum und Zeit in SQL-Abfragen ..................................................... 513Datentypumwandlungen ............................................................. 518Kreuztabellenabfragen ................................................................ 519Steuerelemente-Eigenschaften in Abfragen verwenden .................................. 523Globale Variablen in Abfragen verwenden ............................................. 523

Datenbankverwaltung mit SQL (DDL) .................................................... 524Datenbanken ........................................................................ 524Tabellen ............................................................................. 524Indizes .............................................................................. 525Tabellen/Indizes löschen oder verändern .............................................. 528Sichten (Views) ...................................................................... 529Nutzer- und Rechteverwaltung ........................................................ 530Transaktionen ....................................................................... 531

SQL in der Access-Praxis ................................................................. 531SQL in Abfragen ..................................................................... 532SQL im Basic-Code .................................................................. 532SQL beim Oberflächenentwurf ....................................................... 534Basic-Funktionen in SQL-Anweisungen ............................................... 535

Tipps & Tricks ........................................................................... 537Wie kann ich die Anzahl der Datensätze ermitteln? ..................................... 537Wie nutze ich Datumsteile in SQL zur Suche? .......................................... 537Wie kann ich die Groß-/Kleinschreibung berücksichtigen? .............................. 538Warum erhalte ich zu viele Datensätze beim Verknüpfen? ............................... 538Wie lösche ich doppelte Datensätze aus einer Tabelle? .................................. 539

Praxisbeispiele .......................................................................... 541Ein komfortables SQL-Abfrageprogramm erstellen ..................................... 541Datum und Zeit in SQL einbauen .................................................... 542

10 Fortgeschrittene Datenbankprogrammierung ......................................... 545Datenbankverwaltung mit ADOX ......................................................... 546

Datenbanken erstellen ................................................................ 547Tabellendefinition .................................................................... 550Indexdefinition ...................................................................... 554

14

Page 16: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch

Inhaltsverzeichnis

Erstellen von Prozeduren und Sichten ................................................. 556Tabellen verknüpfen (Relationen) ..................................................... 557

Erstellen spezieller Feldtypen ............................................................. 558Automatische Zufallswerte (GUID) ................................................... 558Memofeld mit Archiv-Funktion (Nur anfügen) ........................................ 560Anlage-Feld ......................................................................... 561Rich-Text-Feld ....................................................................... 563Multivalue-Feld (MVF) .............................................................. 564Berechnete Spalten ................................................................... 568Beschreibung von Datenbankfeldern setzen ............................................ 571

Zugriffsschutz in Access-Datenbanken .................................................... 572Grundlagen ......................................................................... 572Sichern auf Datenbankebene (DAO) .................................................. 574Sichern auf Datenbankebene (ADO/ADOX) ........................................... 574Erstellen neuer Benutzer und Gruppen (DAO) ......................................... 575Vergabe von Rechten (DAO) .......................................................... 577Komplettbeispiel: Nutzerbasierte Sicherheit ............................................ 579Erstellen neuer Benutzer und Gruppen (ADOX) ....................................... 584Vergabe von Rechten (ADOX) ........................................................ 585Verschlüsseln von Datenbanken ....................................................... 587

Multiuserzugriff ........................................................................ 589Verwenden der DAO ................................................................. 590Verwenden der ADO ................................................................. 593

ODBC-Verbindungen .................................................................... 595Ein Blick auf den ODBC-Datenquellen-Administrator .................................. 595Erstellen einer ODBC-Verbindung (DAO) ............................................. 597Öffnen einer ODBC-Verbindung (DAO) .............................................. 598Öffnen einer ODBC-Verbindung (ADO) .............................................. 599Konfigurieren von ODBC-Verbindungen .............................................. 600

ODBCDirect ............................................................................ 600Zugriff auf Fremdformate ................................................................ 601

dBASE III/IV- und FoxPro-Datenbanken .............................................. 601Textdateien (TXT/ASC/CSV) ......................................................... 605

Einbinden externer Tabellen .............................................................. 608Verwenden der DAO ................................................................. 609Verwenden der ADOX ................................................................ 611

Exportieren von Daten ................................................................... 613TransferDatabase-Methode ........................................................... 613Exportieren mit SQL-Anweisungen ................................................... 613

Replizieren von Datenbanken ............................................................ 614Replikation mit Hilfe der DAO ........................................................ 616Replikation mit Hilfe der JRO ......................................................... 619

Optimierung ............................................................................ 621Indizes .............................................................................. 621Abfrage-Optimierung ................................................................ 621Weitere Möglichkeiten ............................................................... 622ADO/DAO/ODBC – Was ist schneller? ................................................ 623

15

Page 17: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch

Inhaltsverzeichnis

Tipps & Tricks ........................................................................... 625Wie prüft man die ADO-Versionsnummer? ............................................ 625Access-Datenbanken exklusiv öffnen .................................................. 625Access-Datenbanken im Netzwerk .................................................... 625Alle aktiven Verbindungen zur Datenbank auflisten .................................... 626Das Datenbank-Kennwort ändern ..................................................... 626Abfragen über mehrere Datenbanken .................................................. 628Datenbanken reparieren/komprimieren ............................................... 628

Komplexbeispiel: Datenbank-Backup/-Restore ............................................ 629Vorbemerkungen .................................................................... 629Der selbst geschriebene Assistent ...................................................... 630Oberfläche .......................................................................... 630Programmierung (Backup) ........................................................... 631Test ................................................................................. 640Bemerkung .......................................................................... 640

11 Microsoft SQL Server .................................................................. 641Allgemeines ............................................................................. 642

Was ist SQL Server Express? .......................................................... 642Unterschiede SQL Server Express/SQL Server/Jet-Engine ............................... 643Client- versus Fileserver-Programmierung ............................................. 644Installation SQL Server Express ....................................................... 646

Erste Schritte ............................................................................ 650Ein neues Access-Projekt (neue SQL Server-Datenbank) ................................ 650Den Netzwerkzugriff für den SQL Server Express aktivieren ............................ 652Integration in die Access-Oberfläche .................................................. 655Upgrading von Access zum SQL Server ................................................ 656Die wichtigsten Client-Tools .......................................................... 659Vordefinierte Datenbanken ........................................................... 663Einschränkungen .................................................................... 663Weitere SQL Server-Funktionen im Kurzüberblick ..................................... 664Datenbanken verwalten mit DMO .................................................... 666

Transact-SQL – die Sprache des SQL Servers .............................................. 668Schreibweise ......................................................................... 669Kommentare ........................................................................ 669Zeichenketten ....................................................................... 670Variablen deklarieren/verwenden ..................................................... 670Bedingungen mit IF/ELSE auswerten .................................................. 671Verwenden von CASE ................................................................ 672Verwenden von WHILE…BREAK/CONTINUE ........................................ 673Datum und Uhrzeit in T-SQL ......................................................... 674Verwenden von GOTO ............................................................... 674Fehlerbehandlung .................................................................... 675

Praktisches Arbeiten mit dem SQL Server ................................................. 675Erstellen neuer SQL Server-Datenbanken .............................................. 675Erzeugen und Verwalten von Tabellen ................................................. 678Erzeugen und Verwenden von Sichten (Views) ......................................... 685Verwenden von Gespeicherten Prozeduren ............................................. 687Programmieren von Triggern ......................................................... 691

16

Page 18: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch

Inhaltsverzeichnis

Erzeugen von Datenbankdiagrammen ................................................. 696Volltextabfragen ..................................................................... 697Datenbanken sichern und wiederherstellen ............................................ 703

Fehlerbehandlung ....................................................................... 708Das Fehlermodell des SQL Servers .................................................... 708Verwenden von @@ERROR ........................................................... 709Verwenden von RAISEERROR ........................................................ 709Fehlerbehandlung mit TRY...CATCH .................................................. 710Fehlerbehandlung mit den ADO ...................................................... 712

Datensicherheit ......................................................................... 714Überblick ........................................................................... 714Verwalten mit dem SQL Server Management Studio .................................... 717Verwalten mit T-SQL ................................................................. 720Verwalten mit SQLDMO ............................................................. 723

Tipps & Tricks ........................................................................... 727Alle Nutzer einer Datenbank ermitteln ................................................ 727Alle registrierten Microsoft SQL Server ermitteln ....................................... 728Alle Datenbanken und deren Tabellen ermitteln ........................................ 729Eine Tabelle löschen .................................................................. 730Eine Tabelle mit den DMO erzeugen .................................................. 730Anzahl der Datensätze beschränken ................................................... 731Platzhalterzeichen in TSQL ........................................................... 731Leerzeichen entfernen ................................................................ 732Teilstrings erzeugen .................................................................. 732Mit einer Datenbankdatei verbinden .................................................. 732Warum wird @@ERROR nicht korrekt verarbeitet? ..................................... 733Die Anzahl der Datensätze einer Abfrage bestimmen ................................... 734Warum sind Abfragen mit Platzhaltern so langsam? .................................... 734Groß-/Kleinschreibung berücksichtigen ............................................... 734Das Ergebnis einer Stored Procedure speichern ........................................ 735Nach dem Löschen IDENTITY auf 0 setzen ............................................ 735Datenbankstruktur kopieren .......................................................... 735Eine Tabellenspalte umbenennen ...................................................... 737Aktualisierungs- und Löschweitergaben realisieren ..................................... 737Daten aus verschiedenen Datenbanken anzeigen ....................................... 737

Übersichten ............................................................................. 738Datentypen .......................................................................... 738Unterschiede Access- und SQL Server-Datentypen ..................................... 739

12 Dateien und Verzeichnisse ............................................................ 741Allgemeines ............................................................................. 742

ANSI/ASCII/Unicode ................................................................ 742Gemeinsamer Dateizugriff ............................................................ 742Verwenden der File System Objects ................................................... 743

Zugriff auf das Dateisystem .............................................................. 744Ermitteln aller Laufwerke und deren Eigenschaften ..................................... 744Ermitteln aller Verzeichnis-Eigenschaften .............................................. 746Auflisten aller Unterverzeichnisse eines bestimmten Folders ............................. 746Rekursiv alle Unterverzeichnisse auflisten .............................................. 747

17

Page 19: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch

Inhaltsverzeichnis

Ein Verzeichnis erzeugen ............................................................. 748Das Datenbankverzeichnis bestimmen ................................................. 749Abfragen des Temp-/System-/Windows-Verzeichnisses ................................. 750Prüfen, ob eine Datei existiert ......................................................... 750Verzeichnisse/Dateien kopieren/löschen ............................................... 751Auflisten aller Dateien eines Verzeichnisses ............................................. 751Name, Pfad und Extension einer Datei ermitteln ....................................... 752Einen Tempfile-Namen erzeugen ...................................................... 754

Textdateien .............................................................................. 754Klassischer Zugriff auf Textdateien .................................................... 755Zugriff auf Textdateien mit den File System Objects .................................... 757

Typisierte Dateien ....................................................................... 760Öffnen .............................................................................. 760Lesen/Schreiben ..................................................................... 761

Weitere Dateien ......................................................................... 762Binärdateien ......................................................................... 762INI-Dateien ......................................................................... 763

Die Registrierdatenbank ................................................................. 765Einführung .......................................................................... 765API/VBA-Zugriff auf die Registrierungsdatenbank ..................................... 767API-Konstanten/Funktionen für den Registry-Zugriff .................................. 767Prüfen, ob ein Schlüssel existiert ...................................................... 769Einen vorhandenen Wert auslesen ..................................................... 770Einen Schlüssel erstellen .............................................................. 770Einen Wert setzen bzw. ändern ........................................................ 771Einen Schlüssel löschen ............................................................... 772Ein Feld löschen ..................................................................... 772Aufruf der Funktionen ............................................................... 772

Dateidialoge ............................................................................ 774Variante 1 (Office 14 Library) ......................................................... 775Variante 2 (Windows-API) ........................................................... 778Verzeichnisdialog (Windows-API) .................................................... 783

Übersichten ............................................................................. 784Dateifunktionen in Access ............................................................ 784FSO-Eigenschaften und -Methoden ................................................... 785

Praxisbeispiele .......................................................................... 787Auf eine Textdatei zugreifen .......................................................... 787Dateien suchen ...................................................................... 791Die Shellfunktionen verwenden ....................................................... 793Einen Verzeichnisbaum in eine TreeView einlesen ...................................... 797Ein Datenbank-Backup mit CD/DVD-Brenner realisieren .............................. 798

13 XML in Theorie und Praxis ............................................................ 805XML – etwas Theorie .................................................................... 806

Allgemeines ......................................................................... 806Der XML-Grundaufbau .............................................................. 809Wohlgeformte Dokumente ........................................................... 810Processing Instructions (PI) .......................................................... 812

18

Page 20: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch

Inhaltsverzeichnis

Elemente und Attribute .............................................................. 813Verwendbare Zeichensätze ............................................................ 814

XSD-Schemas ........................................................................... 816Das Grundprinzip ................................................................... 816Ein XSD-Schema mit Microsoft Access erzeugen ....................................... 818

XML-Verarbeitung mit dem DOM ....................................................... 821Was ist das DOM? .................................................................... 822Erste Schritte ........................................................................ 823Laden von Dokumenten .............................................................. 825XML-Fehlerprüfung/-Analyse ........................................................ 825Erzeugen von XML-Dokumenten ..................................................... 827Auslesen von XML-Dateien ........................................................... 829Einfügen von Informationen .......................................................... 833Attribute oder Element ............................................................... 835Suchen in den Baumzweigen .......................................................... 839Das Interpretieren von Leerzeichen .................................................... 842

XML-Integration in Access ............................................................... 845Importieren ......................................................................... 845Exportieren .......................................................................... 848XML-Transformation mit XSLT ....................................................... 851Application-Objekt (ImportXML/ExportXML) ........................................ 853ADO-Recordset ...................................................................... 856

Vor- und Nachteile von XML ............................................................. 859Grundsätzlicher Vergleich ............................................................ 859Zeitvergleich ADO/XML ............................................................. 859

Praxisbeispiele .......................................................................... 861Speichern im UTF-8-/UTF-16-Format ................................................ 861Laden UTF-8-/UTF-16-Format aus einem ADO-Stream ................................ 863XML-Daten asynchron verarbeiten .................................................... 865XML-Daten in einer TreeView darstellen .............................................. 866Navigieren zwischen einzelnen XML-Baumknoten ..................................... 869ADO-XML-Streams nachbearbeiten .................................................. 872Strukturierte Textdaten in XML-Dokumente umwandeln ............................... 875

14 Programmschnittstellen ............................................................... 877Zwischenablage ......................................................................... 878

Kopieren/Einfügen mittels DoCmd-Objekt ............................................ 878Ein Clipboard-Objekt programmieren ................................................ 879

API- und DLL-Einbindung ............................................................... 882Allgemeines ......................................................................... 882Und was ist mit der 64-Bit Access Version? ............................................. 882Woher bekomme ich Informationen über die Win32-API? .............................. 884Einbinden der Deklaration ........................................................... 885Wert oder Zeiger? .................................................................... 887Ausnahmen bestätigen die Regel – Übergabe von Strings ............................... 887Verwenden von As Any ............................................................... 888Übergabe von Arrays ................................................................. 889Besonderheiten mit Records .......................................................... 890Zuordnen der Datentypen ............................................................ 891

19

Page 21: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch

Inhaltsverzeichnis

OLE/ActiveX ............................................................................ 892Überblick ........................................................................... 892OLE ................................................................................. 893Übersicht zum Objektfeld-Steuerelement .............................................. 894Programmieren mit dem Objektfeld ................................................... 897ActiveX-Code-Komponenten (OLE-Automation) ...................................... 900Programmieren mit ActiveX-Code-Komponenten ...................................... 901

DDE .................................................................................... 904Funktionsprinzip .................................................................... 904Verwenden von Steuerelementen ...................................................... 904VBA-Programmierung ............................................................... 906

Scanner-Unterstützung per WIA .......................................................... 907Was kann WIA? ...................................................................... 907Installation/Vorbereitung ............................................................. 907Einstieg mit kleiner Beispielanwendung ............................................... 909Reagieren auf das Verbinden/Trennen von Geräten ..................................... 910Ermitteln der verfügbaren Geräte ..................................................... 911Anzeige der Geräteeigenschaften ...................................................... 911Ein Bild einlesen ..................................................................... 913Bild(er) drucken (Assistent) .......................................................... 914Den Scanner-Assistent aufrufen ....................................................... 915Grafikbearbeitung ................................................................... 916

Arbeiten mit Excel-Arbeitsmappen ....................................................... 918Zugriffsmöglichkeiten ................................................................ 918TransferSpreadsheet .................................................................. 919Import/Export per DAO .............................................................. 922Daten auslesen ....................................................................... 926Zugriff auf Tabellenbereiche .......................................................... 928OLE-Automation .................................................................... 929

Praxisbeispiele .......................................................................... 932Eine externe Anwendung starten ...................................................... 932Informationen über das aktuelle System ermitteln ...................................... 934Das aktuelle Betriebssystem ermitteln ................................................. 937Den Windows-Lizenznehmer ermitteln ................................................ 939Zeitmessungen in Access durchführen ................................................. 940Microsoft Word über ActiveX steuern ................................................. 944Microsoft Excel über ActiveX steuern .................................................. 947Von Visual Basic 2010 per OLE-Automation auf Access zugreifen ........................ 949

15 Access im Internet/Intranet ........................................................... 955Kleine Einführung ....................................................................... 956

Internet/Intranet ..................................................................... 956TCP/IP und UDP .................................................................... 957URL, HTTP und HTML .............................................................. 958Webdienst/Webservice ............................................................... 959

Hyperlinks .............................................................................. 960Hyperlinks in Tabellen ............................................................... 960Hyperlinks verwenden ............................................................... 962

20

Page 22: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch

Inhaltsverzeichnis

Exportieren von Daten im HTML-Format ................................................. 964Automatisches Generieren von HTML-Seiten .......................................... 965Exportieren mit Hilfe von SQL-Anweisungen .......................................... 966HTML-Export über Textdateien ...................................................... 966

Darstellen von HTML-Seiten in Microsoft Access .......................................... 968Allgemeines ......................................................................... 968Das WebBrowserControl-Objekt ...................................................... 969Alternative: Einbinden des ActiveX-Steuerelements in Access ........................... 972Einen Web-Browser programmieren .................................................. 973Einsatz des InternetExplorer-Objekts .................................................. 975

Zusammenarbeit mit E-Mail-Programmen ................................................ 976Mailversand über das DoCmd-Objekt ................................................. 977Mailversand über OLE-Automation ................................................... 979Mailversand über die MAPI ........................................................... 980Eingabedaten per E-Mail sammeln .................................................... 981

16 Access und SharePoint ................................................................ 987Kurzeinführung SharePoint .............................................................. 988

Versionsübersicht .................................................................... 988Soft- und Hardwareanforderungen .................................................... 989SharePoint Foundation 2010 .......................................................... 990SharePoint Server 2010 Enterprise Edition ............................................. 991Access Services – was ist das? .......................................................... 992SharePoint-Listen .................................................................... 992SharePoint-Datentypen .............................................................. 993Formen der Zusammenarbeit von SharePoint und Access 2010 .......................... 994Vorteile von SharePoint gegenüber Access ............................................. 995

Import und Einbindung von SharePoint-Listen ............................................ 995Zu erwartende Probleme beim Import ................................................. 996Listen vom SharePoint-Server einbinden/importieren .................................. 999Arbeiten mit Offline-Daten ........................................................... 1002

Access-Daten auf den SharePoint-Server exportieren ....................................... 1005Probleme beim Export ............................................................... 1006Alle Tabellen nach SharePoint migrieren ............................................... 1007Access-Datenbanken in SharePoint veröffentlichen ..................................... 1007

Tipps & Tricks ........................................................................... 1010Eine SharePoint-Liste erstellen ........................................................ 1010Eine SharePoint-Ansicht erstellen ..................................................... 1013Die Datenblattansicht nutzen ......................................................... 1015Ärger mit dem Offline-Modus ........................................................ 1016Tabellen per Browser importieren ..................................................... 1017

17 Die Access Services .................................................................... 1019Das Grundprinzip ....................................................................... 1020

Unterscheidung zwischen Client- und Web-Objekten ................................... 1021Vor- und Nachteile ................................................................... 1023Grundsätzliche Einschränkungen ..................................................... 1024Verwendung der Access-Runtime ..................................................... 1025

21

Page 23: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch

Inhaltsverzeichnis

Das Veröffentlichen im Detail ............................................................ 1026Eine neue Webdatenbank erstellen .................................................... 1026Eine bestehende Datenbank migrieren ................................................. 1027Veröffentlichen und erster Test ........................................................ 1028Hilfe! Was passiert mit meinen IDs? ................................................... 1031Ein Standardformular festlegen ....................................................... 1032Synchronisieren ...................................................................... 1033Synchronisationskonflikte ............................................................ 1034Offline-Szenario/Zwischenspeichern der Daten ........................................ 1035

Die Web- und Clientobjekte im Detail .................................................... 1039Übersicht ............................................................................ 1039Arbeiten mit Webtabellen ............................................................ 1040Abfragen ............................................................................ 1043Makros .............................................................................. 1047Webformulare/Clientformulare ....................................................... 1049Berichte ............................................................................. 1051

Tipps & Tricks ........................................................................... 1051Administrieren der Access Services .................................................... 1051Einstellungen innerhalb des eigenen Webs vornehmen .................................. 1053Anonymen Zugriff auf die Website ermöglichen ....................................... 1055Distribution Ihrer Webanwendung .................................................... 1059Eine Webdatenbank in eine lokale Datenbank umwandeln .............................. 1059

18 Datendienste in Microsoft Access einbinden .......................................... 1061Übersicht zu den Konzepten .............................................................. 1062

Ein erster Überblick .................................................................. 1062Grundlagen von Webdiensten ......................................................... 1063Die Bedeutung der Business Connectivity Services ..................................... 1066Verwendung der BDCM-Dateien ...................................................... 1067Einschränkungen .................................................................... 1068Unsere Werkzeuge ................................................................... 1069

Komplettbeispiel: Vom Webdienst bis zur Einbindung ...................................... 1069Erstellen des Webdienstes mit Visual C# ............................................... 1069Erzeugen der BDCM-Datei ........................................................... 1074Einbinden in Microsoft Access ........................................................ 1078

Zugriff auf Webdienste mit VBA .......................................................... 1080Fazit .................................................................................... 1081

19 Anwendungsdesign ................................................................... 1083Access-Oberflächengestaltung ............................................................ 1084

Beschriften der Kopfzeile ............................................................. 1084Informationen in der Statuszeile anzeigen ............................................. 1086Fortschrittsanzeige mit dem Progressbar realisieren .................................... 1087Navigationsbereich konfigurieren ..................................................... 1088Access-Hauptfenster komplett ausblenden ............................................. 1094

Steuern der Anwendung ................................................................. 1097Autostart mit AutoExec-Makro ....................................................... 1097Formulare automatisch starten ........................................................ 1098Warten auf das Ende ................................................................. 1099

22

Page 24: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch

Inhaltsverzeichnis

Access per VBA beenden .............................................................. 1099Runtime-Modus ..................................................................... 1100Befehlszeilen-Optionen verwenden .................................................... 1101

Entwickeln von Assistenten und Add-Ins .................................................. 1102Assistenten-Typen ................................................................... 1102Einbinden der Assistenten in die Access-IDE ........................................... 1103Menü-Assistent (Beispiel) ............................................................ 1105Objekt-Assistent (Beispiel) ........................................................... 1107Steuerelemente-Assistent (Beispiel) ................................................... 1110Eigenschaften-Assistent .............................................................. 1113

Entwickeln und Einbinden von Managed Add-Ins ......................................... 1114Interaktion Anwendung/Add-In ...................................................... 1114Entwurf des Add-Ins ................................................................. 1115Verweise einrichten .................................................................. 1117Der Quellcode des Add-Ins ........................................................... 1118Formularentwurf für das Add-In ...................................................... 1121Kompilieren und Einbinden .......................................................... 1121Das Access-Formular ................................................................. 1122

20 Menüband und Backstage-Ansicht programmieren ................................... 1125Allgemeine Grundlagen .................................................................. 1126

Manuelle Konfigurationsmöglichkeiten ................................................ 1127Grundprinzip der Programmierung ................................................... 1128Verwenden der Tabelle USysRibbons .................................................. 1129Application.LoadCustomUI als Alternative ............................................ 1130

Ein kleines Testprogramm ................................................................ 1131Praktische Aufgabenstellungen ........................................................... 1132

Informationen über Steuerelemente und Symbole erhalten ............................. 1132Hauptregisterkarten ausblenden ...................................................... 1135Einzelne Registerkarten ausblenden ................................................... 1136Einzelne Gruppen ausblenden ........................................................ 1137Eigene Registerkarten, Gruppen und Schaltflächen einfügen ............................ 1137Ereignisbehandlung mit VBA-Code/Makros ........................................... 1139Verändern von Eigenschaften mit VBA-Callbacks ...................................... 1140Aktualisieren des Menübands per VBA-Code .......................................... 1141Kontextabhängige Registerkarten ..................................................... 1142Registerkarten per VBA aktivieren ..................................................... 1143Fehlermeldungen des Menübands anzeigen ............................................ 1143Vorhandene Funktionen des Menübands ändern ....................................... 1144Die Schnellzugriffsleiste erweitern/programmieren ..................................... 1145

Übersicht der Steuerelemente ............................................................ 1146labelControl-Steuerelement ........................................................... 1146button-Steuerelement ................................................................ 1146separator-Steuerelement ............................................................. 1150toggleButton-Steuerelement .......................................................... 1151buttonGroup-Steuerelement ......................................................... 1152checkBox-Steuerelement ............................................................. 1153editBox-Steuerelement ............................................................... 1153comboBox-Steuerelement ............................................................ 1155

23

Page 25: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch

Inhaltsverzeichnis

dropDownElement-Steuerelement .................................................... 1158gallery-Steuerelement ................................................................ 1161menu-Steuerelement ................................................................. 1163splitButton-Steuerelement ............................................................ 1166dialogBoxLauncher .................................................................. 1167

Die Backstage-Ansicht konfigurieren und programmieren .................................. 1168Die Standardansicht verändern ....................................................... 1170Die drei möglichen Layouts für Registerkarten ......................................... 1172Die neuen Möglichkeiten von Gruppen ................................................ 1177Anordnen von Steuerelementen mit LayoutContainern ................................. 1180Das Verhalten der Schaltflächen beeinflussen ........................................... 1181Mit VBA/Makros auf Ereignisse reagieren .............................................. 1181

Tipps & Tricks ........................................................................... 1183Die guten alten Access 2003-Menüs anzeigen ........................................... 1183Das Office-Menü für Access 2007 anpassen ............................................ 1184XML-Daten komfortabel editieren .................................................... 1185Arbeiten mit dem RibbonCreator ..................................................... 1186

Übersichten ............................................................................. 1188Callback-Methoden für das Menüband ................................................ 1188

21 Techniken der Programmentwicklung ................................................. 1191Fehlersuche ............................................................................. 1192

Direktfenster ........................................................................ 1193Verwendung des Debug-Objekts ...................................................... 1194Arbeiten mit dem Lokal-Fenster ...................................................... 1195Überwachungs-Fenster .............................................................. 1196Noch mehr Debugging ............................................................... 1197

Fehlerbehandlung ....................................................................... 1201Anweisungen zum Error-Handling .................................................... 1201Beispiele zum Error-Handling ........................................................ 1202Fehlerbehandlung per Ereignis ........................................................ 1204Fehlerbehandlung komplett deaktivieren .............................................. 1204

Dialogfelder ............................................................................. 1205Einfache MsgBox-Anweisung ......................................................... 1205Ausführliche MsgBox-Anweisung ..................................................... 1206Rückgabewerte der MsgBox-Funktion ................................................. 1207Abfrage von Werten mit der InputBox-Funktion ....................................... 1209

Libraries unter Access .................................................................... 1209Erstellen und Einbinden .............................................................. 1210Debugging .......................................................................... 1210Einfaches Beispiel .................................................................... 1211Hinweise ............................................................................ 1213

Programmieren von ActiveX-DLLs mit VB 2010 ........................................... 1213Die Wahl der Entwicklungsumgebung ................................................. 1214Vorbereitungen ...................................................................... 1214Programmierung .................................................................... 1217Einbinden in Access .................................................................. 1220Registrieren der Assembly ............................................................ 1223

24

Page 26: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch

Inhaltsverzeichnis

DLL-Programmierung mit C++ 2010 ..................................................... 1223Entwicklungsumgebung .............................................................. 1223Projekt und Dateien erstellen ......................................................... 1224Ein- und Austrittsprozedur ........................................................... 1226Aufrufkonventionen ................................................................. 1227Funktionsparameter und Variablentypen .............................................. 1227Beispiel einer Sortierroutine .......................................................... 1231Tipps und Tricks ..................................................................... 1234

Entwickeln von HTML-Hilfedateien ...................................................... 1235HTML Help Workshop ............................................................... 1236Unterschiede WinHelp – HTMLHelp .................................................. 1236Kurzbedienung am Beispiel ........................................................... 1237Aufruf der HTML-Hilfe unter Access .................................................. 1240Alternative Hilfe-Entwicklungsumgebung ............................................. 1240

Verteilen von Access-Anwendungen ....................................................... 1241Vorbereitungen ...................................................................... 1242Erstellen der Installationsdateien ...................................................... 1242

Praxisbeispiele .......................................................................... 1247Arbeiten mit dem Debugger .......................................................... 1247

A Glossar ................................................................................ 1253

B Wichtige Dateierweiterungen ......................................................... 1259

C ANSI-Tabelle .......................................................................... 1261

D Wichtige Tastaturcodes ................................................................ 1265Tastencodes für KeyDown, KeyUp ..................................................... 1266Tastencodes der SendKeys-Funktion ................................................... 1268

Stichwortverzeichnis ................................................................... 1269

25

Page 27: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch
Page 28: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch

Vorwort

Microsoft Access ist weit mehr als nur eine komfortable Datenbankverwaltung, denn dem fortgeschrittenen Anwender steht darüber hinaus eine vollständige und vor allem preiswerte Entwicklungsumgebung fürindividuell geprägte Datenbankanwendungen zur Verfügung. Zusammen mit der objekt- und ereignis-orientierten Programmiertechnik bilden VBA, SQL, DAO/ADO, Datenmakros und XML ein mächtiges Werkzeug, um leistungsfähige Datenbank-Applikationen mit besserer Performance und auf beachtlichhöherem Niveau zu erstellen.

Zum Buchinhalt

Dieses Buch bietet Ihnen eine fundierte Einführung in die Programmierung von Datenbanken mit Access 2010. Es handelt sich hierbei um die wesentlich erweiterte und überarbeitete Neuauflage unserer bekannten Vorgängertitel zu Access 95/97/2000/2002/2003/2007 wobei alle wesentlichen Neuerungen berücksichtigt wurden.

Die ausführliche Würdigung der unter Access 2010 eingeführten Neuerungen drückt sich unter anderem in neuen Kapiteln zu Datenmakros, Microsoft SharePoint Server, Access Services und den Datendiensten aus.

Bevor Sie aber mit der Lektüre beginnen, eine Warnung: Das vorliegende Werk ist kein Einsteigerbuch! Sie sollten vorher bereits einige Erfahrungen in der Datenbankprogrammierung gesammelt haben und sich mit Makros, Ausdrücken und Abfragen sowie der Gestaltung von Tabellen, Formularen und Berichten einiger-maßen auskennen. Falls dies nicht der Fall ist, empfehlen wir Ihnen das Studium einführender Literatur, wie zum Beispiel die bei Microsoft Press zu Access erschienenen Grundlagentitel.

Dieses Buch wurde von Praktikern für die Bedürfnisse der Praxis geschrieben. Die Autoren haben deshalb bei der Zusammenstellung des Inhalts weniger aus den zu Access 2010 mitgelieferten Dokumentationen, sondern vor allem aus eigenen Quellen und Erfahrungen geschöpft:

■ Lehrgänge für Datenbankprogrammierer

■ Vorlesungen über Datenbankprogrammierung an Fachhochschulen

■ und (last, but not least) das zahlreiche Feedback unserer Leser zu unseren Vorgängertiteln

Mit VBA (Visual Basic for Applications) stoßen Sie das Tor zur Windows-Programmierung weit auf und greifen direkt auf die mächtige Access-Bibliothek, die DAO-/ADO-Datenzugriffsobjekte oder auf dasWindows-API (Application Programming Interface) zu. Verständlicherweise ist es im Rahmen dieses Buches unmöglich, auf alle Funktionen sowie auf alle Objekte und Sprachelemente der einzelnen Bibliothekeneinzugehen. Dies ist Sache der Befehlsreferenz, auf die Sie am bequemsten über die integrierte Online-Hilfedatei zugreifen können. Ziel des Buches soll es sein, einen Gesamtüberblick zu geben und praktische Konzepte zu vermitteln.

Page 29: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch

HINWEIS

Vorwort

In den insgesamt 21 Kapiteln finden Sie:

■ Ausführliches Know-how über die objekt- und ereignisorientierte Gestaltung der Benutzerschnittstelle von Microsoft Access

■ Eine umfassende Einführung in VBA, SQL und XML mit einer übersichtlichen und auf das Wesentliche reduzierten Sprachbeschreibung

■ Eine gestraffte Einführung in den Datenbankzugriff (Jet, SQL-Server, Microsoft SQL Server 2008) unter Verwendung von DAO/ADO

■ Informationen zu Internet-/Intranet-Technologien sowie zur Anbindung an die .NET-Technologie

■ Eine gestraffte Einführung in die Programmierung von Datenmakros

■ Eine Übersicht zur Zusammenarbeit mit dem Microsoft SharePoint Server sowie dem Zugriff aufDatendienste

■ Viele Kapitel verfügen über einen Übersichtsteil, in dem wichtige Informationen (z.B. relevante Eigen-schaften, Methoden und Ereignisse von zentralen Objekten) griffbereit zur Verfügung stehen

■ Zahlreiche Praxisbeispiele am Ende der Kapitel dienen der Vertiefung der vermittelten theoretischen Grundlagen.

Als ideale praktische Ergänzung empfehlen wir unseren ebenfalls bei Microsoft Press erschienenen Titel »Microsoft Access Programmierrezepte« (ISBN 978-3-86645-098-1 ) mit Hunderten von nachvollziehbaren Problemlösungen und Codebeispielen zu allen im vorliegenden Buch behandelten Themen.

Begleitdateien

Die zu diesem Buch mitgelieferten Begleitdateien enthalten, mit wenigen Ausnahmen, sämtliche Quelltexte der Kapitel 1 bis 21 im .accdb-Format (Access 2007/2010). Falls Sie dieses Buch als ebook erworben haben, können sie die Begleitdateien unter www.microsoft-press.de/support.asp?s110=459 oder msp.oreilly.de/support/9783866454590/656 herunterladen.

Für Einsteiger einige Hinweise, die wir aufgrund von Erfahrungen mit unseren Vorgängertiteln diesmal nicht vergessen wollen:

■ Sie sollten natürlich vorher Microsoft Access 2010 auf Ihrem PC installiert haben.

■ Kopieren Sie die gewünschten Dateien auf die Festplatte. Sollte doch einmal eine Datenbank/Datei beim Testen der Beispiele nicht gefunden werden, müssen Sie im betreffenden Modul die Pfadangaben an-passen.

■ Falls doch einmal ein Beispiel nicht funktionieren sollte, lesen Sie die beigefügte Readme-Datei.

■ Zumindest für das Kapitel 11 sowie das Testen von .adp-Projekten ist die Installation des Microsoft SQL Server 2008 bzw. der entsprechenden Express Version erforderlich. Beachten Sie die erforderlichenSicherheitseinstellungen für den Zugriff.

■ Bevor Sie die Beispiele des Kapitel 16 und 17 (Sharepoint Server) ausprobieren können, sollten Sie sich mit den in diesem Kapitel beschriebenen Voraussetzungen vertraut machen.

28

Page 30: Walter Doberenz, Thomas Gewinnusdownload.e-bookshelf.de/.../0002/2403/92/L-G-0002240392-000302705… · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010-Programmierung Das Handbuch

HINWEIS

HINWEIS

WWW

Vorwort

Sicherheitseinstellungen

Im Zeitalter wachsender Internetkriminalität müssen Sie sich daran gewöhnen, dass zum Schutz Ihres Com-puters reichlich Sicherheitshürden aufgebaut wurden: Access-Sicherheit (VBA), Systemsicherheit (Windows 7), SQL Server-Sicherheit, .NET-Sicherheit.

Das führt für Sie als VBA-Programmierer zunächst zu folgender Konsequenz:

Aufgrund der sehr restriktiven Sicherheitsanforderungen von Access 2010 wird es Ihnen in der Regel nicht gelingen, ohne entsprechende Anpassungen der Access 2010-Entwicklungsumgebung ihren eigenen Code bzw. die zu diesem Buch mitgelieferten Beispiele zum Laufen zu bringen!

Unter Access 2010 wird Visual Basic-Code standardmäßig als »unsicherer Code« eingestuft. Falls dasFormular den Visual Basic-Code nicht ausführt und stattdessen unterhalb des Menübands eine Sicherheits-warnung zeigt, klicken Sie auf die »Inhalt aktivieren«-Schaltfläche.

Um diese lästigen Sicherheitswarnungen generell zu verhindern, sollten Sie (zumindest für die Dauer der Programmentwicklung) im Sicherheitscenter Ihr Datenbankverzeichnis als Vertrauenswürdigen Speicherort hinzufügen.

Eine detaillierte Anleitung, wie Sie mit diesem »heißen Eisen« am besten umgehen, finden Sie im Abschnitt »Sicherheitseinstellungen« des Kapitels 1 (Seite 42).

Zu den Autoren

Hinweise zum Buch und Leseranfragen können Sie über unsere Website

www.doko-buch.de

direkt an die Autoren richten.

Dort finden Sie auch eventuelle Fehlerberichtigungen und ergänzende Beispiele.

Danksagung

Danken möchten wir vor allem Frau Sandra Michel von Microsoft Press für die tatkräftige und verständnis-volle Unterstützung beim Zustandekommen des Werkes. Ein ebenso großes Dankeschön gebührt unseren Familien, ohne deren unerschöpfliche Nachsicht ein Projekt wie dieses nicht erfolgreich hätte abgeschlossen werden können.

Wir hoffen, Ihnen mit diesem Werk einen treuen und möglichst langlebigen Begleiter für die Entwicklung anspruchsvoller Datenbankapplikationen an die Hand gegeben zu haben, der es verdient, seinen ständigen Platz nicht im Regal, sondern griffbereit neben dem Computer einzunehmen.

Viel Spaß und Erfolg beim Programmieren mit Access!

Walter Doberenz und Thomas Gewinnus

29