JSON Array aus Untertabelle erstellen
Servus zusammen,
ich habe eine Tabelle 'Order' mit einer Untertabelle 'Warenausgang'. Die Untertabelle ist wiederum verknüpft mit meiner Tabelle Produkte.
Ich möchte per Button ein JSON Array erzeugen, welches mir Artikelnummern und Mengen zurückgibt. Es soll diese Form haben:
["Position":[{"Partnumber":"bp-j-blahpendant-gold-os","Quantity":1}, {"Partnumber":"bp-j-blahpendant-silver-os","Quantity":1}, und so weiter...]]
Mit meiner Funktion bekomme ich aber ein falsches Array zurück:
[{"Position":[{"Partnumber":["bp-c-feliciashirt-black-sm","bp-c-feliciashirt-black-ml","bp-c-feliciashirt-khaki-sm","bp-c-feliciashirt-khaki-ml","bp-c-feliciaflares-black-sm","bp-c-feliciaflares-black-ml","bp-c-feliciaflares-khaki-sm","bp-c-feliciaflares-khaki-ml","bp-c-filippaflares-black-s","bp-c-filippaflares-black-m","bp-c-filippaflares-black-l","bp-c-taylortop-black-sm","bp-c-taylortop-black-ml"],"Quantity":[4,3,4,3,3,3,3,3,3,3,2,6,6]}]}]
Meine Funktion sieht bis dato so aus:
let myResult := [{
Position: [{
Partnumber: Warenausgang.Produkte.Artikelnummer,
Quantity: Warenausgang.Menge
}]
}];
Text := text(myResult)
Wie bekomme ich denn hier die korrekte Formatierung hin?
Vorab vielen Dank.
VG, Andi
11 Antworten
-
Ich würde es so probieren:
let vArray := [];
let vArrayObj := [];
let vObj := {};
for i in Warenausgang do
vObj := {
Partnumber: i.Warenausgang.Produkte.Artikelnummer,
Quantity: i.Warenausgang.Menge
};
vArrayObj := [vObj];
vArray := array(vArray, vArrayObj)
end;
"// HTTP-Call definieren //";
let vBody := [{
Position: vArray
}];
Text := text(vBody) -
Hi Uwe,
Danke für deine Antwort.
Klappt leider noch nicht so ganz. Ich habe mal den HTTP Call raus gelassen. Will mich zuerst mal auf das Array konzentrieren.
let vArray := [];
let vArrayObj := [];
let vObj := {};
for i in Warenausgang do
vObj := {
Partnumber: Warenausgang.Produkte.Artikelnummer,
Quantity: Warenausgang.Menge
}
end;
vArrayObj := [vObj];
vArray := array(vArray, vArrayObj);
alert(text(vArray))Liefert leider so kein Ergibnis zurück. Alertbox also leer. Wichtig vielleicht noch. In dem Array sollen natürlich immer nur die Artikelnummern und Quantities der mit diesem Datensatz verknüpften Datensätze im Warenausgang sein.
VG, Andi
-
Hallo Andi
Streiche mal die Zeile "//HTTP-CALL definieren//"
Habe vergessen die Kommentierzeile zu löschen.
Du solltest trotzdem
let vBody := [{
Position: vArray
}];
Text := text(vBody)
drin lassen und es nochmal probieren.
Bei mir bekomme ich dann folgendes raus:
[{"Position":[{"Partnumber":"Toyota","Quantity":1},{"Partnumber":"Mercedes","Quantity":3},{"Partnumber":"VW","Quantity":4}]}]
-
Sorry, Korrektur:
let vArray := [];
let vArrayObj := [];
let vObj := {};
for i in Warengruppe do
vObj := {
Partnumber: i.Produkte.Artikelnummer,
Quantity: i.Menge
};
vArrayObj := [vObj];
vArray := array(vArray, vArrayObj)
end;
let vBody := [{
Position: vArray
}];
Body := text(vBody) -
Body ist Name des Textfeldes in das das Ergebnis geschrieben wird
-
...nur mal einen Einwurf. Soweit ich weiß, geht das deklarieren eines leeren Arrays so nicht. Keine Fehlmeldung, aber man kann es nicht benutzen, ergo auch nicht füllen. Workaround ist erst zur Typdeklaration eine Dummyfüllung, dann leeren.
let vArray := ["a"];
vArray := []
-
Doch das funktioniert. Keine Fehlermeldung und ich erhalte ein Ergebnis wie oben beschrieben.
Hier der Link zur Testdatenbank: https://www.dropbox.com/s/zctvfw62bcqh6cz/test.ninox?dl=0
-
Nutze dieses Konstrukt um Tabellen oder verschachtelte Tabellen an Carbone als Druckeditor/Dateikonvertierer zu übertragen.
Siehe Ninox DB 343 im deutschen WebinarTeam -
@UweG. Sehr merkwürdig. Ich wollte auch nicht Dein Konstrukt anzweifeln, habe jetzt es ausprobiert, aber bei mir klappt das mit den Arrays sonst nicht. Muß ich wohl noch ein wenig nachdenken;-). Danke für die Rückmeldung.
let a := [];
let b := [1, 2, 3];
array(a, b)
—> kein Ergebnis
let a := [4];
a := [];
let b := [1, 2, 3];
array(a, b)
—> Ergebnis 1,2,3
-
Bi mir klappt es auch. Keine Fehlermeldungen und das Ergbenis genauso wie es sein soll.
@UweG. vielen Dank.
VG, Andi
-
Hallo MZ
In deinen Beispielen hast du Recht, was die Anzeige des Arrayinhaltes betrifft und ich habe das gleiche Ergebnis wie du.
Aber das Array im ersten Beispiel ist nicht leer.
Wenn du es in cnt(array(a,b)) änderst, siehst du das das Array 3 elemente enthält.
Mit item(array(a,b),0) bekommt man auch 1 als erstes Element des Array's.
Weshalb man mit concat() keine Anzeige aller Element erhält kann ich nicht sagen.
Was aber funktioniert ist: formatJSON(array(a,b))
Wieder ein Mysterium von Ninox. ;-)
Content aside
- vor 3 JahrenZuletzt aktiv
- 11Antworten
- 604Ansichten
-
1
Folge bereits