0

Script Trigger Änderung in Terminfeldern

Ich stelle gerade fest, dass das Script beim Trigger "nach Änderung folgendes Script ausführen" bei Terminfeldern nicht ausgeführt wird. Weder das Script hinter dem Terminfeld als auch das Script bei Änderung des ganzen Datensatzes. Wenn im Terminfeld ein neues Datum eingegeben wird und das Feld verlassen mit TAB oder ENTER, dann wird das Script nicht ausgeführt.

9 Antworten

null
    • Dirk_Pulver_2020
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Oder folgende Korrektur: Das Script wird wohl ausgeführt aber eine Select-Abfrage auf eine verknüpfte Tabelle, welche in diesem Script enthalten ist funktioniert nicht. Diese Abfrage vergleicht mit dem aktuellen Termin. Offensichtlich wird das Terminfeld erst dann korrekt gesetzt wenn sich der Datensatz an anderer Stelle ändert.

    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Hallo Dirk,

    Die Verknüpften Tabellen werden ohne select angesprochen. Was genau möchtest du in der verknüpften Tabelle erreichen?

    • Dirk_Pulver_2020
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Ich habe in einer Tabelle A dieses Terminfeld. Nachdem es eingegeben bzw. geändert wird, möchte ich das Datum mit Einträgen in einer Tabelle B (Betriebskalender, enthält einzelne Tage als Datum = Feiertage) abgleichen, ob das Datum darin vorkommt. Per scrippt wollte ich, dass wenn sich das Feld ändert dann per Select-Abfrage im Tabelle B nach dem Datum gesucht wird. Ich habe beobachtet, wenn ich einen bereit eingegebenen Termin ändere und dann das Feld verlasse, dass hier das Script war läuft aber die Select-Abfrage offensichtlich nicht den aktuell eingegebenen Termin vergleicht, sondern den zuvor enthaltenen Eintrag. Erst wenn ich ein anderes Feld ändere und dann das Script wieder läuft wird das aktuell enthaltene Datum verwendet. Es scheint, dass nach Änderung des Terminfeldes und verlassen der neue Wert zwar optisch zu sehen ist aber noch nicht ins Feld geschrieben...

    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Ohne Datenmodel kann ich nicht sagen, wo dein Fehler liegt. Hier ein Beispiel mit zwei Tabellen. Wenn man in Tabelle A ein Terminfeld geändert wird und Anfangsdatum mit einem Datum aus der Tabelle B übereinstimmt, wird in das Textfeld Tabelle A das Datum und Text von dem betroffenen Datensatz der Tabelle B geschrieben. Funktioniert ohne Probleme.

    https://www.dropbox.com/s/qc4ig7v9xmpa948/DIRK.ninox?dl=0

    Leo

    • Dirk_Pulver_2020
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Ok, ja - damit geht es - hab's hingekriegt. Jetzt möchte ich aber noch einen Schritt weiter. Es wird mit diesem Script letztendlich ein Farbfeld gesetzt, welches je nachdem ob es ein Feiertag ist eine Farbe erhält. Das Farbfeld hat auch andere Status je nach Bedingung. Liegt der Termin in der Vergangenheit, soll es "purple" werden. Funktioniert auch genau so - nur nimmt das Farbfeld jetzt natürlich die Farbe nur dann an, wenn sich das Datum ändert. Wenn ich einen Datensatz aufrufe ohne ihn zu ändern und das Datum liegt bereits in der Vergangenheit, wird das Farbfeld natürlich nicht korrekt gesetzt, da das Script ja erst bei Änderung läuft.

    Nun habe ich ein Formelfeld erzeugt, auf das ich mit dem Farbfeld dann referenzieren möchte. Formelfelder sind ja immer aktuell. In meinem Versuch bekomme ich aber mit der gleichen Select-Anweisung wie oben in dem Formelfeld einen Fehler.... kann man in eine Formelfeld keine Select-Anweisung starten ?

    farbe

    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen

    1. Wenn du schon in der Anfrage für Betriebskalender drin bist, kannst du nur die Felder aus Betriebskalender ansprechen. Da das Terminfeld in der aktuellen Tabelle liegt, findet Ninox nichts, daher die Fehlermeldung.

    2. Ich verstehe die erste Zeile nicht. Was bedeutet am Ende "Feiertag=1"? Wenn "Feiertag"  ein "Ja/Nein" Feld ist und du möchtest den FTag als (1/0) Flag ausgeben, dann würde ich die Formel für FTag so schreiben:

    ---

    let myApp:=date(start(Termin);

    let FTag:=cnt(select Betriebskalender[Datum=myApp and Feiertag=true])

    ---

    3. Ich weis nicht, was "Tage" und "vergangen" bei dir bedeuten, deswegen kann ich die Formel nicht beurteilen, aber um ein Berechnungsfeld farblich zu markieren, musst du "styled(Text,Background,Textcolour)" anwenden. D.h. statt "white" styled("","white")

    Leo

    • Dirk_Pulver_2020
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Ok, jetzt funzt das tatsächlich - danke nochmal. Aber warum hat jetzt mein Feld immer dieses Haken-Symbol vorangestellt ??Hakenfeld

    • Dirk_Pulver_2020
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Code

    • Dirk_Pulver_2020
    • vor 6 Jahren
    • Gemeldet - anzeigen

    So - hab's gelöst - mit Recherche hier im Forum und viel try and error ;-)

Content aside

  • vor 6 JahrenZuletzt aktiv
  • 9Antworten
  • 4092Ansichten