0

Nur verknüpfte Datensätze ansprechen

Hallo, ich habe mir mit wenig Ahnung und viel Mühe ein Script geschrieben, dass für Elemente einer verknüpften Untertabelle API-Anfragen schickt und die Daten verarbeitet. Er funktioniert auch generell tadellos, nur ist mir beim Befüllen der Datenbank nun aufgefallen, dass nicht nur die mit mit dem aktuell geöffneten Datensatz verbundenen Daten abgefragt werden, sondern alle Datensätze der Untertabelle. Wenn ich andere Forumsbeiträge richtig verstehe, liegt das vermutlich an der unnötigen (?) Verwendung von select. Aber wenn ich das weglasse, habe ich keine Ahnung, wie ich zb das hier lösen soll

let anfrageListe := (select Produktvariationen where 'API-Abfrage' = true).'Variations ID';

Hier ist der gesamte Code, vielleicht kann mir ja jemand auf die Sprünge helfen :) Ich danke euch!

let titel := "API-Abfrage starten";
let nachricht := "Es wurden " + count(select Produktvariationen where 'API-Abfrage' = true) +
    " Produktvarianten mit jeweils " +
    cnt(Produktvariationen.'Variations ID') /
    count(select Produktvariationen where 'API-Abfrage' = true) +
    " verschiedenen Auflagen gefunden. Soll eine Datenabfrage für diese Produktvarianten gestartet werden? ";
let antwortOptionen := ["Ja", "Nein"];
let auswahl := dialog(titel, nachricht, antwortOptionen);
if auswahl = "Ja" then
    let gesamtErfolgreich := 0;
    let anfrageListe := (select Produktvariationen where 'API-Abfrage' = true).'Variations ID';
    let produktvariationenListe := (select Produktvariationen);
    for spezifischeId in anfrageListe do
        let response := do as server
                http("GET", "https://XXX.com/de/v1/XXX/XXX/" +
                spezifischeId, {
                    Authorization: "Bearer " + 'API-Token'
                }, null)
            end;
        if response.error then
            alert(text(response.error))
        else
            let daten := response.result;
            for produktvariation in produktvariationenListe do
                let idGefunden := false;
                for item in daten.quantities do
                    if item.quantity_id = produktvariation.'Variations ID' then
                        produktvariation.('Einkaufspreis Standard' := item.Standard_price);
                        produktvariation.('Lieferzeit Standard' := item.Standard_to);
                        produktvariation.(Auflage := item.quantity);
                        produktvariation.('Deadline Standard' := item.Standard_deadline);
                        gesamtErfolgreich := gesamtErfolgreich + 4;
                        idGefunden := true;
                        if item.Express_available then
                            produktvariation.('Lieferzeit Express' := item.Express_to);
                            produktvariation.('Einkaufspreis Express' := item.Express_price);
                            produktvariation.('Deadline Express' := item.Express_deadline);
                            gesamtErfolgreich := gesamtErfolgreich + 3
                        end;
                        if item.Overnight_available then
                            produktvariation.('Lieferzeit Overnight' := item.Overnight_to);
                            produktvariation.('Einkaufspreis Overnight' := item.Overnight_price);
                            produktvariation.('Deadline Overnight' := item.Overnight_deadline);
                            gesamtErfolgreich := gesamtErfolgreich + 3
                        end
                    end
                end;
                if idGefunden then
                    for attribute in daten.attributes do
                        if attribute.attribute_name = "Format" then
                            produktvariation.(Format := attribute.attribute_value);
                            gesamtErfolgreich := gesamtErfolgreich + 1
                        end;
                        if attribute.attribute_name = "Material" then
                            produktvariation.(Material := attribute.attribute_value);
                            gesamtErfolgreich := gesamtErfolgreich + 1
                        end;
                        if attribute.attribute_name = "Farbigkeit" then
                            produktvariation.(Farbigkeit := attribute.attribute_value);
                            gesamtErfolgreich := gesamtErfolgreich + 1
                        end;
                        if attribute.attribute_name = "Veredelung" then
                            produktvariation.(Veredelung := attribute.attribute_value);
                            gesamtErfolgreich := gesamtErfolgreich + 1
                        end
                    end
                end
            end
        end
    end;
    if gesamtErfolgreich > 0 then
        alert(gesamtErfolgreich + " Daten erfolgreich übertragen.");
        'Letzte Abfrage' := today()
    else
        alert("Keine Daten übertragen. Bitte überprüfen Sie das API-Token und die Variations IDs.")
    end
else
    alert("Abfrage abgebrochen.")
end

2 Antworten

null
    • Torsten_Stang.1
    • vor 2 Monaten
    • Gemeldet - anzeigen

    verknüpfte Datensätze sprichst Du ohne select an und setzt die Bedingungen in eckige Klammern. Also

    let anfrageListe := Produktvariationen['API-Abfrage' = true)].'Variations ID';
    
      • Paul_J_Herberhold
      • vor 2 Monaten
      • Gemeldet - anzeigen

       Puhhh! Kleine Änderung, große Wirkung. Ich danke dir! Das mit den eckigen Klammern war mir nicht bewusst und ich habe mich dumm und dämlich gesucht. Hab die Zeile geändert und jetzt scheint es zu klappen.

Content aside

  • Status Answered
  • vor 2 MonatenZuletzt aktiv
  • 2Antworten
  • 25Ansichten
  • 2 Folge bereits