21
Walter Doberenz, Thomas Gewinnus Microsoft Access 2010 Programmierung Das Handbuch Microsoft Press

Microsoft Access 2010 Programmierung Das Handbuchdoc1.lbfl.li/acb/FLMF040216.pdf · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010 Programmierung Das Handbuch Microsoft Press

Embed Size (px)

Citation preview

Page 1: Microsoft Access 2010 Programmierung Das Handbuchdoc1.lbfl.li/acb/FLMF040216.pdf · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010 Programmierung Das Handbuch Microsoft Press

Walter Doberenz, Thomas Gewinnus

Microsoft Access 2010ProgrammierungDas Handbuch

MicrosoftPress

Page 2: Microsoft Access 2010 Programmierung Das Handbuchdoc1.lbfl.li/acb/FLMF040216.pdf · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010 Programmierung Das Handbuch Microsoft Press

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 3: Microsoft Access 2010 Programmierung Das Handbuchdoc1.lbfl.li/acb/FLMF040216.pdf · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010 Programmierung Das Handbuch Microsoft Press

Inhaltsverzeichnis

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

Vorwort 27

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

Programmieren mit VBA 73Datentypen, Variablen und Konstanten 74

Übersicht 74Variablendeklaration 75Konstantendeklaration 80Gültigkeitsbereiche 80

Page 4: Microsoft Access 2010 Programmierung Das Handbuchdoc1.lbfl.li/acb/FLMF040216.pdf · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010 Programmierung Das Handbuch Microsoft Press

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

Page 5: Microsoft Access 2010 Programmierung Das Handbuchdoc1.lbfl.li/acb/FLMF040216.pdf · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010 Programmierung Das Handbuch Microsoft Press

Inhaltsverzeichnis

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 147Vörabereignisse 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

Formulare und Steuerelemente i6iAllgemeines 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

Page 6: Microsoft Access 2010 Programmierung Das Handbuchdoc1.lbfl.li/acb/FLMF040216.pdf · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010 Programmierung Das Handbuch Microsoft Press

Inhaltsverzeichnis

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

Berichte •. 225Allgemeines 226

Reportansichten 226Die OpenReport-Methode 226Parameterübergabe 227

Wichtige Berichtseigenschaften 228Formateigenschaften 228Dateneigenschaften 229Grafikeigenschaften 229Linien- und Stifteigenschaften 233Schrifteigenschaften 234Färb- 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 Drückausgabe 260Übersichten 260

DrawMode-Eigenschaft 260Farbkonstanten 261

Page 7: Microsoft Access 2010 Programmierung Das Handbuchdoc1.lbfl.li/acb/FLMF040216.pdf · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010 Programmierung Das Handbuch Microsoft Press

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

Page 8: Microsoft Access 2010 Programmierung Das Handbuchdoc1.lbfl.li/acb/FLMF040216.pdf · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010 Programmierung Das Handbuch Microsoft Press

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

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

Page 9: Microsoft Access 2010 Programmierung Das Handbuchdoc1.lbfl.li/acb/FLMF040216.pdf · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010 Programmierung Das Handbuch Microsoft Press

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

>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 477,/Tabellen verknüpfen 478Tabellen vereinigen 481

Page 10: Microsoft Access 2010 Programmierung Das Handbuchdoc1.lbfl.li/acb/FLMF040216.pdf · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010 Programmierung Das Handbuch Microsoft Press

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

io Fortgeschrittene Datenbankprogrammierung 545Datenbankverwaltung mit ADQX 546

Datenbanken erstellen 547Tabellendefinition 550Indexdefinition 554

Page 11: Microsoft Access 2010 Programmierung Das Handbuchdoc1.lbfl.li/acb/FLMF040216.pdf · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010 Programmierung Das Handbuch Microsoft Press

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 ..../J. 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

Page 12: Microsoft Access 2010 Programmierung Das Handbuchdoc1.lbfl.li/acb/FLMF040216.pdf · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010 Programmierung Das Handbuch Microsoft Press

16 Inhaltsverzeichnis

Tipps & Tricks 625Wie prüft man die ADO-Versionsnummer? 625Access-Datenbanken exklusiv öffnen 625Access-Datenbanken im Netzwerk 625Alle aktiverfVerbindungen 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

ii 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

Page 13: Microsoft Access 2010 Programmierung Das Handbuchdoc1.lbfl.li/acb/FLMF040216.pdf · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010 Programmierung Das Handbuch Microsoft Press

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 y 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

Page 14: Microsoft Access 2010 Programmierung Das Handbuchdoc1.lbfl.li/acb/FLMF040216.pdf · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010 Programmierung Das Handbuch Microsoft Press

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 8061 •) Allgemeines 806

\ ' Der XML-Grundaufbau 809Wohlgeformte Dokumente 810Processing Instructions (PI) 812

Page 15: Microsoft Access 2010 Programmierung Das Handbuchdoc1.lbfl.li/acb/FLMF040216.pdf · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010 Programmierung Das Handbuch Microsoft Press

Inhaltsverzeichnis 19

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 T ' 835Suchen in den Baumzweigen 839Das Interpretieren von Leerzeichen 842

XML-Integration in Access 845Importieren 845Exportieren r. ; 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

Page 16: Microsoft Access 2010 Programmierung Das Handbuchdoc1.lbfl.li/acb/FLMF040216.pdf · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010 Programmierung Das Handbuch Microsoft Press

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 7; 956TCP/IP und UDP 957URL, HTTP und HTML 958Webdienst/Webservice 959

Hyperlinks 960Hyperlinks in Tabellen 960Hyperlinks verwenden 962

Page 17: Microsoft Access 2010 Programmierung Das Handbuchdoc1.lbfl.li/acb/FLMF040216.pdf · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010 Programmierung Das Handbuch Microsoft Press

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 987Kurzeinfiihrung 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

Page 18: Microsoft Access 2010 Programmierung Das Handbuchdoc1.lbfl.li/acb/FLMF040216.pdf · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010 Programmierung Das Handbuch Microsoft Press

22 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

Page 19: Microsoft Access 2010 Programmierung Das Handbuchdoc1.lbfl.li/acb/FLMF040216.pdf · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010 Programmierung Das Handbuch Microsoft Press

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 1151butfonGroup-Steuerelement 1152checkBox-Steuerelement 1153editBox-Steuerelement 1153comboBox-Steuerelement 1155

Page 20: Microsoft Access 2010 Programmierung Das Handbuchdoc1.lbfl.li/acb/FLMF040216.pdf · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010 Programmierung Das Handbuch Microsoft Press

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

Page 21: Microsoft Access 2010 Programmierung Das Handbuchdoc1.lbfl.li/acb/FLMF040216.pdf · Walter Doberenz, Thomas Gewinnus Microsoft Access 2010 Programmierung Das Handbuch Microsoft Press

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