Walter Doberenz, Thomas Gewinnus
Access programmieren
Grundlagen und Praxiswissen. Für die Versionen 2010, 2013 und 2016
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
561
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
633
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
738
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
971
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
1097
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
© 2009-2025 ciando GmbH