Announcement

Collapse
No announcement yet.

Datenänderung feststellen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datenänderung feststellen

    Hallo zusammen,

    wer hat eine Idee zu folgendem Problem?

    Ich entwickle eine komplexe Anwendung mit Datenbankanbindung.
    Über die Anwendung werden die Daten beim Öffnen eines Eintrages automatisch im Änderungsmodus in die Masken geladen.
    Beim Verlassen der Maske muss ich feststelln, ob Daten geändert wurden.

    Dafür habe ich bislang keine zufriedenstellende Lösung gefunden.

    Bislang in Erwägung gezogen:
    1) Implementierung von Cloneable für die einzelnen Objekte und dann
    eine Kopie mit dem orignial Objekt (nach Auslesen der Maske)
    vergleichen.
    --> Scheidet aus; zuviel Arbeit

    2) Objektkopie über die Serialisierung der einzelnen Objekte beim Laden
    erzeugen und dann mit dem orignial Objekt vergleichen.
    --> Langsam, Liefert bislang kein korrektes Ergebnis

    3) DocumentListener
    --> Problematisch, da beim Laden des Datensatzes bereits das
    Change-Event ausgelöst wird.

    Was tun sprach Zeuss?

    Wer hat zu dem Thema eine zündende Idee?

    Bin dankbar für alle Anregungen.

    Alfons Götzer

  • #2
    Hallo !
    ich habe in etwa das selbe Problem. Ich habe auch schon hier und in einem anderem Forum gepostet, und es ist meistens dasselbe zurück gekommen. Es gibt anscheinend keine praktische Lösung. Die beste Lösung ist anscheinend das man die Objekte zwischenspeichert und sie abschließend vergleicht.
    Ich hab mich zwischenzeitlich für einen Dialog mit Abfrage ob Änderungen gespeichert werden sollen entschieden. Ist zwar für die User umständlich, aber für mich momentan die sicherste und schnellste Lösung.

    javahendri

    Comment


    • #3
      Hallo !

      Wie waere es, wenn Du den/die DocumentListener erst an den Textfeldern anmeldest, nachdem Du die Daten geladen hast?

      Nur eine Idee aus Hannover,
      Stefa

      Comment


      • #4
        Na dann versuch ich doch mal zu zünden ;-)

        Ich habe mir da ein paar Komponenten von Swing abgeleitet, die intern einen "editBeginValue" speichern und gruppenweise auf "isModified()" abgefragt werden können. Funzt wunderbar.

        Eine Beispielanwendung gibt es in http://www.must.de/cam11.zip / Kurzinfo siehe http://www.must.de/Jacomp.htm

        Wenn du "Abbrechen" drückst, wirst du gefragt, ob du die Änderungen verwerfen willst, aber nur, wenn du auch wirklich was geändert hast.

        Gruß, Christop

        Comment


        • #5
          Tja meine Herren,

          zunächst mal besten Dank für die Unterstützung!
          Ich hab zwar keinen Vorschlag direkt umgesetzt, wurde aber
          durch die Variante von Christoph auf das Gleis gesetzt. Wie er
          ja schon angedeutet hat, er hat die Initialzündung gegeben.
          Die nachträgliche Registrieung des DocumentListeners ist zu umständlich.

          Da ich natürlich meine Komponenten auch von Swing abgeleitet hab (hätte ich vielleich erwähnen sollen), regle ich das ganze jetzt über den FocusListener. Bei focusGained speicher ich mir den Präsentationsstring eh schon, um den Feldinhalt nach einer Eingabe wieder herstellen zu können. Bei focusLost vergleiche ich die Feldinhalte und setzte ggf. das Chage-Flag.
          Der Unterschied zu Chriophs Lösung ist der, dass ich damit nur tatsächlich bearbeitete Feldinhalte vergleiche und beim Verlassen des Containers nur das Flag abfrage.

          Ich kann mich Christoph nur anschließen; Funzt wunderbar!

          Beste Dank und Gruß

          Alfon

          Comment

          Working...
          X