locked
Daten im Puffer, die nicht in die Tabelle geschrieben sind ? RRS feed

  • Frage

  • Hallo Community,

    ich habe ein Programm geschrieben, welches mit einer Reihe von gefufferten Tabellen arbeitet. Nun habe ich ein Formular um datensätze zu bearbeiten. Nach fertiger bearbeitung soll auf den Butten "Speicher" geclickt werden, in dem eine tableupdate rutine steht..

    Nun zu meiner Idee/meinem Problem..

    Ich will, dass wenn mann das Formular schließt obwohl noch daten im puffer stehen die nicht geupdatet wurden, eine abfrage kommen soll, ob nachträglich geupdatet werden soll.. die abfrage soll aber nur kommen, wenn ungesicherte daten im puffer stehen, ansonsten nicht..

    ich habe in der hilfe unter "Buffer" geguckt, bin aber nicht ganz fündig gewurden, oder hab was überlesen.. kann mir jemand helfen (tipp? lösungsansatzt? fertige lösung?)

    Donnerstag, 21. Februar 2013 08:37

Alle Antworten

  •  
    Moin!
     
    schau mal in der Hilfe unter getNextModified() nach. Das könnte Dein Freund und Helfer sein ;)
     
    Grüße
    Jörg
     
    Am 21.02.2013 09:37, schrieb Schosch93:
    > Hallo Community,
    >
    > ich habe ein Programm geschrieben, welches mit einer Reihe von gefufferten Tabellen arbeitet. Nun habe ich ein Formular um datensätze zu bearbeiten. Nach fertiger bearbeitung soll auf den Butten "Speicher" geclickt werden, in dem eine tableupdate rutine steht..
    >
    > Nun zu meiner Idee/meinem Problem..
    >
    > Ich will, dass wenn mann das Formular schließt obwohl noch daten im puffer stehen die nicht geupdatet wurden, eine abfrage kommen soll, ob nachträglich geupdatet werden soll.. die abfrage soll aber nur kommen, wenn ungesicherte daten im puffer stehen, ansonsten nicht..
    >
    > ich habe in der hilfe unter "Buffer" geguckt, bin aber nicht ganz fündig gewurden, oder hab was überlesen.. kann mir jemand helfen (tipp? lösungsansatzt? fertige lösung?)
    >
     
     

    Jörg Schneider
    Freitag, 22. Februar 2013 06:45
  • Jörg hat schon die wichtigste Funktion genannt. Findet GetNextModified nichts modifiziertes, dann ist der Buffer leer.

    Es gibt noch GETFLDSTATE(), allerdings arbeitet das nur Datensatzweise, kann dann aber helfen, nachdem man per GETNEXTMODIFIED bei einem modifizierten Datensatz angekommen ist zu sehen, was sich geändert hat. Wenn man da ist, kann man auch vor dem Tableupdate per CURVAL() schon schauen, ob ein User parallel schon die Daten deselben Datensatzes geändert und geespeichert hat und sich das von OLDVAL() oder dem Wert im Arbeitsbereich unterscheidet.

    Und last not least lösen manche Aktionen den Fehler 1545 aus, wenn noch Änderungen im Buffer sind, z.B. löst der Versuch, den Buffermodus zu ändern diesen Fehler aus. Das läßt sich auch ausnutzen mit TRY..CATCH. So kann man z.B. die Tabelle auf ungebuffert abändern. Wenn's geht war nichts drin, also ist dann auch nichts verloren. Aber lnChangedRecno = GETNEXTMODIFIED(0,"tabelle") liefert 0 bei leerem Buffer oder den Wert statt 0 für Folgeaufrufe, um zum folgenden geänderten Datensatz weiter zu springen.

    Tschüß, Olaf.


    • Bearbeitet Olaf Doschke Freitag, 22. Februar 2013 13:32
    • Als Antwort markiert Schosch93 Mittwoch, 27. Februar 2013 08:24
    • Tag als Antwort aufgehoben Schosch93 Mittwoch, 27. Februar 2013 10:31
    Freitag, 22. Februar 2013 13:32