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
.....