0

Trigger - Status nach Ablauf eines Datums automatisiert ändern

Ist es möglich nach Ablauf eines Datums per Trigger automatisiert ein Auswahlfeld/Statusfeld zu ändern? 

13 Antworten

null
    • Torsten_Stang.1
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo,

     

    tatsächlich automatisiert nicht, wohl aber beim Öffnen der Datenbank.

     

    lg, Torsten

    • chris.4
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Da ich die Datenbank fast immer auf habe keine wirkliche Option. Bleibt dann wahrscheinlich nur ein Befehlsfeld welches ich als Trigger nutze. Schade.

    • Torsten_Stang.1
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hm, das Befehlsfeld in einem Dashboard könnte man ja nur anzeigen, wenn es relevant wäre...

    • Team Lead Customer Service
    • joerg
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Chris, 

    was du meinst ist eine Funktion, die sich "Job" nennt und auf Daten oder Zeiträume reagiert. Diese ist bereits in Arbeit und wird einer unserer kommenden Versionen veröffentlicht. ;)

    Beste Grüße, Jörg

    • chris.4
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Ok,super. Gibt es eigentlich feste Release Zyklen für Ninox?

    • AlinaRon
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Wie lautet denn der Skript, wenn ich die Datenbank öffne? Ich habe die Statusoptionen in einem Auswahlfeld. Dann habe ich wie chris ein Ablaufdatumsfeld. Wenn dieses Datum erreicht ist soll der Status auf Abgelaufen springen. 

    • Support
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Chris, 

    einen festgelegten Zyklus in dem Sinne gibt es nicht, aber der Zeitraum bis zum nächsten Release umfasst immer nur wenige Monate.

    Gruß, Jörg

    • Support
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hi Administrator, 

    die Formel könnte so aussehen (wenn 3 der Index des "Abgelaufen"-Wertes ist: 

     

    if Ablaufdatumsfeld < today() then Statusfeld := 3 end

    Gruß, Jörg

    • AlinaRon
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Wenn ich dies bei "Nach öffnen der Datenbank" eingebe sagt er, dass er die Tabellenspalte "Ablaufdatum" nicht gefunden hat. Und wenn ich den Tabellenamen davor setzte also "Materialstatus.Ablaufdatum" nimmt er das nicht 

     

    lg

    • Support
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Administrator, 

    sorry, da hab ich wohl zu schnell getippt... in dieser Option "Nach dem Öffnen der Datenbank folgendes Skript ausführen" muss die Formel so aussehen: 

     

    for i in (select Materialstatus)[Ablaufdatum < today()] do
    i.(Statusfeld := "Abgelaufen")
    end;

    Da du ja die ganze Tabelle durchsuchen willst, musst du das mit Hilfe einer Schleife machen.

    Prinzipiell lassen sich Tabellen in dieser Option nur durch ein select ansprechen.

    Gruß, Jörg

    • Alexander_Hanisch
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Da gibt es eigentlich eine pragmatische Lösung:

    Du erstellst in der Tabelle (bei dir Materialstatus) eine Funktionsfeld mit folgendem Inhalt:

    If Ablaufdaum < today() then

    "abgelaufen"

    else

    "aktuell"

    end;

    Damit hast du dann für jeden Datensatz immer den aktuellen Status, kannst dieses Feld dann auch weiter verwenden (z.B. Gruppieren oder Filtern)

    Wenn du das Ganze dann farbig und ggf. mit einem entprechenden Icon versehen darstellen willst, wird es etwas komplizierter aber ist auch machbar :)

     

    Gruß,

    Alex

    • Alexander_Hanisch
    • vor 5 Jahren
    • Gemeldet - anzeigen

    OK, hab deinen Post nochmal gelesen - sorry - kann dir aber für deine initiale Frage auch eine Lösung anbieten.

    Wenn dein entsprechendes Auswahfeld <Status> wie folgt lautet:

    <Status>

    (1) aktuell

    (2) abgelaufen

    Du nimmst auch wieder ein Funktionsfeld (wie oben beschrieben) wo du dir für jeden Datensatz den Status  wie folgt berechnen läßt:

    if Ablaufdatum < today then 2 else 1 end;

    Das Feld benennst du dann zB <Funktion_Status>

    Nun kannst du per Skript den Wert dieses Funktionsfeldes deinem Auswahlfeld zuweisen. Das kannst du dann in das globale Skript beim Öffnen der Datenbank packen:

    for Materialstatus in select <Materialtabelle> do
    Materialstatus.(Status := Funktion_Status);
    end;

    Hoffe, das hilft dir jetzt weiter.

    Gruß,

    Alex

    • AlinaRon
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo, so wie der Suppot das geschrieben hat funktioniert das super, vielen dank!

Content aside

  • vor 5 JahrenZuletzt aktiv
  • 13Antworten
  • 3877Ansichten