RangeError: Maximum call stack size exceeded.
Hallo zusammen,
ich importiere per csv meine Shop-Bestellungen in ninox. Die temporärere Tabelle wird dann per Skript in die eigentlichen Tabellen (Kunde und Bestellungen) weiter verarbeitet. Der unten stehende Code soll die Kunden aus den Bestellungen filtern und nachschauen, ob der Kunde (anhand der E-Mail) bereits angelegt wurde. Ist dem so, dann soll das Skript den Kunden nicht anlegen. Ansonsten wird der Kunde angelegt.
Leider renne ich jedes Mal bei einer Tabellengröße von knapp 250 Kunden in ein "RangeError: Maximum call stack size exceeded."
Der Fehler löst sich auf, wenn ich nicht mehr den Ort, das Bundesland und das Land speicher.
Habt ihr eine Idee?
var counter := 0;
for wc_customer in (select WooCommerce_Import) do
let email := wc_customer.'E-Mail'
if email != void then
let kunde_exist := first(select Kunden where 'E-Mail' = wc_customer.'E-Mail').Nr;
wc_customer.(Importiert := 0);
if kunde_exist = void then
let kunde := (create Kunden);
let land_crm := first((select Laender)[Kurzname = wc_customer.Land]).Nr;
kunde.(Geschlecht := 0);
kunde.(Vorname := wc_customer.Vorname);
kunde.(Nachname := wc_customer.Nachname);
kunde.('E-Mail' := email);
kunde.(Zusatz := wc_customer.Zusatz);
kunde.(Strasse := wc_customer.Strasse);
kunde.(PLZ := wc_customer.PLZ);
kunde.(Ort := wc_customer.Ort);
kunde.(Bundesland := wc_customer.Bundesland);
kunde.(Land := land_crm);
counter := counter + 1;
wc_customer.(Importiert := 1)
end
end
end;
if counter > 0 then
dialog("Shop Import", "Der Import wurde abgeschlossen. Es wurden " + counter + " Kunden importiert.", ["OK"])
else
dialog("Shop Import", "Alle Kunden sind bereits angelegt. Daher wurde kein Kunde importiert.", ["OK"])
end
Danke im Voraus
Viele Grüße
Pascal
4 Antworten
-
Hallo Pascal,
versuche es bitte so:
---
let myWCI:=select WooCommerce_Import;
myWCI.(Importiert:=false);
for i in myWCI['E-Mail'] do
if cnt(select Kunden where 'E-Mail' = i.'E-Mail')=0 then
let newC := (create Kunden);
newC.(Land:=first(select Laender[Kurzname = i.Land]);
Geschlecht := 0;
Vorname := i.Vorname;
Nachname := i.Nachname;
'E-Mail' := i.'E-Mail';
Zusatz := i.Zusatz;
Strasse := i.Strasse;
PLZ := i.PLZ;
Ort := i.Ort;
Bundesland := i.Bundesland);
i.(Importiert := true)
else
i.(Importiert := false)
end
end;
let counter:=cnt(myWCI[Importiert]);
if counter>0 then
dialog("Shop Import", "Der Import wurde abgeschlossen. Es wurden " + counter + " Kunden importiert.", ["OK"])
else
dialog("Shop Import", "Alle Kunden sind bereits angelegt. Daher wurde kein Kunde importiert.", ["OK"])
end
---
Leo
-
Hallo Leo,
danke die Hilfe! Wenn ich die folgenden Zeilen ohne
newC.
schreibe, bekomme ich eine Fehlermeldung:Geschlecht := 0;
Vorname := i.Vorname;
Nachname := i.Nachname;
'E-Mail' := i.'E-Mail';Kann das sein?
Grüße
Pascal -
Hallo Pascal,
eigentlich wenn es eingeklammert ist
newC.(Feld1:=Value1;
Feld2:=Value2
...
FeldX:=ValueX)
sollte es gehen. Du kannst natürlich auch ausschreiben.
Leo
-
Hallo Leo,
ah, die Klammer hatte ich übersehen! Danke für den Hinweis :-) Probiere ich gleich einmal aus.
Beste Grüße
Pascal
Content aside
- vor 4 JahrenZuletzt aktiv
- 4Antworten
- 558Ansichten