Schwache Performance in for-Schleife
Hallo zusammen,
ich bin leicht am verzweifeln. Meine Datenbank umfasst nicht allzu viele Datensätze (109) und für meine for-Schleife braucht Ninox extrem lange. Bei Access war VBA deutlich schneller und ich kann mir nicht die Unterschiede zwischen den Skriptsprachen erklären...
Im Grunde importiere ich immer wieder eine csv-Datei mit aktuellen Bestellungen. Bevor die Bestellungen in die dazugehörige Tabelle importiert werden, soll vorher überprüft werden, ob diese schon zuvor irgendwann importiert wurde (um Dopplungen zu vermeiden). Ich vermute, dass sich hier Ninox schwer tut mit meinen 2 Select-Abfragen in der Loop-Schleife. Habt ihr eine bessere Idee?
Danke im Voraus. Viele Grüße
do as server
var counter := 0;
for etsy_order in select Etsy_Order_Import do
let date := etsy_order.Datum;
let orderID := etsy_order.'Receipt ID';
let articleCount := etsy_order.'Artikel Anzahl';
let orderValue := etsy_order.Bestellwert;
let orderExist := cnt((select Bestellungen)['Order Nr' = orderID]);
etsy_order.(Importiert := 0);
if orderExist = 0 then
let customer := first((select Etsy_Kunden_Import)['Receipt ID' = orderID]).'E-Mail';
let newOrder := (create Bestellungen);
newOrder.(Datum := date);
newOrder.('Order Nr' := orderID);
newOrder.('Artikel Anzahl' := articleCount);
newOrder.(Bestellwert := orderValue);
newOrder.Vertriebskanal.(Nr := 5);
newOrder.Kunden.('E-Mail' := customer);
counter := counter + 1;
etsy_order.(Importiert := 1)
end
end;
if counter > 0 then
dialog("Etsy Bestellungen Import", "Der Import wurde abgeschlossen. Es wurden " + counter + " Bestellungen importiert.", ["OK"])
else
dialog("Etsy Bestellungen Import", "Alle Bestellungen sind bereits angelegt. Daher wurde keine Bestellung importiert.", ["OK"])
end
end
3 Antworten
-
Hallo Pascal,
mein Vorschlag währe es, die Datensätze in der Tabelle Etsy_Order_Import vor der Schleife einzugrenzen. Ich habe festgestellt, dass Ninox wahnsinng schnell mit den Texten arbeitet. Angenommen deine Bestellnummer ist eine eindeutige Zahl ala 2000371 (20 für Jahr und dann eine Zahl mit fünf Nullen). Dann würde ich es so versuchen:
---
let myText:=concat(select Bestellungen,'Order Nr');
for etsy_order in select Etsy_Order_Import [contains(myText,'Receipt ID'] do
.......
.......
.......---
Leo
-
Hi Leo
danke dir für den Hinweis! Mit deinem Vorschlag wandel ich dann quasi meine Order Nummern in reinen Text um? Eigentlich sind die Bestellnummern alle bereits als Text abgelegt, da ich mehrere Online Shop Systeme zusammenführe und es mir einfach machen wollte. Ich probiere das (trotzdem) später aus und melde mich :)
LG Pascal
-
Hallo zusammen,
aus der Not heraus habe ich mir heute das Web-Abo geholt. Meine Datenbank hatte ich also kurzerhand hochgeladen und die selbe Funktion gestartet. Die Bestellungen waren super schnell importiert. Das war also klasse!
Nur die Frage ist: Warum ist die Mac und iPad App so viel langsamer als die Web App?
Viele Grüße
Pascal
Content aside
- vor 4 JahrenZuletzt aktiv
- 3Antworten
- 583Ansichten