Moderat: Erfordert grundlegende Makro-, Codierungs- und Interoperabilitätskenntnisse.Dieser Artikel gilt für eine Microsoft Access-Datenbank (.mdb) und für ein Microsoft Access-Projekt (.adp).
Problembeschreibung
Wenn Sie Daten bearbeiten, die mehrere Formulare mit derselben Datensatzquelle verwenden, wird möglicherweise die folgende Fehlermeldung angezeigt:
Dieser Datensatz wurde von einem anderen Benutzer geändert, seit Sie mit der Bearbeitung begonnen haben. Wenn Sie den Datensatz speichern, überschreiben Sie die Änderungen, die der andere Benutzer vorgenommen hat. Wenn Sie die Änderungen in die Zwischenablage kopieren, können Sie die Werte anzeigen, die der andere Benutzer eingegeben hat, und die Änderungen dann wieder einfügen, wenn Sie Änderungen vornehmen möchten.
Anschließend können Sie auf eine der folgenden drei Schaltflächen klicken:
-
Save Record
-
In Zwischenablage kopieren
-
Drop-Änderungen
Ursache
Dieses Verhalten tritt auf, wenn Sie zwei Formulare öffnen, die dieselbe Datenquelle gleichzeitig aktualisieren. Das erste Formular setzt eine Bearbeitungssperre für den Oder die Datensätze, und das zweite Formular ändert den Datensatz oder die Datensätze und speichert die Änderungen. Wenn das erste Formular versucht, zu schließen und in die Tabelle zurückzuschreiben, werden die Vom zweiten Formular vorgenommenen Änderungen erkannt. Dadurch wird der Fehler zurückgegeben.
Fehlerbehebung
Um dieses Verhalten zu umgehen, verwenden Sie eine der beiden Methoden, die für eine Microsoft Access-Datenbankdatei (.mdb) aufgeführt sind, oder die Methode, die für eine Access-Projektdatei (.adp) aufgeführt ist.
Für eine Microsoft Access-Datenbankdatei (.mdb)
Methode 1
Legen Sie die RecordLocks-Eigenschaft des Formulars auf Bearbeitetes Datensatzfest. Führen Sie dazu die folgenden Schritte aus:
-
Öffnen Sie das Formular in der Entwurfsansicht. Hinweis Gehen Sie in Access 2007 zu Schritt 3.
-
Klicken Sie im Menü Ansicht auf Eigenschaften.
-
Ändern Sie auf der Registerkarte Daten die Eigenschaft Datensatzsperren in Bearbeiteter Datensatz.
Methode 2
Fügen Sie code zur OnDeactivate-Ereignisprozedur beider Formulare hinzu, um den Datensatz zu speichern. Führen Sie dazu die folgenden Schritte aus:
-
Öffnen Sie das Formular in der Entwurfsansicht. Hinweis Gehen Sie in Access 2007 zu Schritt 4.
-
Klicken Sie im Menü Ansicht auf Eigenschaften.
-
Klicken Sie im Menü Bearbeiten auf Formular auswählen.
-
Klicken Sie auf der Registerkarte Ereignis mit der rechten Maustaste in das Feld OnDeactivate-Eigenschaft, und klicken Sie dann auf Erstellen.
-
Klicken Sie im Feld Builder auswählen auf Code Builder, und klicken Sie dann auf OK.
-
Geben Sie den folgenden Code ein, oder fügen Sie ihn ein:
DoCmd.RunCommand acCmdSaveRecord
-
Öffnen Sie das zweite Formular in der Entwurfsansicht, und wiederholen Sie die Schritte 2 bis 6.
Für eine Microsoft Access Project -Datei (.adp):
Fügen Sie Code zu den Ereignisprozeduren OnDeactivate und OnActivate beider Formulare hinzu, um den Datensatz zu speichern. Führen Sie dazu die folgenden Schritte aus:
-
Öffnen Sie das Formular in der Entwurfsansicht. Hinweis Gehen Sie in Access 2007 zu Schritt 4.
-
Klicken Sie im Menü Ansicht auf Eigenschaften.
-
Klicken Sie im Menü Bearbeiten auf Formular auswählen.
-
Klicken Sie auf der Registerkarte Ereignis mit der rechten Maustaste in das Feld OnDeactivate-Eigenschaft, und klicken Sie dann auf Erstellen.
-
Klicken Sie im Feld Builder auswählen auf Code Builder, und klicken Sie dann auf OK.
-
Geben Sie den folgenden Code ein, oder fügen Sie ihn ein:
DoCmd.RunCommand acCmdSaveRecord
-
Klicken Sie im Menü Datei auf Schließen, und kehren Sie zu Microsoft Access zurück.
-
Klicken Sie auf der Registerkarte Ereignis mit der rechten Maustaste in das Feld OnActivate-Eigenschaft, und klicken Sie dann auf Erstellen.
-
Klicken Sie im Feld Builder auswählen auf Code Builder, und klicken Sie dann auf OK.
-
Geben Sie den folgenden Code ein oder fügen Sie ihn ein:Hinweis Der Beispielcode in diesem Artikel verwendet Microsoft ActiveX-Datenobjekte. Damit dieser Code ordnungsgemäß ausgeführt werden kann, müssen Sie auf die Microsoft ActiveX Data Objects 2.x-Bibliothek verweisen (wobei 2.x 2.1 oder höher ist). Klicken Sie dazu im Menü Extras im Visual Basic-Editor auf Referenzen, und stellen Sie sicher, dass das Kontrollkästchen Microsoft ActiveX Data Objects 2.x Library aktiviert ist.
Dim rs As ADODB.RecordsetSet rs = Me.Recordset.Cloners.Bookmark = Me.BookmarkDoCmd.RunCommand acCmdRefreshMe.Bookmark = rs.Bookmarkrs.CloseSet rs = Nothing
-
Öffnen Sie das zweite Formular in der Entwurfsansicht, und wiederholen Sie dann die Schritte 2 bis 10.
Weitere Informationen
Schritte zum Reproduzieren des Verhaltens in Access 2003
-
Open Access.
-
Zeigen Sie im Hilfemenü auf Beispieldatenbanken, und klicken Sie dann auf Northwind Sample Database.
-
Klicken Sie im Datenbankfenster unter Objekteauf Tabellen, und klicken Sie dann auf die Tabelle Mitarbeiter.
-
Klicken Sie im Menü Einfügen auf AutoForm.
-
Speichern Sie das Formular als frmNewEmployees.
-
Öffnen Sie das Formular Mitarbeiter, und ändern Sie dann das Feld Vorname in Nancy1.
-
Öffnen Sie das Formular frmNewEmployees, und ändern Sie dann das Feld Vorname in Nancy2.
-
Schließen Sie das Formular frmNewEmployees.
-
Schließen Sie das Formular Mitarbeiter. Beachten Sie, dass Sie die Meldung "Konflikt schreiben" erhalten, die im Abschnitt "Problembeschreibung" dieses Artikels erwähnt wird.
Weitere Informationen erhalten Sie, um die folgenden Artikelnummern anzuzeigen, um die Artikel in der Microsoft Knowledge Base anzuzeigen:
304181 Unerwarteter Schreibkonfliktfehler beim Schließen eines Formulars
280730 ACC2000: Fehler beim Schreiben von Konfliktfehlern beim Aktualisieren von Datensätzen in einer verknüpften SQL Server-Tabelle