today() != today()
In einem kleinem Vokabeltrainer habe ich eine "Hilfstabelle" History, in der ich den Zeitpunkt (dateTime) des letzten Trainings mit einem Datensatzes parallel zum gleichen Datenfeld wie in der "Haupttabelle" speichere. Mithilfe der Einträge in der Tabelle History kann ich bei Bedarf noch einmal zwischen bereits trainierten Datensätzen der Haupttabelle hin- und hernavigieren. Allerdings reicht mir diese Funktion für den aktuellen Tag. Alle History-Einträge älteren Datums möchte ich bei der ersten Benutzung der Datenbank an einem neuen Tag löschen. Das klappt auch mit dieser Funktion wie erwartet:
delete select History where date(myLastDateTime) < today()
Allerdings funktioniert das nur, wenn die Datenbank am Tag der Nutzung neu gestartet wurde. Sofern ich die Datenbank (Public Cloud, iPhone), abends nicht schließe und am nächsten Tag in der geöffneten Datenbank weiterarbeite, wird der Code nicht ausgeführt - so als würde "today()" weiter das Datum liefern, an dem die Datenbank geöffnet wurde. Allerdings liefert:
alert(today())
auch in einer schon am Vortag geöffneten Datenbank das richtige, das aktuelle Tagesdatum.
Hat jemand eine Erklärung - und eine Idee, wie ich den Code umschreiben könnte?
6 Antworten
-
Hallo Olaf, die Funktion today() gibt immer das gerade aktuelle Datum zurück. Aber nur, wenn die Funktion auch ausgeführt, also durch einen Button, Trigger oder in einem Formelfeld ausgelöst wird.
Ich nehme an, dass du den Code zum Löschen der History als „Trigger nach Öffnen“ in den Datenbank-Optionen ausführen lässt. Und dann wird er eben auch nur beim Öffnen der Datenbank ausgeführt, mit den zu diesem Zeitpunkt gültigen Datums-Werten.
Als einfachste Lösung könntest du bspw. irgendwo einen Button platzieren, mit dem du das „delete“ bei Bedarf manuell anstoßen kannst, um das Schließen und neuerliche Öffnen der DB zu vermeiden.
Content aside
- vor 6 MonatenZuletzt aktiv
- 6Antworten
- 89Ansichten
-
3
Folge bereits