0

Datum und System der letzten Änderung sichern

Hallo. Kurz vorab das Problem. Ich benutze Datenbanken über iCloud sowohl auf dem MacBook Pro, dem iPad und auf dem iPhone. Und nicht selten merke ich, dass die Datenbanken untereinander nicht synchron sind. Allerdings merke ich das erst, wenn es zu spät ist. Leider.

Meine Idee ist nun, dass ich in eine Tabelle immer das letzte Änderungsdatum, die Änderungsuhrzeit sowie das System, welches die Änderung vorgenommen hat, schreibe.

Also beispielsweise:

29.12.2018 17:41:32 / iPhone
29.12.2018 10:43:32 / iPad
30.12.2018 18:11:47 / Mac

Dann wüsste ich wenigstens, ob eine Synchronisation stattgefunden hat, indem ich einfach auf dem jeweils anderen Gerät dieses "Logfile" prüfe. 

Meine erste Frage, die aber noch einfach ist: Wie kann ich Änderungstrigger verwenden? Aber in den Tabellen gibt es diese Stellen ja "Bei Änderung folgendes ausführen." Ich denke, dort gehört das hin. Vermutlich dann in alle Tabellen.

Das beste wäre, es gäbe eine Möglichkeit: "Beim Schließen der Datenbank", aber das wäre auch wieder wenig sinnvoll, wenn man die Datenbank nicht schließt ;-)

Nächste Frage: Wie bekomme ich in eine Tabelle "Syslog" neue Datensätze per Script?

Nächste Frage: Wie bekomme ich über ein Script in ein Textfeld den Systemname, also z. B. iPhone oder MacBook?

6 Antworten

null
    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Zu der letzten Frage:

    ninoxApp()

    gibt den String zurück "Mac","iPhone", "iPad" usw.

    Die neuen Datensätze kannst du mit Trigger "bei neu" in die Log.Tabelle schreiben. 

    Bildschirmfoto 2018-12-30 um 19.17.08

     

    Leo

    • bertschulze
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hey Leo, prima für die ersten Tipps, die mir schon sehr weiterhelfen und schon 80 Prozent auf dem Weg zum Ziel sind.

    Jetzt fehlen mir noch zwei Dinge.

    1. Ich möchte zwei Datenfelder anspringen, daher sieht das jetzt im Moment so aus:

    'letzte Änderung' := now();
    'letzte Änderung von' := ninoxApp()

    Problem: Diese Felder gibt es nur in der Tabelle "Syslog" und ich möchte dieses Script ja in allen Tabellen beim jeweiligen Trigger unterbringen. Also egal, in welcher Tabelle ich eine Änderung vornehme, sollen in der Tabelle "Syslog" die beiden Datenfelder gefüllt werden. Also muss ja im Script der Name der Tabell mit untergebracht werden. Aber wie? Ich habe es schon so versucht, aber vergeblich:

    Syslog.'letzte Änderung' := now();
    Syslog.'letzte Änderung von' := ninoxApp()

    2. Ich möchte in dieser Tabelle Syslog immer einen neuen Datensatz erstellen, um die Historie verfolgen zu können. Geht das auch irgendwie?

     

    Und noch eine Frage am Ende. Kann man auch Abfragen, an welcher Stelle die letzte Änderung durchgeführt wurde? Ich glaube, das wird nicht gehen.

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Bert,

    die Formel sollte etwa so aussehen:

    ---

    let my:=this;

    let new:=create Syslog;

    new.'letzte Änderung':=now();

    new.'letzte Änderung von' := ninoxApp();

    new.Tabellenname:="Tabellenname";

    new.'Record Id':=my.number(Nr)

    ---

    Wenn du die geänderten Felder wissen möchtest, solltest du bei jedem Feld nach änderung diesen Skript schreiben

     

    Leo

    • bertschulze
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    wow, so klappt es super. Tausend Dank. Läuft wie geschmiert.

    Schönen Abend noch.

    Bert

    • bernd
    • vor 5 Jahren
    • Gemeldet - anzeigen

    ich hatte auch mit der iCloud angefangen und hatte auch Probleme mit der Syncronisation. Inzwischen habe ich auf die Ninox-Cloud gewechselt - läugt so etwas von perfekt - das stellt sich diese Frage überhaupt nicht mehr. Du gibst auf dem MAC Daten ein und die Änderungen werden < 1 Sekunde auf dem iPad angezeigt.

    • bertschulze
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Bernd. Danke für den Hinweis. Aber ich finde 120 Euro jährlich als Privatnutzer für eine zusätzliche Cloud, welche ich ja bereits habe, zu teuer. Hier wäre ein 2,99-EUR-Angebot für Privatuser meine Schmerzgrenze.

Content aside

  • vor 5 JahrenZuletzt aktiv
  • 6Antworten
  • 2666Ansichten