Feld auf Änderungen überprüfen
Hallo,
ich stehe auf dem Schlauch bei einer Formel.
Ich habe eine Tabelle, in der eine Untertabelle mit einer Straßenliste ist. Regelmäßig gibt es in dieser Tabelle Änderungen, es kommen Datensätze dazu und werden gelöscht. Ich habe ein Funktionsfeld mit der Formel 'Zuletzt geändert
am'
und ein Datums und Uhrzeitfeld, das mit dem aktuellen Datum und Uhrzeit befüllt wird, sobald ein Button zum ausdrucken der Tour gedrückt wird. (printRecord(this, "1 - Tour");
'Zuletzt gedruckt am_' :=now())
Nun soll mit einer anderen Formel die beiden Felder verglichen werden und dieses mit einer Farbe angezeigt werden.
let myDruck := 'Zuletzt gedruckt am_';
let myAend := 'Zuletzt geändert am';
if myDruck < myAend then
styled("Nein", "Red")
else
if myDruck > myAend then
styled("Ja", "Green")
end
end
Leider funktioniert die Formel nicht, er zeigt immer nur Nein!
Hat da jemand einen Tip für mich?
Gruß
Mirko
6 Antworten
-
Hallo Mirko, m. E. kann der Zeitwert von 'Zuletzt gedruckt' nie größer sein als der von 'Zuletzt geändert', weil ja auch das Setzen des Datums beim Drucken von Ninox als Änderung registriert wird.
-
Hallo Copytexter,
selbst wenn ich das mit = oder >= mache, ändert sich da nichts?
Kann das daran liegen, das die Felder nicht vom gleichen Typ sind?
-
Hallo Mirko,
sobald Du ein Feld des Datensätzes (hier 'Zuletzt gedruckt am_') änderst, ändert sich auch das systeminterne 'Zuletzt geändert am'-Feld.
Wie wäre es denn mit einer verknüpften (und versteckten) Protokoll-Tabelle, die Du z.B. bei neuen Datensätzen automatisch mit erstellst:
let my := this;
let myNew := (create Protokoll);
my.Protokoll := myNew
Beim Druck setzt Du das Feld entsprechend:
printRecord(this, "1 - Tour");
Protokoll.'Zuletzt gedruckt am_' :=now()
Dann kannst Du wie folgt abfragen:
let myDruck := Protokoll.'Zuletzt gedruckt am_';
let myAend := 'Zuletzt geändert am';
if myDruck < myAend then
styled("Nein", "Red")
else
styled("Ja", "Green")
end
lg, Torsten
-
Hi, im Grunde geht es ja nur um ein paar Millisekunden, die der Zeitstempel der letzten Änderung dem des letzten Druckens immer voraus ist. Deshalb könnte man sich vielleicht auch mit einem kleinen Trick behelfen und den Zeitstempel zum Drucken einfach um eine Minute erhöhen:
'Zuletzt gedruckt am_' := now() + time(0, 1)
Dann würde das Berechnungsfeld auf Grün schalten, sobald der Button "Drucken" geklickt wird, und erst wieder auf Rot, wenn irgendeine andere Änderung am Datensatz vorgenommen wird.
if 'Zuletzt gedruckt am_' < 'Zuletzt geändert am' then
styled("Nein", "Red")
else
styled("Ja", "Green")
end
-
^^ auch eine (gute) Idee - damit geht aber ggfls. der Zeitstempel der letzten "realen" Änderung verloren...
-
Hallo Copytexter,
super Idee mit der Zeit, ich habe es jetzt so gelöst:
'Zuletzt gedruckt am_' := now() + time(0, 0, 1)
Ich schlage einfach nur eine Sekunde drauf, so passt das auch!
Danke für die Hilfe!
Gruß Mirko
Content aside
- vor 4 JahrenZuletzt aktiv
- 6Antworten
- 648Ansichten