2008-08-29 10 views
1

Ich habe die folgende Situation: Ich habe ein Access-Formular mit einem Unterformular (die Datensätze sind mit den Datensätzen des Hauptformulars über bestimmte Schlüssel verknüpft) erstellt. Wenn ich versuche, einen Datensatz im Unterformular zu löschen, erhalte ich die folgende Meldung: "Access hat die Aktion angehalten, weil Sie und ein anderer Benutzer versucht haben, die Daten zu ändern" (ungefähre Übersetzung aus dem Deutschen). Kann jemand diese Datensätze aus dem Unterformular löschen (bzw. aus der Tabelle hinter dem Formular).Datensätze aus Access-Datenbank löschen, Fehler beim Löschen

Antwort

1

Wenn Sie gerade das aktuelle Formular bearbeiten, wird die Aktion nicht zugelassen. Das Bearbeiten eines Datensatzes kann manchmal durch einfaches Klicken in ein Feld oder andere einfache Aktionen ausgelöst werden, die Sie normalerweise nicht als "Bearbeiten" betrachten würden.

Dieser in der Regel in Access vermieden, indem die RunCommand Methode unter Verwendung irgendwelcher Änderungen rückgängig zu machen, bevor Sie den Datensatz zu löschen:

DoCmd.RunCommand acCmdUndo 
0

Überprüfen Sie auch die „Reihe Verriegelungsmechanismus“, die Sie haben. Ich habe Access seit einiger Zeit nicht mehr verwendet, aber ich erinnere mich, dass Sie set in den Tabelleneigenschaften verwenden konnten. Sie können auf diese Eigenschaften zugreifen, indem Sie auf den berühmten "Punkt" in der oberen linken Ecke der Tabelle klicken, um seine Eigenschaften anzuzeigen. Wenn Sie Access verwenden, wissen Sie, wovon ich rede.

1

samjudson vorgeschlagen:

DoCmd.RunCommand acCmdUndo

Sie können auch Me.Undo, verwenden Sie die zuletzt in das Formular rückgängig zu machen, in dem der Code ausgeführt wird.

Oder, ich! MySubForm.Form.Undo, um die letzte nicht gespeicherte Bearbeitung im Unterformular rückgängig zu machen, deren Unterformular-Steuerelement "MySubForm" heißt.

Sie können MyControl.Undo auch verwenden, um die letzte Bearbeitung eines bestimmten Steuerelements abzubrechen.

"DoCmd.RunCommand acCmdUndo" wendet die Rückgängig-Operation auf das aktuell ausgewählte Objekt an, aber Sie werden nicht sicher wissen, ob es auf der Steuerelement- oder Formularebene angewendet wird. Die Verwendung der Befehle, die ich vorgeschlagen habe, macht völlig klar, was rückgängig gemacht wird. Beachten Sie jedoch, dass Rückgängig die Änderungen an einem Steuerelement nicht rückgängig macht, nachdem das AfterUpdate-Ereignis des Steuerelements ausgelöst wurde, oder für ein Formular, nachdem das AfterUpdate-Ereignis ausgelöst wurde (dh die Daten wurden in der zugrunde liegenden Datentabelle gespeichert)).