Kapitel 9: Fortgeschrittene Datenbankprogrammierung
Die nachfolgende Tabelle zeigt die möglichen Werte für Löschweitergaben bzw. Änderungen, die über die
Eigenschaften UpdateRule und DeleteRule gesteuert werden.
Konstante Beschreibung
adRINone (Default) Keine Aktion.
adRICascade Ändert die Kaskadierung.
adRISetNull Setzt den unbekannten Schlüsselwert auf Null.
adRISetDefault Setzt den unbekannten Schlüsselwert auf den Standardwert.
Tabelle 9.9 Werte für UpdateRule/DeleteRule
Damit dürften die wichtigsten Funktionen der ADOX im Zusammenhang mit dem Erstellen von Daten-
banken aufgezeigt sein. Im folgenden Abschnitt gehen wir noch auf einige spezielle Feldtypen ein, die teil-
weise erst mit Access 2007 eingeführt wurden und etwas mehr administrativen Aufwand erfordern
Erstellen spezieller Feldtypen
Sicher ist Ihnen nach dem Studium der vorhergehenden Abschnitte aufgefallen, dass von den mit Access
2007 neu eingeführten Datentypen
Memo-Feld mit Archiv-Funktion,
Rich-Text-Feld,
Anlage-Feld
und Multivalue-Feld
nicht viel zu sehen war. Die Ursachen: Zum einen handelt es sich in fast allen Fällen nur um spezielle Eigen-
schaften, die ein Feld mit Basisdatentyp (z.B. Memo) um spezielle Funktionen erweitern, zum anderen wird
Ihnen die ADOX-Library in diesem Zusammenhang nicht viel nützen, hier hilft nur DAO weiter.
Doch zunächst wollen wir noch auf einen Feldtyp eingehen, der häufig verwendet wird, um Offline-Daten
zu organisieren.
Automatische Zufallswerte (GUID)
Werden Daten an verschiedenen Stellen gesammelt und erst später in einer Tabelle zusammengeführt
1
, ist
es häufig günstiger, statt eines einfachen Zählerfeldes einen eindeutigen GUID-Primärschlüssel
2
zu verwen-
den. So werden Synchronisationskonflikte gleich von vornherein vermieden.
Doch wie erzeugen Sie eine derartige Spalte per VBA-Code?
Verwenden Sie in Access dafür zunächst ein GUID-Feld. Zusätzlich müssen Sie über die Jet-spezifischen
Eigenschaften noch den Wert Jet OLEDB:AutoGenerate auf True setzen.
1
Ein typisches Access-Einsatz-Szenario (Außendienst mit Access-Anwendung).
2
Global Unique Identifier
522
BEISPIEL
BEISPIEL
HINWEIS
Nachträgliches Erzeugen eines GUID-Feldes mit eindeutigen Zufallswerten in der aktuellen Datenbank
Sub Auto_GUID()
Dim catalog As New ADOX.catalog
Dim table As New ADOX.table
Dim column As ADOX.column
Dim index As ADOX.index
catalog.ActiveConnection = Application.CurrentProject.Connection
table.name = "tblAutowert"
Set table.ParentCatalog = catalog
Set column = New ADOX.column
With column
.ParentCatalog = catalog
.name = "GUIDId"
.Type = adGUID
.Properties("Jet OLEDB:AutoGenerate").Value = True
End With
table.Columns.Append column
table.Columns.Append "Daten", adVarWChar, 50
catalog.Tables.Append table
End Sub
Verwenden einer externen Datenbank
...
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Kunden.accdb;"
conn.Open
catalog.ActiveConnection = conn
Set table = catalog.Tables("Kundenstammdaten")
...
Test
Geben Sie in die neu erzeugte Tabelle einige Werte ein und überzeugen Sie sich von der Funktionsweise des
GUID-Generators:
Abbildung 9.5 Die erzeugten GUIDs
Auch bei 1:n-Beziehungen kann jetzt ein Datenimport problemlos realisiert werden, da die verwendete GUID
weltweit eindeutig ist. Der Nachteil dieses Datentyps ist sicher dessen Länge und damit seine Lesbarkeit.
523
Erstellen spezieller Feldtypen

Get Microsoft Office Access 2007-Programmierung - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.