Frage

Ich habe folgende Situation:Ich habe ein Access-Formular mit einem Unterformular erstellt (dessen Datensätze über einen bestimmten Schlüssel mit den Datensätzen des Hauptformulars verknüpft sind).Wenn ich versuche, einen Datensatz im Unterformular zu löschen, erhalte ich die folgende Meldung:„Access hat die Aktion ausgesetzt, weil Sie und ein anderer Benutzer versucht haben, die Daten zu ändern“ (ungefähre Übersetzung aus dem Deutschen).Weiß jemand, wie man diese Datensätze aus dem Unterformular (bzw. aus der Tabelle hinter dem Formular) löscht?

War es hilfreich?

Lösung

Wenn Sie gerade das aktuelle Formular „bearbeiten“, ist die Aktion nicht zulässig.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“ bezeichnen würden.

Dies wird in Access normalerweise vermieden, indem die RunCommand-Methode verwendet wird, um alle Änderungen rückgängig zu machen, bevor der Datensatz gelöscht wird:

DoCmd.RunCommand acCmdUndo

Andere Tipps

Samjudson schlug vor:

DoCmd.RunCommand acCmdUndo

Sie können Me.Undo auch verwenden, um die letzte Bearbeitung des Formulars, in dem der Code ausgeführt wird, rückgängig zu machen.

Oder „Me!MySubForm.Form.Undo“, um die letzte nicht gespeicherte Bearbeitung im Unterformular rückgängig zu machen, dessen Unterformular-Steuerelement „MySubForm“ heißt.

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

„DoCmd.RunCommand acCmdUndo“ wendet den Rückgängig-Vorgang auf das aktuell ausgewählte Objekt an, Sie wissen jedoch nicht sicher, ob er auf Steuerelement- oder Formularebene angewendet wird.Durch die Verwendung der von mir vorgeschlagenen Befehle wird völlig klar, was rückgängig gemacht wird.

Beachten Sie jedoch, dass durch „Rückgängig“ Änderungen an einem Steuerelement nicht rückgängig gemacht werden, nachdem das AfterUpdate-Ereignis des Steuerelements ausgelöst wurde, oder an einem Formular, nachdem dessen AfterUpdate-Ereignis ausgelöst wurde (d. h. die Daten wurden in der zugrunde liegenden Datentabelle gespeichert).

Überprüfen Sie auch den „Reihenverriegelungsmechanismus“, den Sie haben.Ich habe Access eine Weile nicht verwendet, aber ich erinnere mich, dass Sie dies in den Tabelleneigenschaften festlegen können.Sie können auf diese Eigenschaften zugreifen, indem Sie auf den berühmten „Punkt“ in der oberen linken Ecke der Tabelle klicken, um die Eigenschaften anzuzeigen.Wenn Sie Access verwenden, wissen Sie, wovon ich spreche.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top