Farbschema: Dunkel
Sie befinden sich hier: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Forms Object Library » troubleshooting » Änderungen in der Struktur werden nicht gespeichert

Änderungen in der Struktur werden nicht gespeichert

Ein Knoten, der in der Formularansicht umbenannt, verschoben, hinzugefügt oder gelöscht wurde, oder eine bearbeitete Zelle einer Strukturliste erscheint im Steuerelement geändert, aber die Tabelle ist unverändert, und nach Requery oder nach erneutem Öffnen des Formulars ist die Änderung verschwunden.

Umgebung

Alle Versionen von WklTreeView und WklTreeList.

Ursache

Einer dieser Fälle liegt vor:

  • AutoSave ist False: Änderungen wirken sich nur auf die Anzeige aus. Eine Zelle ist dann bearbeitbar, gleich was die Quelle zulässt; der eingegebene Wert bleibt auf dem Bildschirm, bis Requery die Quelle neu liest. ValidateCell kommt, bevor der Wert übernommen wird (mit Cancel), AfterCellUpdate danach (ohne). Eine Anwendung, die die Änderung selbst schreibt (zum Beispiel über eine gespeicherte Prozedur), tut das in ValidateCell und bricht ab, wenn das Schreiben scheitert, denn AfterCellUpdate kann die Anzeige nicht mehr rückgängig machen; Werte, die das Schreiben an anderer Stelle ändert (eine Zeilenversion, ein Zeitstempel), erscheinen nach Requery.
  • Die Struktur wurde aus einem Recordset oder mit LoadFromFile, LoadFromStream, LoadFromString oder AsJSON ohne RecordSource geladen: Es gibt keine Datenherkunft, in die geschrieben werden könnte.
  • BeforeUpdate (oder AfterLabelEdit, NodeDrop, ValidateCell) hat Cancel = True gesetzt; der gesamte Vorgang wurde zurückgenommen.
  • Access hat das Schreiben abgelehnt (Gültigkeitsregel, Pflichtfeld, gesperrte oder schreibgeschützte Quelle wie eine nicht aktualisierbare Abfrage). Die Struktur bleibt dann unverändert, und DataError meldet den Grund.

Lösung

  1. Prüfen Sie AutoSave (Eigenschaftenblatt, Registerkarte Andere).
  2. Binden Sie mit RecordSource statt mit Recordset, wenn Änderungen gespeichert werden müssen.
  3. Behandeln Sie DataError, um die Meldung von Access zu sehen:

    Private Sub Tree1_DataError(ByVal DataErr As Long, ByVal Description As String, Response As Integer)
        Debug.Print DataErr, Description
    End Sub
  4. Prüfen Sie, ob die Datenherkunft aktualisierbar ist: Öffnen Sie sie als Datenblatt und ändern Sie dasselbe Feld von Hand.
de/wiki/msaccess/comctl/troubleshooting/changes-not-saved.txt · Zuletzt geändert: von Wolfgang van der Stille