0

for-Schleife und "Trigger bei Änderung"

Hallo Leute! Ich stehe gerade vor einem Phänomen.... ich habe einen "Trigger bei Änderung" hinterlegt in einer Ja/Nein-Auswahl. 

Nun ändere ich mit einer for-Schleife Einträge in der Tabelle. Leider zieht der Trgger bei Änderung dabei nicht! Ist das bekannt, dass der Trigger nicht funktioniert, wenn ich einen Datensatz aus einer for-Schleife erstelle und ändere?

ein Codebeispiel zum Verständnis:

for eintrag in Tabelle do

let new:=create Datensatz

new.Name:=eintrag.Name

new.Ja/Nein:=true 

auf Ja/Nein liegt ein Trigger bei Änderung. Der geht aber bei der Vorehensweise nicht an!

Danke für Eure Hilfe!

4 Antworten

null
    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Was soll denn der Trigger im Ja/Nein-Feld machen?
    Ich habe das Scenario mal nachgestellt mit for i in range(0,3,1)
    Der Trigger im Ja/Nein_Feld soll nach Änderung etwas in ein Textfeld schreiben.
    Das funktioniert mit dem create durch den Button ausgelöst, einwandfrei.

    • IT and Webdesign by Tony Liebetrau
    • Tony_Liebetrau.1
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hi Uwe, Danke für deine Antwort. Genau das habe ich auch probiert. Über einen Button funktioniert das Scenario bei mir auch, nur ohne den create-Befehl. Anscheinend liegt es daran, dass wenn in einer create-Anweisenung eine Zuweisung für Ja/Nein gemahct wird, das keine Änderung ist. Ist gerade so meine Vermutung....

    Die Funktion im Trigger ist ein JSON POST an einen Integromat webhook und der wird nicht ausgeführt. Manuell funktioniert er aber.

    • Leonid_Semik
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Tony,
    ja das ist bekannt und sogar gewollt. Die Trigger nach Änderung bei felder funktionieren nicht wen die Änderungen durch andere Trigger ausgelöst sind. Damit möchte man die Endlossschleifen vermeiden. Die Abhilfe kann eine globale Funktion mit der verknüpfung an den Datensatz:

    die globale Funktion:
    ---

    function webhook (me:Datensatz)
    let myURL:="https://integromatwebhook";
    let myHeaders:={.....};
    let myBody:={name:me.Name}
    let respose:=do as server
    http("POST",myURL,myHeaders,myBody)
    end;
    response.result
    end

    ---
    und die Schleife dann:
    ---

    for eintrag in Tabelle do
    let new:=create Datensatz
    new.Name:=eintrag.Name
    webhook (new)

    ---

    Je nach Situaion kann das aber auch problematisch werden weil der Datensatz, der gerade in der Schleife erstellt ist, nicht unbedingt sofor mit dem Server synchronisiert ist. Sicherheitshalber kann man alle Parameter für Webhook direkt in die globale Funktion einbauen.

    ---

    function webhook (me:Datensatz, myName:text)
    let myURL:="https://integromatwebhook";
    let myHeaders:={.....};
    let myBody:={name:myName}
    let respose:=do as server
    http("POST",myURL,myHeaders,myBody)
    end;
    response.result
    end

    ---

    und die Schleife:

    ---

    for eintrag in Tabelle do
    let new:=create Datensatz
    new.Name:=eintrag.Name
    webhook (new, eintrag.Name)

    ---

     

    Leo

    • IT and Webdesign by Tony Liebetrau
    • Tony_Liebetrau.1
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hi Leo, wow, Danke für deine super Antwort.

    Genau so habe ich es umgesetzt und es funktioniert. Vielen Dank!

Content aside

  • vor 2 JahrenZuletzt aktiv
  • 4Antworten
  • 212Ansichten
  • 1 Folge bereits