BEISPIEL
Beide Möglichkeiten sollten Sie allerdings sparsam einsetzen, da diese mit einer Multiuser-Umgebung
kaum zu vereinbaren sind. Oder möchten Sie sich vielleicht andauernd über ein Meldungsfeld ärgern, das
Ihnen mitteilt, dass momentan kein Zugriff möglich ist?
Verwenden der ADO
Wie bereits erwähnt, ist die Verwendung von Pessimistic Locking in Multiuserumgebungen sicher die
bessere Lösung, deshalb hier gleich ein entsprechendes Beispiel für einen Access-Datenbank.
Zugriff auf den ersten Datensatz
Sub PessimisticLocking()
Dim rs As ADODB.Recordset
Dim con As ADODB.Connection
Dim err As ADODB.Error
On Error GoTo fehler
Verbindung herstellen und öffnen:
Set con = New ADODB.Connection
con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & CurrentProject.Path & "\test1.mdb;"
con.Open
Recordset erstellen (Wichtig: Server-Cursor):
Set rs = New ADODB.Recordset
Set rs.ActiveConnection = con
rs.CursorType = adOpenKeyset
rs.LockType = adLockPessimistic
rs.CursorLocation = adUseServer
rs.Open "Select * from Artikel"
Hier wir die Datensatzsperre aktiv:
rs!Artikelname = "Neuer Wert" & CStr(Now)
MsgBox "Edit"
Und hier wird sie wieder gelöst:
rs.Update
rs.Close
con.Close
MsgBox "Fertig"
End Sub
Rufen Sie die Anwendung ruhig einmal von zwei PCs aus auf, und lassen Sie beim ersten PC die Message-
box mit der Beschriftung »Edit« geöffnet (Satzsperre ist aktiv). Auf dem zweiten PC sollte jetzt ein Laufzeit-
fehler auftreten, wenn Sie versuchen auf den ersten Datensatz zuzugreifen.
Ganz anders, wenn Sie auf dem zweiten PC zunächst ein MoveNext ausführen. Den jetzt aktiven zweiten
Datensatz können Sie problemlos editieren.
555
Multiuserzugriff

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.