HINWEIS
BEISPIEL
Weitere Eigenschaften einer Verbindung
Für das Connection-Objekt sollte man sich noch die folgenden Eigenschaften vormerken:
ConnectionTimeout
... gibt die Zeitdauer an, die auf den Verbindungsaufbau gewartet wird (Default = 15 Sek.)
Mode
... gibt die erlaubten Datenbankoperationen an und regelt den Zugriff (Access-Default = adModeShare-
DenyNone). Wenn Sie diese Eigenschaft unverändert belassen, können also auch andere Benutzer die
Datenbank mit Lese- und Schreibrechten öffnen. Wichtig sind weiterhin die Werte adModeRead (Read-
only-Zugriff) und adModeShareExclusive (jeder weitere Zugriff ist untersagt).
IsolationLevel
... definiert den Grad der gegenseitigen Beeinflussung bei gleichzeitigen Transaktionen durch mehrere
Clients. Die Default-Einstellung adXactChaos zeigt z.B. an, dass Sie innerhalb einer Transaktion Ände-
rungen aus anderen Transaktionen nicht überschreiben können.
Beenden einer Verbindung
Der Aufruf der Close-Methode löst ein Disconnect-Ereignis aus und beendet die Verbindung. Allerdings
wird dabei das Connection-Objekt nicht aus dem Speicher entfernt! So können Sie es mit der Methode
Open später erneut öffnen.
Die Verbindung zur Datenbank wird normalerweise auch ohne Aufruf von Close bei Beenden der Anwendung
automatisch getrennt. Im Interesse einer sauberen Programmierung (Fehlerbehandlung!) sollte man aber Close in jedem Fall
aufrufen.
Der folgende Code sorgt für einen sauberen Programmabschluss:
Private Sub endeButton_Click()
DoCmd.Close
End Sub
Private Sub Form_Unload(Cancel As Integer)
conn.Close
End Sub
Aktionsabfragen mit dem Command-Objekt
Änderungen an Gruppen von Datensätzen können schnell und bequem mit der Execute-Methode eines
Command-Objekts ausgeführt werden. Dies ist ein sehr effizientes Verfahren, da lediglich eine SQL-
Anweisung an den Server geschickt wird und die Übertragung der Daten über das Netzwerk zum Client-
rechner nicht erforderlich ist, d.h. es werden grundsätzlich keine Recordsets zurückgegeben
1
.
Vor Ausführung der Execute-Methode müssen wir uns für einige Eigenschaften des Command-Objekts
interessieren.
1
In diesem Zusammenhang spielt auch die Cursor-Problematik keine Rolle.
373
ADO-Grundoperationen
BEISPIEL
HINWEIS
Kapitel 7: ADO-Programmierung
ActiveConnection-Eigenschaft
Mit ActiveConnection wird dem Command-Objekt vor Aufruf von Execute ein Connection-Objekt zugeord-
net.
Unter der Voraussetzung, dass ein geöffnetes Verbindungsobjekt
conn
existiert, wird ein Bezug zwischen den
Objekten
conn
und
cmd1
hergestellt:
Dim cmd1 As New Command
Set cmd1.ActiveConnection = conn
Da es sich bei der ActiveConnection-Eigenschaft um eine Objektreferenz handelt, musste die Zuweisung mit
Set erfolgen.
CommandText- und CommandType-Eigenschaft
CommandText ist die wichtigste Eigenschaft eines Command-Objekts, sie enthält eine Zeichenkette mit dem
auszuführenden Befehl.
Die CommandType-Eigenschaft verweist auf den Typ des auszuführenden Befehls. Folgende Konstanten
kommen dafür in Frage:
adCmdText
Die Zeichenkette enthält in der Regel ein SQL-Kommando (oder eine anderes, vom Provider unter-
stütztes Befehlsformat).
adCmdTable
Die Zeichenkette enthält den Namen einer Tabelle bzw. einer in der Acces-Datenbank gespeicherten
Abfrage (Query).
adCmdStoredProc
Die Zeichenkette enthält den Namen einer so genannten Stored Procedure, das ist eine beim Server
gespeicherte SQL-Anweisung (gilt nicht für Access-Datenbanken).
adCmdUnknown
(Default) Dieser Wert gilt automatisch immer dann, wenn Sie die CommandType-Eigenschaft nicht zu-
weisen. Zwar verhält sich ADO in diesem Fall intelligent und versucht, durch Nachfragen bei der
Datenbank den passenden Befehlstyp selbst herauszufinden, jedoch ist dies mit erhöhtem Aufwand ver-
bunden (Performance-Einbuße).
Execute-Methode
Haben Sie dem Command-Objekt die Eigenschaften ActiveConnection, CommandText und CommandType
zugewiesen, so steht dem Aufruf der Execute-Methode nichts mehr im Wege.
Die Syntax:
Command.Execute [RecordsAffected], [Parameters], [Options]
374
BEISPIEL
BEISPIEL
BEISPIEL
Ausführen eines UPDATE bei geöffnetem Verbindungsobjekt:
Dim cmd1 As New Command
With cmd1
Set .ActiveConnection = conn ' conn = geöffnetes Connection-Objekt
.CommandType = adCmdText
.CommandText = "UPDATE personen SET gehalt = gehalt-200 WHERE Nachname = 'Tunichts'"
.Execute
End With
RecordsAffected, Parameters und Options
Wie Sie obiger Syntaxdefinition entnehmen, können beim Aufruf von Execute zusätzlich die folgenden
optionalen Argumente übergeben werden:
RecordsAffected
In dieser Long-Variablen gibt der Provider die Anzahl von Datensätzen zurück, auf die sich die Opera-
tion ausgewirkt hat.
Parameters
In diesem Variant-Array werden Parameterwerte mit einer SQL-Anweisung übergeben.
Options
Dieser Long-Wert gibt an, wie der Provider die CommandText-Eigenschaft interpretieren soll (adCmd-
Text etc., siehe CommandType-Eigenschaft)
Die Anzahl der von einer Gehaltskürzung betroffenen Personen wird in einem Bezeichnungsfeld angezeigt:
Dim cmd1 As New Command, anzahl As Long
With cmd1
Set .ActiveConnection = conn ' conn = geöffnetes Connection-Objekt
.CommandText = "UPDATE personen SET gehalt = gehalt-200 WHERE gehalt > 5000"
.Execute anzahl, ,adCmdText
Label2.Caption = Str$(anzahl)
End With
Der Willkür des Chefs sind diesmal nur die Mitarbeiter ausgesetzt, deren zweiter Buchstabe im Nachnamen
ein »o« ist und der mit einem »i« endet.
Dim cmd1 As New Command
cmd1.CommandText = " UPDATE personen SET gehalt = gehalt-200 WHERE Nachname LIKE ?"
cmd1.CommandType = adCmdText
Set cmd1.ActiveConnection = conn ' conn = geöffnetes Connection-Objekt
cmd1.Execute(Parameters:="_o%i")
375
ADO-Grundoperationen

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.