0

Schaltfläche für umfangreiches Update

Ich habe eine Schaltfläche, die den angehängten Code ausführt. Ich mache das (Code mit der Schaltfläche ausführen) für jede Zeile der Tabelle. Ist es möglich, eine einzelne Schaltfläche zu erstellen, die diesen Code für jede einzelne Zeile ausführt? Danke

 

let header := {
        Authorization: "Bearer 65fd963xxxxxxxxxxx6be28",
        Accept: "application/json",
        'API-NUMBER': "qkm7zxxxxxxxxxxxxwobxoh3"
    };
let myURL := "https://risk.openapi.com/IT-richiesta/" + 'ID OPENAPI';
let response := do as server
        let response := http("GET", myURL, header, null);
        let resu := formatJSON(response.result);
        let IdCertificato := ID;
        (select 'Certificati' where ID = IdCertificato).('Status richiesta' := text(parseJSON(resu).first(data).status));
        let status := text(parseJSON(resu).first(data).status);

        if text(parseJSON(resu).first(data).soggetto.deceduto) = "true" then
            alert("ATTENZIONE SOGGETTO DECEDUTO!")
        else
            if status = "COMPLETED" then
                (select 'Certificati' where ID = IdCertificato).('Data ricezione' := format(date(year, month, day), "MM/DD/YYYY"));
                (select 'Certificati' where ID = IdCertificato).(Indirizzo := text(parseJSON(resu).first(data).soggetto.residenza.indirizzo));
                (select 'Certificati' where ID = IdCertificato).(CAP := text(parseJSON(resu).first(data).soggetto.residenza.cap));
                (select 'Certificati' where ID = IdCertificato).('Località' := text(parseJSON(resu).first(data).soggetto.residenza.comune));
                (select 'Certificati' where ID = IdCertificato).('Prov.' := text(parseJSON(resu).first(data).soggetto.residenza.provincia));
                let datadec := text(parseJSON(resu).first(data).soggetto.decesso_data);
                let onlydate2 := substr(datadec, 0, 10);
                let dateArr2 := split(onlydate2, "-");
                let year2 := number(item(dateArr2, 0));
                let month2 := number(item(dateArr2, 1));
                let day2 := number(item(dateArr2, 2));
                (select 'Certificati' where ID = IdCertificato).(Note := if text(parseJSON(resu).first(data).soggetto.deceduto) = "true" then
                        "ATTENZIONE DECEDUTO IL " + text(format(date(year2, month2, day2), "DD/MM/YYYY"))
                    end);
                if text(parseJSON(resu).first(data).soggetto.deceduto) = "true" then
                    'SchedaC'.('CHIUDI FASCICOLO' := true);
                    if text(parseJSON(resu).first(data).soggetto.deceduto) = "true" then
                        'Scheda Cliente'.('Motivo chiusura fasciolo' := "DECEDUTO")
                    end
                end
            end
        end

2 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 12 Tagen
    • Gemeldet - anzeigen

    Hallo Andrea, ich bin jetzt nicht der API-Experte, aber grundsätzlich kann jeder Code, der sich auf einen Datensatz bezieht, auch für mehrere bzw. alle Datensätze einer Tabelle ausgeführt werden. Angenommen, du hättest einen Button mit folgendem Code, der im aktuellen Datensatz einen Wert in ein Datenfeld schreibt:

    Summe := Menge * Preis

    Dann könnte dieser Code mit einer for-Schleife für alle Datensätze der Tabelle ausgeführt werden:

    for i in select TABELLE do
       i.Summe := i.Menge * i.Preis
    end

    Du müsstest nun in deinem Code nach der Stelle suchen, wo die Schleife beginnen und enden soll. Und wie in obigem Beispiel allen Datensatz-Feldern, die im Script angesprochen werden, den Namen der Variable voranstellen (im Beispiel „i“).

    Ist 'ID OPENAPI' ein Feld im Datensatz? Wahrscheinlich, denn sonst wäre die URL ja immer dieselbe. Dann könnte ein Ansatz(!) folgender sein:

    let header := {
            Authorization: "Bearer 65fd963xxxxxxxxxxx6be28",
            Accept: "application/json",
            'API-NUMBER': "qkm7zxxxxxxxxxxxxwobxoh3"
        };
    do as server
       for i in select DEINETABELLE do
          let myURL := "https://risk.openapi.com/IT-richiesta/" + i.'ID OPENAPI';
          let response := http("GET", myURL, header, null);
          ...

    Aber das ist jetzt wirklich nur eine spontane Idee, damit deine Frage nicht ganz ohne Reaktion bleibt. Immerhin ist das Thema jetzt wieder oben, und vielleicht erbarmt sich einer der API-Cracks, das zu korrigieren oder zu optimieren. 😉

      • Andrea
      • vor 10 Tagen
      • Gemeldet - anzeigen

       

      Danke für die Antwort. Ich habe die „for“-Anweisung ausprobiert, aber das API-Skript wird nicht ausgeführt, es scheint, dass die http-Anfrage nicht startet.

Content aside

  • vor 10 TagenZuletzt aktiv
  • 2Antworten
  • 50Ansichten
  • 2 Folge bereits