News & Tipps zu Microsoft Access

Lesen Sie hier einige der besten Beiträge aus SmartTools Access Weekly sowie ausgewählte Inhalte anderer E-Mail-Newsletter von SmartTools Publishing rund um Microsoft Access.

Beitrag aus SmartTools Access Weekly

Änderungen per Recordset in SQL-Tabellen speichern

Access 365 2024 2021 2019 2016 2013 2010

FRAGE Wenn Access als Frontend und ein SQL-Server als Backend eingesetzt wird, erscheint bei Neuanlagen oder Änderungen, die man per Recordset an Tabellen vornimmt, bei einigen Prozeduren die Fehlermeldung: "Wenn Sie auf eine SQL-Server-Tabelle zugreifen, die eine IDENTITY-Spalte enthält, müssen sie für die OpenRecordset-Methode die dbSeeChanges-Option verwenden". Die VBA-Prozedur wird dann abgebrochen. Die Datenbank funktioniert als gemeinsam genutzte Datenbank seit Jahren problemlos, nur wenn ein SQL-Server als Backend eingesetzt wird, erscheint bei einigen Prozeduren diese Meldung.

R. Kremer

ANTWORT Die Initialisierung eines Recordsets mit

Set rs = db.OpenRecordset("Tabelle", _
                          dbOpenDynaset, _
                          dbSeeChanges)

sollte in einer Mehrbenutzerumgebung generell verwendet werden, um Zugriffskonflikte erkennen/abfangen zu können. Es wird dann bei "rs.Edit" bzw. "rs.Update" ein Laufzeitfehler ausgelöst, um zu verhindern, dass zum Beispiel ein momentan von einem Anwender per Formular geänderter Datensatz durch Recordset-Änderungen oder die Recordset-Änderungen durch Speichern des geänderten Datensatzes aus dem Formular überschrieben wird. Ändern Sie Ihre Routine einmal folgendermaßen, um auf solche Konflikte hinweisen zu können:

.....
On Error Resume Next
rs.Edit
If Err <> 0 Then
  MsgBox "Änderungen momentan nicht möglich, " & _
         "Datensatz anderweitig in Bearbeitung!"
  Exit Sub
End If
On Error Goto 0
.....
On Error Resume Next
rs.Update
If Err <> 0 Then
  MsgBox "Änderungen momentan nicht möglich, " & _
         "Datensatz anderweitig in Bearbeitung!"
  Exit Sub
End If
On Error Goto 0
.....