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
-
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';
Content aside
- Status Answered
- vor 11 MonatenZuletzt aktiv
- 2Antworten
- 30Ansichten
-
2
Folge bereits