Nicht aus der Schweiz? Besuchen Sie lehmanns.de

Access programmieren (eBook)

Grundlagen und Praxiswissen. Für die Versionen 2010, 2013 und 2016
eBook Download: PDF | EPUB
2016
1199 Seiten
Carl Hanser Verlag GmbH & Co. KG
978-3-446-45149-0 (ISBN)

Lese- und Medienproben

Access programmieren - Walter Doberenz, Thomas Gewinnus
Systemvoraussetzungen
Systemvoraussetzungen
59,99 inkl. MwSt
(CHF 58,60)
Der eBook-Verkauf erfolgt durch die Lehmanns Media GmbH (Berlin) zum Preis in Euro inkl. MwSt.
  • Download sofort lieferbar
  • Zahlungsarten anzeigen

Das Standardwerk zur Access-Programmierung für Einsteiger und Profis

Von den VBA-Grundlagen über fortgeschrittene Datenbankprogrammierung bis zur Anbindung von SQL Server und dem Einsatz in der Cloud bietet Ihnen dieses Handbuch umfassendes Wissen zur Datenbankprogrammierung für die Access-Versionen 2010 bis 2016.

Grundlagen und Praxiswissen

Einsteiger mit Vorkenntnissen erhalten im ersten Teil eine fundierte Einführung in die Datenbankprogrammierung mit Access unter Verwendung von Makros und VBA.

Für fortgeschrittene Programmierer werden im Hauptteil zahlreiche Problemlösungen und universell einsetzbaren Routinen vorgestellt. Dabei lernen Sie unter anderem, wie Sie die Benutzerschnittstelle gestalten und auf die Daten mit verschiedenen Techniken zugreifen.

Aus dem Inhalt

•Programmieren mit VBA

•Einführung in die Makroprogrammierung

•Programmierung von Formularen und Steuerelementen

•Datenbankberichte und Druckersteuerung

•Datenbankzugriff mit DAO und ADO

•Fortgeschrittene Datenbankprogrammierung (DAO, ADOX, ODBC)

•Microsoft SQL Server (SMO, SQL)

•Zugriff auf Azure SQL und SQLite

•Programmschnittstellen (API-Zugriff, DDE, OLE, DLL und .NET)

•Arbeit mit Dateien, XML und SQL

•Entwickeln von Assistenten und Managed Add-Ins

•Programmieren des Menübands (Ribbon)

Die erforderlichen theoretischen Grundlagen werden klar und verständlich vermittelt; bei der Auswahl der besprochenen Beispiele und Konzepte steht immer der praktische Nutzen im Vordergrund; Tipps und Tricks helfen bei der täglichen Arbeit.

•Auf der Website zum Buch finden Sie alle Codebeispiele

•E-Book inside: Mit Ihrem persönlichen Code können Sie die E-Book-Ausgabe diese Buches downloaden.

Walter Doberenz, Professor für Informatik und Elektrotechnik, ist seit 1996 als Autor, Softwareentwickler und Gastprofessor aktiv. Thomas Gewinnus ist seit über 20 Jahren als Autor, Lehrgangsleiter und Softwareentwickler tätig. Seine Schwerpunkte liegen auf VBA, SQL, C#, Visual Basic und Delphi. Zusammen haben sie mehr als 80 Bücher veröffentlicht.

Inhaltsverzeichnis 6
Teil I: Grundlagen 6
Teil II: Datenschnittstellen 12
Teil III: Weitere Technologien 19
Vorwort 28
1 Einführung 34
1.1 VBA-Programmierung in Access 34
1.1.1 Visual Basic versus VBA 34
1.1.2 Objekt- und ereignisorientierte Programmierung 35
1.1.3 VBA- oder Makro-Programmierung? 36
1.1.4 Die VBA-Entwicklungsumgebung 37
1.1.5 Formularentwurf 37
1.1.6 Code-Fenster und Symbolleiste 38
1.1.7 Das Eigenschaftenfenster 39
1.1.8 Der Projekt-Explorer 40
1.1.9 Das Code-Fenster 40
1.1.10 Arbeiten mit der Hilfe 43
1.2 Sicherheitseinstellungen 44
1.2.1 Zur Geschichte der Access-Sicherheit 44
1.2.2 Eine nicht vertrauenswürdige Datenbank öffnen 45
1.2.3 Das Sicherheitscenter 47
1.2.4 Definition vertrauenswürdiger Speicherorte 50
1.3 Einführungsbeispiele 51
1.3.1 Erstellen der Testdatenbank 52
1.3.2 Konventionelle Programmierung 53
1.3.3 Programmieren mit VBA 57
1.3.4 Automatische Makrokonvertierung 62
1.3.5 Programmieren mit Datenmakros 63
1.4 Highlights und Features von Access 2016 65
1.4.1 Zur Geschichte der Vorgängerversionen 65
1.4.2 Microsoft Access 2016 – viel Lärm um nichts? 68
1.4.3 Der inoffizielle Access-Friedhof (Access 2013/2016) 69
1.5 Übersichten und Ergänzungen 69
1.5.1 Deutsche und englische Bezeichner 69
1.5.2 DoCmd-Objekt 71
2 Programmieren mit VBA 74
2.1 Datentypen, Variablen und Konstanten 74
2.1.1 Übersicht 74
2.1.2 Variablendeklaration 75
2.1.3 Konstantendeklaration 80
2.1.4 Gültigkeitsbereiche 81
2.2 Einzelheiten zu den Datentypen 84
2.2.1 Single- und Double-Datentypen 84
2.2.2 Integer-, Long- und Boolean-Datentypen 84
2.2.3 Date-Datentyp 85
2.2.4 Currency-Datentyp 87
2.2.5 String-Datentyp 88
2.2.6 Variant-Datentyp 90
2.3 Datenfelder (Arrays) 93
2.3.1 Statische Arrays 93
2.3.2 Dynamische Arrays 95
2.4 Benutzerdefinierte Datentypen 97
2.4.1 Type-Anweisung 97
2.4.2 With-Anweisung 98
2.4.3 Strings innerhalb Type 98
2.4.4 Enumerationen 99
2.4.5 Arrays in benutzerdefinierten Typen 100
2.5 Operatoren 101
2.5.1 Arithmetische Operatoren 102
2.5.2 Logische Operatoren 104
2.5.3 Vergleichsoperatoren 105
2.6 Kontrollstrukturen 106
2.6.1 Bedingte Verzweigungen 106
2.6.2 Schleifenanweisungen 108
2.6.3 GoTo und GoSub 110
2.7 Zeichenkettenfunktionen 111
2.7.1 Stringverarbeitung 111
2.7.2 Format-Funktion 113
2.8 Vordefinierte Funktionen 117
2.8.1 Mathematische Funktionen 117
2.8.2 Finanzmathematische Funktionen 120
2.8.3 Datums-/Zeitfunktionen 121
2.9 Benutzerdefinierte Funktionen/Prozeduren 124
2.9.1 Funktion 124
2.9.2 Prozedur 125
2.9.3 Parameterübergabe ByRef oder ByVal 125
2.9.4 Optionale Argumente 126
2.9.5 Benannte Argumente 127
2.9.6 Parameter-Arrays 127
2.9.7 Dynamische Arrays als Argumente 128
2.9.8 Rückgabe von Arrays 128
2.9.9 Private-, Public- und Static-Deklarationen 129
2.10 Fehlersuche 131
2.10.1 Direktfenster 132
2.10.2 Verwendung des Debug-Objekts 132
2.10.3 Arbeiten mit dem Lokal-Fenster 133
2.10.4 Überwachungs-Fenster 135
2.10.5 Noch mehr Debugging 136
2.11 Fehlerbehandlung 140
2.11.1 Anweisungen zum Error-Handling 140
2.11.2 Beispiele zum Error-Handling 141
2.11.3 Fehlerbehandlung per Ereignis 143
2.11.4 Fehlerbehandlung komplett deaktivieren 144
2.12 Standarddialogfelder 144
2.12.1 Einfache Anweisung 145
2.12.2 Ausführliche Anweisung 146
2.12.3 Rückgabewerte der MsgBox-Funktion 146
2.12.4 Abfrage von Werten mit der InputBox-Funktion 148
2.13 Übersichten und Ergänzungen 149
2.13.1 Datumskonstanten 149
2.13.2 Rückgabewerte der VarType-Funktion 149
2.14 Praxisbeispiele 150
2.14.1 In einem Textfeld suchen 150
2.14.2 Zeitangaben runden 151
2.14.3 Das Wochenende feststellen 153
2.14.4 Mit dynamischen Arrays rechnen 154
2.14.5 Arbeiten mit dem Debugger 158
3 Makros – eine Einführung 164
3.1 Klassische Makros 164
3.1.1 Entwurfsoberfläche 164
3.1.2 Eigenständige Makros 165
3.1.3 Eingebettete Makros 168
3.1.4 Das AutoKeys-Makro 172
3.1.5 Das AutoExec-Makro 174
3.1.6 Potenziell gefährliche Makroaktionen 174
3.2 Datenmakros 175
3.2.1 Einsatzmöglichkeitem 176
3.2.2 Funktionsprinzip 176
3.2.3 Erzeugen von Datenmakros 177
3.2.4 Datenmakros umbenennen, löschen und ändern 178
3.2.5 USysApplicationLog 178
3.2.6 Aktionen in Datenmakros 179
3.2.7 Auswahl des richtigen Tabellenereignisses 180
3.3 Praxisbeispiele 181
3.3.1 Eingabe-Formular mit neuem Datensatz öffnen 182
3.3.2 Einen Datensatznavigator selbst bauen 183
3.3.3 Ein ereignisgesteuertes Datenmakro erstellen 185
3.3.4 Arbeiten mit einem benannten Datenmakro 190
3.3.5 Per VBA auf ein benanntes Datenmakro zugreifen 194
3.3.6 Änderungen von Tabelleninhalten protokollieren 195
4 Formulare und Steuerelemente 198
4.1 Allgemeines 198
4.1.1 Gruppen von Eigenschaften 199
4.1.2 Methoden 199
4.1.3 Gruppen von Ereignissen 199
4.2 Das Form-Objekt 200
4.2.1 Format-Eigenschaften 200
4.2.2 Daten-Eigenschaften 207
4.2.3 Weitere Eigenschaften 207
4.2.4 Fenster- und Fokus-Ereignisse 209
4.2.5 Tastatur- und Maus-Ereignisse 211
4.2.6 Daten- und Filter-Ereignisse 213
4.2.7 Weitere Ereignisse 215
4.2.8 Methoden 215
4.2.9 Unterformulare 218
4.3 Steuerelemente (Controls) 219
4.3.1 Allgemeines 219
4.3.2 Allgemeine Eigenschaften auf einen Blick 220
4.3.3 Allgemeine Ereignisse auf einen Blick 230
4.3.4 Methoden von Steuerelementen 231
4.3.5 Das Screen-Objekt 232
4.4 ActiveX-Steuerelemente 234
4.4.1 Vergleich mit den integrierten Steuerelementen 234
4.4.2 StatusBar als Beispiel 236
4.5 Praxisbeispiele 240
4.5.1 Das Textfeld programmieren 240
4.5.2 In ungebundene Textfelder ein- und ausgeben 242
4.5.3 Ein ungebundenes Kombinationsfeld füllen 243
4.5.4 Ein Unterformular programmieren 246
4.5.5 Das Register-Steuerelement kennen lernen 249
4.5.6 Die Statusleiste programmieren 253
4.5.7 Verwenden von Bild-Ressourcen 256
4.5.8 Programmieren des Navigationssteuerelements 258
5 Berichte 262
5.1 Allgemeines 262
5.1.1 Reportansichten 262
5.1.2 Die OpenReport-Methode 263
5.1.3 Parameterübergabe 264
5.2 Wichtige Berichtseigenschaften 264
5.2.1 Formateigenschaften 264
5.2.2 Dateneigenschaften 265
5.2.3 Grafikeigenschaften 265
5.2.4 Linien- und Stifteigenschaften 269
5.2.5 Schrifteigenschaften 270
5.2.6 Farb- und Mustereigenschaften 270
5.2.7 Sonstige Eigenschaften 272
5.3 Berichtsereignisse 274
5.3.1 Allgemeine Ereignisse 274
5.3.2 Tastatur- und Mausereignisse 276
5.4 Berichtsmethoden 277
5.4.1 Grafikmethoden (Übersicht) 277
5.4.2 Scale 277
5.4.3 Line 278
5.4.4 PSet 279
5.4.5 Circle 280
5.4.6 Print 281
5.4.7 TextWidth und TextHeight 282
5.4.8 Sonstige Methoden 283
5.5 Weitere Features des Report-Objekts 283
5.5.1 Rich-Text-Felder drucken 283
5.5.2 Verlauf eines Memofeldes drucken 284
5.5.3 Eine Liste der Anlagen drucken 284
5.5.4 Berichte nachträglich filtern 287
5.5.5 Berichte als PDF-Datei exportieren 288
5.5.6 Berichte als RTF-Datei exportieren 289
5.6 Das Printer-Objekt 289
5.6.1 Wo finde ich das Printer-Objekt? 290
5.6.2 Die Printers-Collection 290
5.6.3 Auswahl eines Druckers 291
5.6.4 Speichern von Berichts-Optionen 293
5.6.5 Eigenschaften des Printers 294
5.7 Direkte Druckausgabe 295
5.8 Übersichten 295
5.8.1 DrawMode-Eigenschaft 295
5.8.2 Farbkonstanten 296
5.9 Praxisbeispiele 296
5.9.1 Aufruf eines Berichts mit Datenfilter 296
5.9.2 Im Report gruppieren und rechnen 300
5.9.3 Erstellen und Drucken eines Diagramms 304
5.9.4 Berichte in Formularen anzeigen 308
6 Programmieren mit Objekten 310
6.1 Objektvariablen 310
6.1.1 Objekttypen und Set-Anweisung 310
6.1.2 Object-Datentyp 312
6.1.3 Form- und Report-Objekt 313
6.1.4 Control-Objekt 314
6.2 Formular- und Berichtsmodule 318
6.2.1 Instanzen von Formularen und Berichten 318
6.2.2 Benutzerdefinierte Form-/Report-Objekte 320
6.2.3 Eigenständige Klassenmodule 321
6.3 Auflistungen 325
6.3.1 Forms/Reports 325
6.3.2 Controls 326
6.3.3 Collection-Objekt 328
6.3.4 Dictionary-Objekt 330
6.3.5 Property und Properties 330
6.3.6 Module-Objekt und Modules-Auflistung 331
6.3.7 Reference-Objekt und References-Auflistung 333
6.4 Die Access-Objekthierarchie 335
6.4.1 Der Objektkatalog 335
6.4.2 Das Application-Objekt allgemein 336
6.4.3 Eigenschaften und Methoden des Application-Objekts 339
6.4.4 Weitere wichtige Objekte 344
6.4.5 AccessObject 345
6.4.6 CurrentProject 346
6.4.7 CurrentData 348
6.5 Übersichten 348
6.5.1 Konstanten der ControlType-Eigenschaft 348
6.5.2 Rückgabewerte der CurrentObjectType-Funktion 349
6.6 Praxisbeispiele 349
6.6.1 Ein Steuerelemente-Array automatisch erstellen 349
6.6.2 Mit Formular-Instanzen arbeiten 353
6.6.3 Mit einer eigenständigen Klasse experimentieren 355
6.6.4 Auf Objekte in Auflistungen zugreifen 358
6.6.5 Properties-Auflistungen untersuchen 361
7 DAO-Programmierung 366
7.1 Allgemeines 366
7.1.1 DBEngine 366
7.1.2 Workspace-Objekt 367
7.1.3 Database-Objekt 368
7.1.4 Recordset-Objekt 368
7.1.5 Verwendung der Datenbankobjekte 369
7.2 Grundlegende Arbeitstechniken 369
7.2.1 Arbeitsumgebung festlegen 370
7.2.2 Datenbank anlegen und öffnen 370
7.2.3 Tabellen/Indizes anlegen 374
7.2.4 Tabellen einbinden 379
7.2.5 Tabellen verknüpfen (Relationen) 380
7.2.6 Abfragen erstellen/ausführen 382
7.2.7 Öffnen von Tabellen/Abfragen 384
7.3 Arbeiten mit Recordsets 387
7.3.1 Eigenschaften und Methoden von Recordsets 387
7.3.2 Datensätze anzeigen 390
7.3.3 Datensätze hinzufügen/ändern 392
7.3.4 Datensätze löschen 394
7.3.5 Datensätze sortieren 396
7.3.6 Datensätze suchen 397
7.3.7 Datensätze filtern 398
7.3.8 DAO in gebundenen Formularen 399
7.3.9 Auf Anlage-Felder zugreifen 402
7.3.10 Auf mehrwertige Felder zugreifen 405
7.3.11 Verlaufsverfolgung eines Memo-Felds 406
7.4 Weitere Funktionen 407
7.4.1 Eigenschaften (Properties) 407
7.4.2 Transaktionen 409
7.5 Praxisbeispiele 410
7.5.1 Eine Tabelle anlegen 410
7.5.2 Navigieren mit DAO 413
7.5.3 Den Datensatzzeiger bewegen 416
7.5.4 In Recordsets suchen 420
7.5.5 Eine Datenbank analysieren 423
7.6 Komplexbeispiel: Telefonverzeichnis 426
7.6.1 Eingabemaske 426
7.6.2 Anforderungen 426
7.6.3 Programmierung 427
7.6.4 Test und Bemerkungen 436
8 ADO-Programmierung 438
8.1 Ein erster Blick auf ADO 438
8.1.1 Kleines Einführungsbeispiel 439
8.1.2 Zur Geschichte von ADO 440
8.1.3 Hinweise zu den ADO-Bibliotheken 441
8.1.4 ADO und OLE DB 442
8.1.1 ADO-Objektmodell 443
8.2 ADO-Grundoperationen 445
8.2.1 Beziehungen zwischen den Objekten 445
8.2.2 Die Verbindung zur Datenquelle 446
8.2.3 Aktionsabfragen mit dem Command-Objekt 450
8.2.4 Recordsets mit Daten füllen 452
8.3 Weitere Operationen mit Recordsets 457
8.3.1 Welche Recordset-Features werden unterstützt? 457
8.3.2 Editieren von Datensätzen 458
8.3.3 Hinzufügen von Datensätzen 459
8.3.4 Löschen von Datensätzen 459
8.3.5 Recordsets filtern 460
8.3.6 Ungebundene Recordsets 461
8.3.7 Recordsets abspeichern 462
8.3.8 Bewegen in Recordsets 462
8.3.9 Daten direkt einlesen 463
8.3.10 Sortieren 464
8.3.11 Suchen 465
8.3.12 Ereignisse auswerten 465
8.4 Zugriff auf ADO-Auflistungen 467
8.4.1 Allgemeine Features 467
8.4.2 Property und Properties 468
8.4.3 Field und Fields 469
8.4.4 Parameter und Parameters 470
8.4.5 Error und Errors 471
8.5 Übersichten 472
8.5.1 Connection-Objekt 472
8.5.2 Command-Objekt 473
8.5.3 Recordset-Objekt 473
8.6 Praxisbeispiele 475
8.6.1 Mit ADO auf eine Access-Datenbank zugreifen 475
8.6.2 Ein ADO-Datenklassenmodul verwenden 477
8.6.3 Ein intelligentes ADO-Frontend entwickeln 480
9 Datenbankverwaltung 486
9.1 Datenbankverwaltung mit ADOX 486
9.1.1 Datenbanken erstellen 488
9.1.2 Tabellendefinition 490
9.1.3 Indexdefinition 494
9.1.4 Erstellen von Prozeduren und Sichten 496
9.1.5 Tabellen verknüpfen (Relationen) 497
9.2 Erstellen spezieller Feldtypen 498
9.2.1 Automatische Zufallswerte (GUID) 498
9.2.2 Memofeld mit Archiv-Funktion (Nur anfügen) 500
9.2.3 Anlage-Feld 502
9.2.4 Rich-Text-Feld 503
9.2.5 Multivalue-Feld (MVF) 504
9.2.6 Berechnete Spalten 509
9.2.7 Beschreibung von Datenbankfeldern setzen 511
9.3 Zugriffsschutz in Access-Datenbanken 513
9.3.1 Grundlagen 513
9.3.2 Sichern auf Datenbankebene (DAO) 515
9.3.3 Sichern auf Datenbankebene (ADO/ADOX) 516
9.3.4 Erstellen neuer Benutzer und Gruppen (DAO) 516
9.3.5 Vergabe von Rechten (DAO) 518
9.3.6 Komplettbeispiel: Nutzerbasierte Sicherheit 520
9.3.7 Erstellen neuer Benutzer und Gruppen (ADOX) 525
9.3.8 Vergabe von Rechten (ADOX) 526
9.3.9 Verschlüsseln von Datenbanken 528
9.4 Multiuserzugriff 531
9.4.1 Verwenden der DAO 532
9.4.2 Verwenden der ADO 535
9.5 ODBC-Verbindungen 536
9.5.1 Ein Blick auf den ODBC-Datenquellen-Administrator 536
9.5.2 Erstellen einer ODBC-Verbindung (DAO) 538
9.5.3 Öffnen einer ODBC-Verbindung (DAO) 539
9.5.4 Öffnen einer ODBC-Verbindung (ADO) 541
9.5.5 Konfigurieren von ODBC-Verbindungen 542
9.6 Zugriff auf Fremdformate 542
9.6.1 dBASE III/IV- und FoxPro-Datenbanken 543
9.6.2 Textdateien (TXT/ASC/CSV) 547
9.7 Einbinden externer Tabellen 551
9.7.1 Verwenden der DAO 551
9.7.2 Verwenden der ADOX 553
9.8 Exportieren von Daten 555
9.8.1 TransferDatabase-Methode 555
9.8.2 Exportieren mit SQL-Anweisungen 556
9.9 Replizieren von Datenbanken 556
9.10 Optimierung 557
9.10.1 Indizes 557
9.10.2 Abfrage-Optimierung 557
9.10.3 Weitere Möglichkeiten 558
9.10.4 ADO/DAO/ODBC – Was ist schneller? 559
9.11 Tipps & Tricks
9.11.1 Wie prüft man die ADO-Versionsnummer? 561
9.11.2 Access-Datenbanken exklusiv öffnen 561
9.11.3 Access-Datenbanken im Netzwerk 562
9.11.4 Alle aktiven Verbindungen zur Datenbank auflisten 562
9.11.5 Das Datenbank-Kennwort ändern 563
9.11.6 Abfragen über mehrere Datenbanken 564
9.11.7 Datenbanken reparieren/komprimieren 564
10 Microsoft SQL Server 566
10.1 Ein erster Schock ... 566
10.2 Allgemeines 567
10.2.1 SQL Server LocalDB 568
10.2.2 SQL Server Express 569
10.2.3 Unterschiede SQL Server-Varianten/Jet-Engine 570
10.2.4 Client- versus Fileserver-Programmierung 572
10.2.5 Installation SQL Server Express 574
10.2.6 Netzwerkzugriff für den SQL Server Express 578
10.2.7 Die wichtigsten Tools von SQL Server 580
10.2.8 Vordefinierte Datenbanken 583
10.2.9 Einschränkungen 584
10.2.10 Weitere SQL Server-Funktionen im Kurzüberblick 585
10.2.11 Datenbanken verwalten 586
10.3 Transact-SQL – die Sprache des SQL Servers 588
10.3.1 Schreibweise 588
10.3.2 Kommentare 589
10.3.3 Zeichenketten 589
10.3.4 Variablen deklarieren/verwenden 590
10.3.5 Bedingungen mit IF/ELSE auswerten 591
10.3.6 Verwenden von CASE 592
10.3.7 Verwenden von WHILE…BREAK/CONTINUE 592
10.3.8 Datum und Uhrzeit in T-SQL 593
10.3.9 Verwenden von GOTO 593
10.4 Praktisches Arbeiten mit dem SQL Server 594
10.4.1 Erstellen neuer SQL Server-Datenbanken 594
10.4.2 Erzeugen und Verwalten von Tabellen 595
10.4.3 Erzeugen und Verwenden von Sichten (Views) 596
10.4.4 Verwenden von Gespeicherten Prozeduren 598
10.4.5 Programmieren von Triggern 602
10.4.6 Erzeugen von Datenbankdiagrammen 606
10.4.7 Volltextabfragen 607
10.4.8 Datenbanken sichern und wiederherstellen 613
10.5 Fehlerbehandlung 616
10.5.1 Das Fehlermodell des SQL Servers 617
10.5.2 Verwenden von @@ERROR 617
10.5.3 Verwenden von RAISEERROR 618
10.5.4 Fehlerbehandlung mit TRY...CATCH 619
10.5.5 Fehlerbehandlung mit den ADO 621
10.6 Datensicherheit auf dem Microsoft SQL Server 623
10.6.1 Überblick Sicherheitsmodell 624
10.6.2 Verwalten mit dem SQL Server Management Studio 626
10.6.3 Verwalten mit T-SQL 630
10.7 Tipps & Tricks
10.7.1 Alle registrierten Microsoft SQL Server ermitteln 633
10.7.2 Alle Datenbanken ermitteln 634
10.7.3 Alle Tabellen ermitteln 634
10.7.4 Eine Tabelle löschen 635
10.7.5 Anzahl der Datensätze beschränken 636
10.7.6 Platzhalterzeichen in TSQL 637
10.7.7 Leerzeichen entfernen 637
10.7.8 Teilstrings erzeugen 637
10.7.9 Mit einer Datenbankdatei verbinden 638
10.7.10 Warum wird @@ERROR nicht korrekt verarbeitet? 639
10.7.11 Die Anzahl der Datensätze bestimmen 639
10.7.12 Warum sind Abfragen mit Platzhaltern so langsam? 639
10.7.13 Groß-/Kleinschreibung berücksichtigen 640
10.7.14 Das Ergebnis einer Stored Procedure speichern 640
10.7.15 Eine Datenbank umbenennen 640
10.7.16 Eine Datenbank zwischen Servern verschieben 641
10.7.17 Die Datenbankstruktur kopieren 642
10.7.18 Nach dem Löschen IDENTITY auf 0 setzen 643
10.7.19 Eine Tabellenspalte umbenennen 643
10.7.20 Temporäre Tabellen unterscheiden 643
10.7.21 Daten aus verschiedenen Datenbanken anzeigen 644
10.7.22 Einen SMO-Mapper realisieren 644
10.8 Übersichten 649
10.8.1 Datentypen 649
10.8.2 Unterschiede Access- und SQL Server-Datentypen 650
11 Access und Azure SQL 652
11.1 Einführung in SQL Azure-Datenbanken 653
11.1.1 Das Grundprinzip der "Webdatenbank" 653
11.1.2 Der Azure-Server 655
11.1.3 Die Frage nach den Kosten 656
11.2 Einrichten des Servers 657
11.2.1 Die zentrale Organisationsstruktur 658
11.2.2 Einen Server und eine Datenbank erstellen 659
11.2.3 IP-Filter konfigurieren 663
11.2.4 Bemerkungen zum neu erstellten Account 664
11.2.5 Die drei konzeptionellen Zugriffsmodelle 664
11.3 Administrieren von Azure SQL-Datenbanken 667
11.3.1 Zugriff mit dem SQL Server Management Studio 667
11.3.2 Weitere Accounts erstellen 669
11.3.3 Lokale Datenbanken migrieren 672
11.3.4 Migrieren von Access-Datenbanken 675
11.4 Praktische Umsetzung in Access 677
11.4.1 Tabellen einbinden 678
11.4.2 DAO- oder ADO-Zugriff – keine Frage! 681
11.4.3 Unsere AzureSQL-Library 681
11.4.4 Verbindung mit ADO aufbauen 682
11.4.5 Datenbank erstellen 686
11.4.6 Ist die Datenbank schon vorhanden? 687
11.4.7 Den aktuellen "Füllstand" abrufen 688
11.4.8 Was passiert, wenn die Datenbank zu klein wird? 691
11.4.9 Eine Datenbankkopie erstellen 691
11.4.10 Tabelle(n) erstellen 692
11.4.11 Daten exportieren 693
11.4.12 Daten einbinden 694
11.4.13 Daten lesen 695
11.4.14 Daten schreiben 696
11.5 Abschließende Hinweise 697
11.5.1 Synchronisieren 697
11.5.2 Performance-Tipps 698
11.5.3 Die Firewall per T-SQL konfigurieren 698
11.5.4 Arbeiten mit sqlcmd 700
11.6 Fazit 700
12 Zugriff auf SQLite 702
12.1 Was eigentlich ist SQLite? 703
12.1.1 Vorteile 703
12.1.2 Nachteile 704
12.2 Vorbereitungen 704
12.2.1 Download/Installation des ODBC-Treibers 705
12.2.2 Download/Installation SQLite for Excel 706
12.3 Datenbank-Tools 707
12.3.1 Database .NET 707
12.3.2 SQLite Administrator 709
12.4 Praktische Aufgabenstellungen 710
12.4.1 Einbinden von SQLite-Tabellen per Assistent 710
12.4.2 Einbinden von SQLite-Tabellen per VBA-Code 711
12.4.3 Datenbank per Code erstellen 712
12.4.4 Tabellen erzeugen 713
12.4.5 Datenbankzugriff per ADO realisieren 715
12.4.6 Die Bedeutung von Transaktionen bei SQLite 716
12.4.7 SOUNDEX verwenden 717
12.4.8 Volltextabfragen realisieren 718
12.5 Praxisbeispiele 721
12.5.1 Verwenden der Volltextsuche 721
12.5.2 Implementieren der Klasse SQLiteDatabase 726
12.5.3 Verwenden der Klasse SQLiteDatabase 736
12.6 Tipps & Tricks
12.6.1 Für Liebhaber der Kommandozeile – Sqlite3.exe 738
12.6.2 Eine SQLite-Datenbank reparieren 740
12.6.3 Eine Beispieldatenbank herunterladen 741
12.6.4 Testen ob Tabelle vorhanden ist 741
12.6.5 Die Datenbank defragmentieren 741
12.6.6 Mehrere Datenbanken verknüpfen 742
12.6.7 Eine Abfrage/Tabelle kopieren 742
12.6.8 Ein Backup implementieren 743
12.6.9 Tabellen zwischen Datenbanken kopieren 743
12.6.10 Ersatz für TOP 743
12.6.11 Metadaten auswerten 744
12.6.12 Timestamp als Defaultwert verwenden 745
12.6.13 Export in XML-Format 746
12.7 Fazit 746
13 Dateien und Verzeichnisse 750
13.1 Allgemeines 750
13.1.1 ANSI/ASCII/Unicode 750
13.1.2 Gemeinsamer Dateizugriff 751
13.1.3 Verwenden der File System Objects 751
13.2 Zugriff auf das Dateisystem 753
13.2.1 Ermitteln aller Laufwerke und deren Eigenschaften 753
13.2.2 Ermitteln aller Verzeichnis-Eigenschaften 754
13.2.3 Auflisten aller Unterverzeichnisse eines Folders 755
13.2.4 Rekursiv alle Unterverzeichnisse auflisten 756
13.2.5 Ein Verzeichnis erzeugen 757
13.2.6 Das Datenbankverzeichnis bestimmen 758
13.2.7 Abfragen des Temp-/System/...-Verzeichnisses 758
13.2.8 Prüfen, ob eine Datei existiert 759
13.2.9 Verzeichnisse/Dateien kopieren/löschen 760
13.2.10 Auflisten aller Dateien eines Verzeichnisses 760
13.2.11 Name, Pfad und Extension einer Datei ermitteln 761
13.2.12 Einen Tempfile-Namen erzeugen 763
13.3 Textdateien 763
13.3.1 Klassischer Zugriff auf Textdateien 764
13.3.2 Zugriff auf Textdateien mit den File System Objects 766
13.4 Typisierte Dateien 769
13.4.1 Öffnen 769
13.4.2 Lesen/Schreiben 769
13.5 Weitere Dateien 771
13.5.1 Binärdateien 771
13.5.2 INI-Dateien 772
13.6 Die Registrierdatenbank 774
13.6.1 Einführung 774
13.6.2 API/VBA-Zugriff auf die Registrierungsdatenbank 775
13.6.3 API-Konstanten/Funktionen für den Registry-Zugriff 776
13.6.4 Prüfen, ob ein Schlüssel existiert 778
13.6.5 Einen vorhandenen Wert auslesen 778
13.6.6 Einen Schlüssel erstellen 779
13.6.7 Einen Wert setzen bzw. ändern 780
13.6.8 Einen Schlüssel löschen 780
13.6.9 Ein Feld löschen 780
13.6.10 Aufruf der Funktionen 781
13.7 Dateidialoge 783
13.7.1 Variante 1 (Office 16 Library) 784
13.7.2 Variante 2 (Windows-API) 786
13.7.3 Verzeichnisdialog (Windows-API) 791
13.8 Übersichten 793
13.8.1 Dateifunktionen in Access 793
13.8.2 FSO-Eigenschaften und -Methoden 794
13.9 Praxisbeispiele 795
13.9.1 Auf eine Textdatei zugreifen 795
13.9.2 Dateien suchen 800
13.9.3 Die Shellfunktionen verwenden 802
13.9.4 Einen Verzeichnisbaum in eine TreeView einlesen 807
14 XML in Theorie und Praxis 808
14.1 XML – etwas Theorie 808
14.1.1 Allgemeines 808
14.1.2 Der XML-Grundaufbau 811
14.1.3 Wohlgeformte Dokumente 812
14.1.4 Processing Instructions (PI) 814
14.1.5 Elemente und Attribute 815
14.1.6 Verwendbare Zeichensätze 816
14.2 XSD-Schemas 818
14.2.1 Das Grundprinzip 818
14.2.2 Ein XSD-Schema mit Microsoft Access erzeugen 820
14.3 XML-Verarbeitung mit dem DOM 824
14.3.1 Was ist das DOM? 824
14.3.2 Erste Schritte 825
14.3.3 Erzeugen von Instanzen 826
14.3.4 Laden von Dokumenten 827
14.3.5 XML-Fehlerprüfung/-Analyse 828
14.3.6 Erzeugen von XML-Dokumenten 830
14.3.7 Auslesen von XML-Dateien 832
14.3.8 Einfügen von Informationen 835
14.3.9 Attribute oder Element 838
14.3.10 Suchen in den Baumzweigen 841
14.3.11 Das Interpretieren von Leerzeichen 844
14.4 XML-Integration in Access 847
14.4.1 Importieren 847
14.4.2 Exportieren 850
14.4.3 XML-Transformation mit XSLT 854
14.4.4 Application-Objekt (ImportXML/ExportXML) 857
14.4.5 ADO-Recordset 860
14.5 Vor- und Nachteile von XML 862
14.5.1 Grundsätzlicher Vergleich 863
14.5.2 Zeitvergleich ADO/XML 863
14.6 Praxisbeispiele 865
14.6.1 Speichern im UTF-8-/UTF-16-Format 865
14.6.2 UTF-8-/UTF-16 aus einem ADO-Stream laden 867
14.6.3 XML-Daten asynchron verarbeiten 869
14.6.4 XML-Daten in einer TreeView darstellen 871
14.6.5 Navigieren zwischen einzelnen XML-Baumknoten 874
14.6.6 ADO-XML-Streams nachbearbeiten 877
14.6.7 Textdaten in XML-Dokumente umwandeln 880
15 SQL im Einsatz 882
15.1 Einführung 882
15.1.1 SQL-Dialekte 883
15.1.2 Kategorien von SQL-Anweisungen 883
15.2 Etwas (Datenbank-)Theorie 885
15.2.1 Allgemeines/Begriffe 885
15.2.2 Normalisieren von Tabellen 890
15.2.3 Beziehungen zwischen den Tabellen 895
15.2.4 Verknüpfen von Tabellen 897
15.3 Testprogramm und Beispieldatenbank 901
15.3.1 Hinweise zur Bedienung 901
15.3.2 Die Beispieldatenbank im Überblick 901
15.3.3 ADO Query 902
15.3.4 Bemerkungen 903
15.4 Daten abfragen 904
15.4.1 Abfragen mit SELECT 905
15.4.2 Alle Spalten auswählen 905
15.4.3 Auswahl der Spalten 906
15.4.4 Filtern 907
15.4.5 Beschränken der Ergebnismenge 913
15.4.6 Eindeutige Records/doppelte Datensätze 914
15.4.7 Tabellen verknüpfen 915
15.4.8 Tabellen vereinigen 918
15.4.9 Datensätze sortieren 919
15.4.10 Datensätze gruppieren 919
15.4.11 Unterabfragen 921
15.4.12 Anlage-Felder mit SQL verwalten 925
15.4.13 History-Felder mit SQL abfragen 927
15.4.14 Mehrwertige Felder mit SQL abfragen 929
15.5 Daten manipulieren 930
15.5.1 Einfügen einzelner Datensätze 931
15.5.2 Einfügen von Abfragedaten 932
15.5.3 Exportieren/Importieren von Abfragedaten 934
15.5.4 Aktualisieren/Ändern 936
15.5.5 Löschen 937
15.6 Erweiterte SQL-Funktionen 938
15.6.1 Berechnete/Formatierte Spalten 939
15.6.2 Berechnungsfunktionen 945
15.6.3 NULL-Werte 946
15.6.4 Datum und Zeit in SQL-Abfragen 948
15.6.5 Datentypumwandlungen 953
15.6.6 Kreuztabellenabfragen 954
15.6.7 Steuerelemente in Abfragen verwenden 957
15.6.8 Globale Variablen in Abfragen verwenden 958
15.7 Datenbankverwaltung mit SQL (DDL) 958
15.7.1 Datenbanken 959
15.7.2 Tabellen 959
15.7.3 Indizes 960
15.7.4 Tabellen/Indizes löschen oder verändern 963
15.7.5 Sichten (Views) 963
15.7.6 Nutzer- und Rechteverwaltung 965
15.7.7 Transaktionen 965
15.8 SQL in der Access-Praxis 966
15.8.1 SQL in Abfragen 966
15.8.2 SQL im Basic-Code 967
15.8.3 SQL beim Oberflächenentwurf 969
15.8.4 VBA-Funktionen in SQL-Anweisungen 969
15.9 Tipps & Tricks
15.9.1 Wie kann ich die Anzahl der Datensätze ermitteln? 971
15.9.2 Wie nutze ich Datumsteile in SQL zur Suche? 972
15.9.3 Die Groß-/Kleinschreibung berücksichtigen 972
15.9.4 Warum erhalte ich zu viele Datensätze ? 973
15.9.5 Doppelte Datensätze aus einer Tabelle löschen 974
15.10 Praxisbeispiele 975
15.10.1 Ein komfortables SQL-Abfrageprogramm erstellen 975
15.10.2 Datum und Zeit in SQL einbauen 977
16 Anwendungsdesign 980
16.1 Access-Oberflächengestaltung 980
16.1.1 Beschriften der Kopfzeile 981
16.1.2 Informationen in der Statuszeile anzeigen 983
16.1.3 Fortschrittsanzeige mit dem Progressbar realisieren 984
16.1.4 Navigationsbereich konfigurieren 985
16.1.5 Access-Hauptfenster komplett ausblenden 991
16.2 Steuern der Anwendung 994
16.2.1 Autostart mit AutoExec-Makro 994
16.2.2 Formulare automatisch starten 996
16.2.3 Warten auf das Ende 996
16.2.4 Access per VBA beenden 997
16.2.5 Den Runtime-Modus aktivieren 997
16.2.6 Befehlszeilen-Optionen verwenden 998
16.3 Entwickeln von Assistenten und Add-Ins 1000
16.3.1 Assistenten-Typen 1000
16.3.2 Einbinden der Assistenten in die Access-IDE 1000
16.3.3 Menü-Assistent (Beispiel) 1002
16.3.4 Objekt-Assistent (Beispiel) 1004
16.3.5 Steuerelemente-Assistent (Beispiel) 1008
16.3.6 Eigenschaften-Assistent 1011
16.4 Entwickeln/Einbinden von Managed Add-Ins 1012
16.4.1 Interaktion Anwendung/Add-In 1012
16.4.2 Entwurf des Add-Ins 1013
16.4.3 Oberfläche 1015
16.4.4 Der Quellcode des Add-Ins 1016
16.4.5 Formularentwurf für das Add-In 1018
16.4.6 Kompilieren und Einbinden 1018
16.4.7 Testen 1019
16.5 Libraries unter Access 1020
16.5.1 Erstellen und Einbinden 1020
16.5.2 Debugging 1021
16.5.3 Einfaches Beispiel 1022
16.5.4 Hinweise 1024
16.6 Praxisbeispiele 1025
16.6.1 Mehr über die aktuelle Access-Version erfahren 1025
16.6.2 Access neu starten/Datenbank neu laden 1026
16.6.3 Mit Reference-Objekten arbeiten 1027
16.6.4 Benutzerdefinierte Eigenschaften einsetzen 1031
16.6.5 Den aktuellen Datenbanknutzer ermitteln 1035
16.6.6 Überlappende Fenster einstellen 1035
16.6.7 Access-Optionen abrufen/setzen 1036
17 Menüband und Backstage 1038
17.1 Allgemeine Grundlagen 1038
17.1.1 Manuelle Konfigurationsmöglichkeiten 1039
17.1.2 Grundprinzip der Programmierung 1040
17.1.3 Verwenden der Tabelle USysRibbons 1042
17.1.4 Application.LoadCustomUI als Alternative 1043
17.2 Ein kleines Testprogramm 1043
17.3 Praktische Aufgabenstellungen 1045
17.3.1 Infos über Steuerelemente und Symbole erhalten 1045
17.3.2 Hauptregisterkarten ausblenden 1047
17.3.3 Einzelne Registerkarten ausblenden 1048
17.3.4 Einzelne Gruppen ausblenden 1049
17.3.5 Registerkarten, Gruppen und Schaltflächen einfügen 1050
17.3.6 Ereignisbehandlung mit VBA-Code/Makros 1052
17.3.7 Verändern von Eigenschaften mit VBA-Callbacks 1053
17.3.8 Aktualisieren des Menübands per VBA-Code 1053
17.3.9 Kontextabhängige Registerkarten 1054
17.3.10 Registerkarten per VBA aktivieren 1055
17.3.11 Fehlermeldungen des Menübands anzeigen 1056
17.3.12 Vorhandene Funktionen des Menübands ändern 1056
17.3.13 Die Schnellzugriffsleiste erweitern/programmieren 1057
17.4 Übersicht der Steuerelemente 1058
17.4.1 labelControl-Steuerelement 1058
17.4.2 Steuerelement 1058
17.4.3 Steuerelement 1062
17.4.4 toggleButton-Steuerelement 1063
17.4.5 buttonGroup-Steuerelement 1064
17.4.6 checkBox-Steuerelement 1065
17.4.7 editBox-Steuerelement 1066
17.4.8 Steuerelement 1067
17.4.9 dropDownElement-Steuerelement 1071
17.4.10 gallery-Steuerelement 1074
17.4.11 menu-Steuerelement 1076
17.4.12 splitButton-Steuerelement 1079
17.4.13 dialogBoxLauncher 1080
17.5 Die Backstage-Ansicht anpassen 1082
17.5.1 Die Standardansicht verändern 1083
17.5.2 Die drei möglichen Layouts für Registerkarten 1085
17.5.3 Die neuen Möglichkeiten von Gruppen 1092
17.5.4 Verwenden von LayoutContainern 1094
17.5.5 Das Verhalten der Schaltflächen beeinflussen 1095
17.5.6 Mit VBA/Makros auf Ereignisse reagieren 1096
17.6 Tipps & Tricks
17.6.1 Die guten alten Access 2003-Menüs anzeigen 1097
17.6.2 Das Office-Menü für Access 2007 anpassen 1099
17.6.3 XML-Daten komfortabel editieren 1100
17.6.4 Arbeiten mit dem RibbonCreator 1101
17.7 Übersichten 1102
18 Programmschnittstellen 1104
18.1 Zwischenablage 1104
18.1.1 Kopieren/Einfügen mittels DoCmd-Objekt 1104
18.1.2 Ein Clipboard-Objekt programmieren 1105
18.2 API- und DLL-Einbindung 1108
18.2.1 Allgemeines 1108
18.2.2 Und was ist mit der 64-Bit Access Version? 1109
18.2.3 Woher bekomme ich Infos über die Win32-API? 1111
18.2.4 Einbinden der Deklaration 1112
18.2.5 Wert oder Zeiger? 1114
18.2.6 Übergabe von Strings 1115
18.2.7 Verwenden von As Any 1116
18.2.8 Übergabe von Arrays 1116
18.2.9 Besonderheiten mit Records 1117
18.2.10 Zuordnen der Datentypen 1119
18.3 OLE/ActiveX 1120
18.3.1 Überblick 1120
18.3.2 OLE 1121
18.3.3 Übersicht zum Objektfeld-Steuerelement 1122
18.3.4 Programmieren mit dem Objektfeld 1125
18.3.5 ActiveX-Code-Komponenten (OLE-Automation) 1128
18.3.6 Programmieren mit ActiveX-Code-Komponenten 1129
18.4 DDE 1131
18.4.1 Funktionsprinzip 1131
18.4.2 Verwenden von Steuerelementen 1132
18.4.3 VBA-Programmierung 1133
18.5 Scanner-Unterstützung per WIA 1135
18.5.1 Was kann WIA? 1135
18.5.2 Installation/Vorbereitung 1135
18.5.3 Einstieg mit kleiner Beispielanwendung 1136
18.5.4 Reagieren auf das Verbinden/Trennen von Geräten 1137
18.5.5 Ermitteln der verfügbaren Geräte 1138
18.5.6 Anzeige der Geräteeigenschaften 1138
18.5.7 Ein Bild einlesen 1140
18.5.8 Bild(er) drucken (Assistent) 1141
18.5.9 Den Scanner-Assistent aufrufen 1142
18.5.10 Grafikbearbeitung 1143
18.6 Zugriff auf Excel-Arbeitsmappen 1145
18.6.1 Zugriffsmöglichkeiten 1145
18.6.2 TransferSpreadsheet 1146
18.6.3 Import/Export per DAO 1150
18.6.4 Daten auslesen 1154
18.6.5 Zugriff auf Tabellenbereiche 1156
18.6.6 OLE-Automation 1157
18.7 Praxisbeispiele 1160
18.7.1 Eine externe Anwendung starten 1160
18.7.2 Informationen über das aktuelle System ermitteln 1162
18.7.3 Das aktuelle Betriebssystem ermitteln 1165
18.7.4 Den Windows-Lizenznehmer ermitteln 1168
18.7.5 Zeitmessungen in Access durchführen 1170
18.7.6 Microsoft Word über ActiveX steuern 1174
18.7.7 Microsoft Excel über ActiveX steuern 1178
Index 1180

1 Einführung

Dieses Kapitel soll Ihnen einen ersten Überblick über die VBA-Programmierung unter Microsoft Access (ab Version 2010) vermitteln. Da das Buch nicht für den absoluten Einsteiger geschrieben wurde, gehen die Autoren davon aus, dass Sie bereits über gewisse Erfahrungen in der konventionellen Access-Datenbankprogrammierung verfügen, die Entwicklungsumgebung bedienen können und zumindest auch wissen, wie ein Makro funktioniert.

1.1 VBA-Programmierung in Access

VBA (Visual Basic for Applications) ist weit mehr als nur eine Alternative zur gängigen Makro-Programmierung unter Microsoft Access. Es handelt sich hier um eine komfortable und leistungsfähige Programmiersprache für alle Microsoft Office-Produkte.

1.1.1 Visual Basic versus VBA

Im Unterschied zu Visual Basic ist allerdings VBA keine eigenständige Sprache, mit der allein man lauffähige Programme entwickeln könnte, sondern es lassen sich mit VBA bestimmte Anwendungen, wie z. B. Microsoft Access, in ihrer Funktionalität erweitern bzw. nutzerspezifischen Anforderungen anpassen. Oder fachmännischer ausgedrückt: Von VBA aus lassen sich die Objektmodelle von Access, Word, Excel etc. steuern. Wenn wir im Folgenden mal von „Visual Basic“ und mal von „VBA“ sprechen, so sollten Sie diese „Laxheit“ nicht auf die Goldwaage legen, denn gemeint ist ein und dasselbe. Fakt ist, dass VBA als Untermenge vollständig in Visual Basic enthalten ist1, bei weitem aber nicht alle Features von Visual Basic unterstützt. Man könnte mit anderen Worten VBA auch als „kleinsten gemeinsamen Nenner“ von Visual Basic2 und Access bezeichnen (siehe folgende Abbildung).

HINWEIS: Es gibt zahlreiche Anwendungen, in die VBA integriert ist, und dabei handelt es sich bei weitem nicht nur um Microsoft Office-Produkte.

1.1.2 Objekt- und ereignisorientierte Programmierung

Im Unterschied zur klassischen prozeduralen Anwendungsentwicklung hat sich der VBA-Programmierer verstärkt mit folgenden Begriffen auseinander zu setzen:

1.1.2.1 Objekte (Objects)

Die verschiedenen Office-Anwendungen bieten ihre Funktionalität in Form von Objekten an, auf die mit VBA-Code zugegriffen werden kann. Obwohl wir mittlerweile im .NET-Zeitalter angekommen sind, liefert das COM (Component Object Model) immer noch die Grundlage für die Zusammenarbeit der verschiedenen Office-Objekte (auch über Anwendungsgrenzen hinaus).

Aus Anwendersicht kennen Sie bereits Datenbankobjekte wie Tabelle, Abfrage, Formular, Bericht, Makro, Modul. Für den VBA-Programmierer sind neben den datenbankspezifischen Objekten Tabelle und Abfrage vor allem Forms, Reports und Controls von besonderem Interesse, da sie die wesentlichen Anwenderschnittstellen zur Verfügung stellen. Hinzu kommen die Module, die keine Objekte im engeren Sinne sind, sondern lediglich Quelltextbibliotheken darstellen.

1.1.2.2 Eigenschaften (Properties)

Hinter diesem Begriff verbergen sich die Attribute von Objekten, wie z. B. Höhe (Height) und Breite (Width) eines Textfeldes. Jedes Objekt verfügt über seine eigene Menge von Eigenschaften, die teilweise nur zur Entwurfszeit (im Eigenschaftenfenster) oder zur Laufzeit (per Quellcode) zugewiesen werden können. Allgemein unterscheiden wir zwischen Format-, Daten- und anderen Properties (siehe dazu Kapitel 4).

1.1.2.3 Methoden (Methods)

Diese auf dem Objekt definierten Funktionen und Prozeduren hauchen „Leben“ in die bislang nur mit statischen Attributen behafteten Objekte. So erzeugt z. B. die Line-Methode eine Linie vor dem Hintergrund eines Reports, mit Print kann Text im Debug-Objekt (Testfenster) ausgegeben werden usw.

1.1.2.4 Ereignisse (Events)

Diese werden von Nachrichten ausgelöst, die vom Objekt empfangen werden. Dieser Nachrichtenverkehr stellt die eigentliche Schnittstelle zu Windows dar. Der Mausklick auf ein Formular löst z. B. ein MouseDown-Ereignis für dieses Objekt aus. Wir unterscheiden zwischen Fenster- und Fokus-, Tastatur- und Maus- sowie Daten- und Filter-Events (siehe Kapitel 4 und 5). Eine Hauptaufgabe des Programmierers ist das Schreiben von so genannten Ereignisbehandlungsroutinen (Event-Handler), in denen er festlegt, wie das Objekt bei Eintreffen eines bestimmten Ereignisses zu reagieren hat.

Einen ersten Eindruck der objekt- und ereignisorientierten VBA-Programmierung gewinnen Sie am besten anhand der Beispiele im Praxisteil dieses Kapitels. Weitere grundlegende Ausführungen zur objektorientierten Programmierung (OOP) folgen in Kapitel 6.

1.1.3 VBA- oder Makro-Programmierung?

Die klassischen Programmiermöglichkeiten unter Microsoft Access (Makro- und Ausdruckseditor, QbE-Fenster etc.) sind bereits so komfortabel, dass Sie mit Recht die Frage stellen werden: „Wozu brauche ich denn dann überhaupt noch VBA?“

Hier eine Aufzählung wichtiger Argumente, die für den Einsatz von VBA sprechen:

  • Erhöhung der Performance (Ausführungsgeschwindigkeit)

  • Definition eigener Funktionen (Makros können keine Werte zurückliefern!)

  • Spezielle Fehlerbehandlungsroutinen sind möglich

  • Verwendung von Ereignissen mit Übergabeparametern

  • Definition neuer Objekte (Tabellen, Abfragen, Formulare, Berichte) per Code

  • Zugriff auf andere Windows-Programme per OLE oder DDE

  • Nutzung spezieller Funktionen des Windows-API

  • Auslagerung von Teilen des Anwendungscodes in eine Bibliothek

  • Arbeiten mit den Datenbank-Objekten

  • Zugriff auf integrierte Funktionen des Datenbanksystems (z. B. Routinen zur Datendefinition oder SQL-Server-Prozeduren)

Auch der genialste Makro-Programmierer wird wohl früher oder später feststellen, dass er an Grenzen stößt, die sich nur mit dem mächtigen Instrumentarium von VBA durchbrechen lassen.

Der Umstieg zu VBA wird für den erfahrenen Makro-Programmierer vor allem durch zwei in Microsoft Access eingebaute Features erleichtert:

  • Automatische Makro-Konvertierung

  • DoCmd-Objekt

Konkrete Anleitungen dazu finden Sie im entsprechenden Einführungsbeispiel bzw. im Übersichtsteil dieses Kapitels.

HINWEIS: Allerdings soll — bei aller Liebe zu VBA — auch nicht verschwiegen werden, dass die Programmierung von Datenmakros und Web-Datenbanken mit VBA nicht möglich ist.

1.1.4 Die VBA-Entwicklungsumgebung

Da in diesem Buch die VBA-Programmierung eine zentrale Rolle spielt, werden wir uns im Folgenden schwerpunktmäßig auf die Elemente der VBA-Entwicklungsumgebung (IDE3) konzentrieren und die übrigen Access-Bedienfunktionen weitgehend als bekannt voraussetzen.

1.1.5 Formularentwurf

Beim visuellen Entwurf der Benutzeroberflächen von Formularen bzw. Berichten haben wir es zunächst mit den standardmäßigen Fenstern der Access-IDE zu tun:

  • Navigationsbereich

  • Formular-/Berichtsfenster (Entwurfsansicht)

  • Eigenschaftenblatt

  • Menüband

Da vorausgesetzt wird, dass Sie bereits über Erfahrungen beim visuellen Entwurf von Formularen/ Berichten verfügen, kann wohl auf weitere Erklärungen verzichtet werden (siehe Einführungsbeispiel).

1.1.6 Code-Fenster und Symbolleiste

Das Tor zur VBA-Programmierung öffnet sich Ihnen weit, nachdem Sie die Registerkarte Datenbanktools gewählt haben und auf die Schaltfläche Visual Basic (Befehlsgruppe Makro) klicken. Hier wählen Sie im Projekt-Explorer das gewünschte Formular aus.

1.1.6.1 Die wichtigsten Fenster

Das VBA-Fenster sieht unter Access genauso aus wie bei den übrigen Office-Anwendungen.

Die wichtigsten Fenster innerhalb der VBA-IDE sind

  • Code-Fenster (öffnen über F7 oder Ansicht/Code),

  • Eigenschaftenfenster (öffnen über F4 oder Ansicht/Eigenschaftenfenster) und

  • Projektfenster (öffnen über Strg+R oder Ansicht/Projekt-Explorer).

Auf einige Besonderheiten dieser Fenster werden wir zu einem späteren Zeitpunkt eingehen.

1.1.6.2 Die wichtigsten Menübefehle

Wenn Sie in der VBA-IDE arbeiten, wechselt das Menüband das Aussehen und stellt Ihnen eine Reihe von Bedienfunktionen zur Verfügung, die Sie speziell für die Arbeit mit dem Code-Editor benötigen. Sie werden feststellen, dass viele Funktionen starke Ähnlichkeiten zur Bedienung einer Textverarbeitung unter Windows aufweisen.

Die am häufigsten benötigten Menüpunkte sind über Schaltflächen. In Abhängigkeit vom momentanen Zustand des Editors können einige Schaltflächen gesperrt sein und/oder das Aussehen bzw. die Funktion wechseln. Außerdem haben Sie die Möglichkeit, über das Menü Ansicht/Symbolleisten Änderungen vorzunehmen.

Die folgende Tabelle zeigt eine Zusammenstellung der für den Einstieg in die Codeprogrammierung zunächst wichtigsten...

Erscheint lt. Verlag 5.9.2016
Verlagsort München
Sprache deutsch
Themenwelt Mathematik / Informatik Informatik Netzwerke
Schlagworte ACCESS • Datenbanken • Makros • Office • Programmierung • VBA
ISBN-10 3-446-45149-8 / 3446451498
ISBN-13 978-3-446-45149-0 / 9783446451490
Haben Sie eine Frage zum Produkt?
PDFPDF (Wasserzeichen)
Größe: 29,3 MB

DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasser­zeichen und ist damit für Sie persona­lisiert. Bei einer missbräuch­lichen Weiter­gabe des eBooks an Dritte ist eine Rück­ver­folgung an die Quelle möglich.

Dateiformat: PDF (Portable Document Format)
Mit einem festen Seiten­layout eignet sich die PDF besonders für Fach­bücher mit Spalten, Tabellen und Abbild­ungen. Eine PDF kann auf fast allen Geräten ange­zeigt werden, ist aber für kleine Displays (Smart­phone, eReader) nur einge­schränkt geeignet.

Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.

Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.

Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.

EPUBEPUB (Wasserzeichen)
Größe: 42,7 MB

DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasser­zeichen und ist damit für Sie persona­lisiert. Bei einer missbräuch­lichen Weiter­gabe des eBooks an Dritte ist eine Rück­ver­folgung an die Quelle möglich.

Dateiformat: EPUB (Electronic Publication)
EPUB ist ein offener Standard für eBooks und eignet sich besonders zur Darstellung von Belle­tristik und Sach­büchern. Der Fließ­text wird dynamisch an die Display- und Schrift­größe ange­passt. Auch für mobile Lese­geräte ist EPUB daher gut geeignet.

Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür die kostenlose Software Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür eine kostenlose App.
Geräteliste und zusätzliche Hinweise

Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.

Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.

Mehr entdecken
aus dem Bereich
das Praxisbuch für Administratoren und DevOps-Teams

von Michael Kofler

eBook Download (2023)
Rheinwerk Computing (Verlag)
CHF 38,95
Das umfassende Handbuch

von Martin Linten; Axel Schemberg; Kai Surendorf

eBook Download (2023)
Rheinwerk Computing (Verlag)
CHF 29,20
Technologien und Best Practices für die Umsetzung im Unternehmen

von Michael Lang; Hans Löhr

eBook Download (2022)
Carl Hanser Verlag GmbH & Co. KG
CHF 38,95