0

Änderungshistirie auf bestimmtes Feld

Hallo,

ist es möglich über ein Berechnungsfeld mir die letzte Änderung eines bestimmten Feldes anzuzeigen?

Alternativ könnte ich mir das Datum merken bei Änderung in einem Zusätzlichen Feld wäre aber elleganter es über die schon vorhandene History von NINOX zu lösen.

9 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Micha, die letzte Änderung des Datensatzes lässt sich mit der Funktion _md anzeigen, der User mit _mu. Um den Zeitpunkt der jeweils letzten Änderung eines bestimmten Feldes zu speichern, könnte man statt des Berechnungsfeldes ein Datenfeld vom Typ "Datum + Uhrzeit" (ZEITSTEMPEL) nehmen und in den Optionen des "Original-Feldes" bei "Nach Änderungen ..." folgendes eintragen:

     

    ZEITSTEMPEL := now()

     

    Will man die Historie aller Änderungen dieses oder anderer Felder speichern, dann kann man die Werte auch in eine externe Protokoll-Tabelle schreiben.

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Ach so, sehe gerade "über die schon vorhandene History" ... Nein, der Zugriff auf einzelne Felder innerhalb der Änderungshistorie ist m. W. nicht möglich.

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Micha,

    leider kann man auf Ninox-eigene Änderungs-story nicht zugreifen. Ich persönlich nutze dafür eine extra-Tabelle "Dokumentirer" mit Felder: Änderungszeit (Zeitstempel), Tabelle(text), Feld(Text), Wert(text), User(Benutzer). Ich beobachte nur ausgewählte  Felder, für welche ich dann ein Trigger nach Änderung schreibe:
    ...
    let my:=this;
    create Dokumentierer.(
    'Änderungszeit':=now();
    Tabelle:="TABELLENNAME";
    Feld:="FELDNAME";
    Wert:=text(my.FELDNAME);
    User:=user()
    )
    ...

    Wobei die Mühe mit dem User kann man sich sparen weil Ninox sowieso die "errstellt von" selbst speichert. Man kann den Benutzer über _cu aufrufen. 

    Leo

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Oh, da war der Copytexter schneller.

    • Micha
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Da waren die beiden Profis ja gleichzeitig am Werk :-) und die Informationen haben super ergänzt.

    Ja bisher hatte ich ein extra Feld in der selben Tabelle wo ich die letzte Änderung vermerk aber eine eigen Änderungshistorry-Tabelle zu bauen mit allen relevanten Änderungen ist auch eine Super Idee da es bei mir auch nur ein paar wenige Felder sind die ich überwachen möchte.

    Danke und schöne Feiertage

    • Alexander
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo zusammen,

    tolle Lösung, danke! Kann man eigentlich auch irgendwie dokumentieren, dass ein Datensatz gelöscht wurde? Danke für Info, ich suche schon ewig herum ...

    Viele Grüße

    Alexander

    • Alexander
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ich präzisiere das nochmal: Ich meinte nicht das Löschen eines einzelnen Feldes (dann protokolliert diese Lösung ja ein leeres Feld), sondern den gesamten Datensatz (in der Tabelle). Lässt sich das eures Wissens nach irgendwie protokollieren? 

    Viele Grüße nochmal

    Alexander

    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ich wüsste jetzt keine Möglichkeit, das Löschen eines Datensatzes irgendwie zu protokollieren (es sei denn, man löscht über eine eigene Schaltfläche). Ob Datensätze gelöscht wurden, ließe sich immerhin herausfinden, indem man die Datensatznummern auf Lücken prüft. Denn die Nummer eines gelöschten Datensatzes wird ja nicht neu vergeben. Jede nicht (mehr) vorhandene Nummer steht also für einen gelöschten Datensatz. Und wenn man mit _cd die Zeitstempel der davor und danach liegenden Datensätze ausliest, hätte man zumindest den Zeitraum, in dem der dazwischen gelegene gelöscht wurde. Wirklich befriedigend wäre ein solcher Workaround nicht unbedingt, aber eine andere Möglichkeit sehe ich wie gesagt nicht.

    • Jurgen_Wagner
    • vor 2 Jahren
    • Gemeldet - anzeigen

    In der ersten Ansicht (also da, wo alle Tabellen angezeigt werden, wenn man auf den Datenbanknamen links oben klickt), in der übergreifenden Änderungshistorie (2. Reiter) werden die gelöschten Datensätze dokumentiert mit Tabelle, Datensatz-Nr., Benutzer und Zeitstempel. Wenn man also die Datensatznummer (die Lücke) hat, kann man dort mit CMD+F (oder STRG+F auf Windows-Rechnern) den Eintrag finden.

    Beispiel: Suche nach #601 findet

    <Tabelle> #601 gelöscht <Benutzer> <Zeitstempel>

    Alternativ kann man auch nach "gelöscht" suchen.

Content aside

  • vor 2 JahrenZuletzt aktiv
  • 9Antworten
  • 2228Ansichten