In Diskussion Syntax für For-Schleife? For-Schleife im Workflow gibt Syntaxfehler aus ...

OliausderSchweiz

Aktives Mitglied
3. März 2013
34
0
In einem Workflow möchte ich eine For-Schleife über Array-Werte ausführen ... da sieht wie folgt aus:

{% assign KIDs = '1,2,5,6' | Split: ',' -%}
{% for KID in KIDs -%}
{% capture sqlquery -%}
SQLQUERY ...
{% endcapture -%}
{% assign Value{{$KID}} = sqlquery | DirectQueryScalar -%}
{% endfor -%}

Beim Ausführen erhalte ich dann die Fehlermeldung "Syntax Error in 'assign'tag - Valid syntax: assign [var] = [source]"
Was mache ich falsch? Der Assign-Tag sieht doch genauso aus wie er soll, oder?

Vielen Dank an die Cracks die mir da helfen können!
 

John

Sehr aktives Mitglied
3. März 2012
3.965
976
Berlin
Zerleg das mal alles in einzelne Schritte. DotLquid mag keine zwei Operationen auf einmal, also String zuweisen und direkt splitten...
 

OliausderSchweiz

Aktives Mitglied
3. März 2013
34
0
Zerleg das mal alles in einzelne Schritte. DotLquid mag keine zwei Operationen auf einmal, also String zuweisen und direkt splitten...
Wie meinst Du das?
Die Syntax "{% assign KIDs = '1,2,5,6' | Split: ',' -%}" habe ich hier in einem thread im Forum gefunden und sollte gemäss dort funzen ...
Ich brauch ja einfach einen arry mit den Werten 1,2,5 und 6 ... gibts andere Varianten?
 

John

Sehr aktives Mitglied
3. März 2012
3.965
976
Berlin
Also so was funktioniert z.B.

Code:
{% assign KIDs = '7,8,9,10' | Split: ',' -%}
{% for KID in KIDs -%}
{% capture itemquery %}SELECT cName FROM vStandardArtikel WHERE kArtikel = {{ KID }}{% endcapture -%}\
{% assign result = itemquery | DirectQueryScalar -%}\
{{ result }}
{% endfor -%}
 
  • Gefällt mir
Reaktionen: OliausderSchweiz

frankell

Sehr aktives Mitglied
9. September 2019
2.551
776
Flensburg
Wie meinst Du das?
Die Syntax "{% assign KIDs = '1,2,5,6' | Split: ',' -%}" habe ich hier in einem thread im Forum gefunden und sollte gemäss dort funzen ...
Ich brauch ja einfach einen arry mit den Werten 1,2,5 und 6 ... gibts andere Varianten?
Die Zeile {% assign Value{{$KID}} = sqlquery | DirectQueryScalar -%} ist das Problem. Hier solltest Du erst, wie von John gezeigt, result zuweisen und danach damit machen, was Du möchtest. :)
 
  • Gefällt mir
Reaktionen: OliausderSchweiz

OliausderSchweiz

Aktives Mitglied
3. März 2013
34
0
Die Zeile {% assign Value{{$KID}} = sqlquery | DirectQueryScalar -%} ist das Problem. Hier solltest Du erst, wie von John gezeigt, result zuweisen und danach damit machen, was Du möchtest. :)
Vielen Dank Euch beiden ...

Das obengenannte hab ich so mal umgesetzt, erhalte jetzt aber denselben Fehler in der Zeile danach, also direkt vor dem {% endfor -%} ...
Dort möchte ich ja jeweils eine Variable assignen, deren Name aus dem Variablennamen und anschliessend die KID aus dem Array enthält (VarName1, Varname2, ...) und ihr den Wert der SQL-Abfrage zuweisen.

{% assign VarName{{KID}} = result -%} funzt nicht,
{% assign VarName$KID = result -%} funzt auch nicht ...

Wie setz ich jetzt diesen Variablennamen mit dem String "VarName" und der Variable "KID" zusammen?
 

frankell

Sehr aktives Mitglied
9. September 2019
2.551
776
Flensburg
Bevor man da falsch denkt: Gibt die Query nur einen Wert bzw. eine Spalte zurück oder mehr als eine Spalte?

Denn "(VarName1, Varname2, ...)" könnte auf Mehrspaltigkeit hindeuten.

Und leider verstehe ich immer noch nicht, was Du genau möchtest. Ich befürchte, dass hier auch Begrifflichkeiten durcheinandergewürfelt sind.

Also noch mal: Was möchtest Du ausgegeben haben und wo kommt das bzw. dessen Teile her?
 

OliausderSchweiz

Aktives Mitglied
3. März 2013
34
0
Bevor man da falsch denkt: Gibt die Query nur einen Wert bzw. eine Spalte zurück oder mehr als eine Spalte?

Denn "(VarName1, Varname2, ...)" könnte auf Mehrspaltigkeit hindeuten.

Und leider verstehe ich immer noch nicht, was Du genau möchtest. Ich befürchte, dass hier auch Begrifflichkeiten durcheinandergewürfelt sind.

Also noch mal: Was möchtest Du ausgegeben haben und wo kommt das bzw. dessen Teile her?
Die Query gibt pro Durchlauf einen Wert (Spalte) zurück.
Was ich möchte:
Das Ziel ist das Schreiben eines CSV-files, in der die Werte der 4 Variablen geschrieben werden.
Der Variablenname soll in der For-Schleife aus dem fixen String (Bsp. "KID") und der Ziffer aus dem Array "KIDs" zusammengesetzt werden um dann in der CSV-Ausgabe verwendet werden zu können ...
(Bsp:
CSV-Header: "KEY";"VARNAME1";"VARNAME2";"VARNAME3";"VARNAME4"
CSV-DATA: "{{KEY}}";"KID1";"KID2";"KID5";"KID6"
)
Danke schon mal, nochmal
 

frankell

Sehr aktives Mitglied
9. September 2019
2.551
776
Flensburg
Es wird irgendwie nicht besser. :D

Aber ich mach es mal ganz allgemein, nachdem Du das Ergebnis der SQL-Query in die Variable result geschrieben hast, also nach {% assign result = sqlquery | DirectQueryScalar -%}

Wenn Du dem Ergebnis der SQL-Query etwas hinzufügen möchtest, dann ginge das bspw. per Append:

{{ result | Append: "xyz" }} oder {% assign result = result | Append: "xyz" -%}

Dabei kann "xyz" auch durch eine Variable ersetzt werden, also innerhalb der Schleife bspw. durch KID (das Element des Arrays, das gerade in der Schleife verwendet wird).

Oder umgekehrt das Ergebnis der SQL-Query wird einem String oder einer Variablen hinzugefügt:

{{ "xyz" | Append: result }} oder {% assign result = "xyz" | Append: result -%}

Auch hier kann "xyz" durch eine Variable ersetzt werden, also innerhalb der Schleife bspw. durch KID (das Element des Arrays, das gerade in der Schleife verwendet wird).

Vielleicht kommen wir so ja einer Lösung näher.
 

OliausderSchweiz

Aktives Mitglied
3. März 2013
34
0
Es wird irgendwie nicht besser. :D

Aber ich mach es mal ganz allgemein, nachdem Du das Ergebnis der SQL-Query in die Variable result geschrieben hast, also nach {% assign result = sqlquery | DirectQueryScalar -%}

Wenn Du dem Ergebnis der SQL-Query etwas hinzufügen möchtest, dann ginge das bspw. per Append:

{{ result | Append: "xyz" }} oder {% assign result = result | Append: "xyz" -%}

Dabei kann "xyz" auch durch eine Variable ersetzt werden, also innerhalb der Schleife bspw. durch KID (das Element des Arrays, das gerade in der Schleife verwendet wird).

Oder umgekehrt das Ergebnis der SQL-Query wird einem String oder einer Variablen hinzugefügt:

{{ "xyz" | Append: result }} oder {% assign result = "xyz" | Append: result -%}

Auch hier kann "xyz" durch eine Variable ersetzt werden, also innerhalb der Schleife bspw. durch KID (das Element des Arrays, das gerade in der Schleife verwendet wird).

Vielleicht kommen wir so ja einer Lösung näher.
Shit, wirds nicht besser? ... Ja, ich glaube ich bin gard nicht so auf der SOll-Höhe :( ... hab ich oben doch tatsächlich etwas Mist geschrieben, sorry

Nochmals anders erklärt:
Ich habe pro For-Schleife drei Dinge als Ausgangslage:
1. Die KID, die aus dem Array kommt, also 1,2,5, oder 6
2. Den Wert der durch die Query geliefert wird in der Variable "result"
3. Den String "VALUE", an den die KID pro Schleifen-Durchlauf angehängt werden soll. Die beiden ergeben dann jeweils einen Variablennamen, also bsp. "VALUE1","VALUE2", "VALUE5";"VALUE6" und deren Inhalte ist jeweils das Ergebnis "result" der SQL-Query.

Die zwei Zeilen für die CSV-Ausgabe wären dann:
"KEY";"VARNAME1";"VARNAME2";"VARNAME3";"VARNAME4"
"{{KEY}}";"{{VALUE1}}";"{{VALUE2}}";"{{VALUE5}}";"{{VALUE6}}"

mit anderen Worten:
Pro Durchlauf erstelle ich eine Variable mit Namen (fixer String) und hänge dann die KID aus dem Array dran. Als Wert wird das Query-Ergebnis zugewiesen.

Ich hoffe das ist jetzt klarer ... ?
 

frankell

Sehr aktives Mitglied
9. September 2019
2.551
776
Flensburg
Ich glaube ich hab's jetzt verstanden.

Bei jedem Durchlauf erzeugst Du eine Variable mit der Bezeichnung VALUE{{ KID }}, und dieser Variablen weist Du den Wert {{ result }} zu.

Wenn das ginge, würde das so aussehen: {% assign Value{{ KID }} = result -%}

Aber das geht nicht. Du kannst Variablennamen in DotLiquid nicht dynamisieren.

Aber da stellt sich mir natürlich die Frage, warum ein dynamisierter Variablennamen überhaupt notwendig ist, wo er doch eh nicht in die Ausgabe gelangt, und/oder ob Du nicht auch anders zum Ziel gelangst. Dazu sind jedoch zu wenig Informationen vorhanden.
 

OliausderSchweiz

Aktives Mitglied
3. März 2013
34
0
Ich glaube ich hab's jetzt verstanden.

Bei jedem Durchlauf erzeugst Du eine Variable mit der Bezeichnung VALUE{{ KID }}, und dieser Variablen weist Du den Wert {{ result }} zu.

Wenn das ginge, würde das so aussehen: {% assign Value{{ KID }} = result -%}

Aber das geht nicht. Du kannst Variablennamen in DotLiquid nicht dynamisieren.

Aber da stellt sich mir natürlich die Frage, warum ein dynamisierter Variablennamen überhaupt notwendig ist, wo er doch eh nicht in die Ausgabe gelangt, und/oder ob Du nicht auch anders zum Ziel gelangst. Dazu sind jedoch zu wenig Informationen vorhanden.
Echt? Das geht nicht? hmmm ... und ja, Du hast's jetzt begriffen ;)

Dann beginn ich mal von Vorne:

EndZiel: Bei Vaterartikeln soll pro Kundengruppe (IDs 1,2,5,6) der niedrigste Kind-Preis aller Kinder inkl. deren Staffelpreisen + Sonderpreisen als Verkaufspreis gespeichert werden.
Bisheriger Ansatz: Mit Workflow CSV schreiben und mit Ameise importieren.
CSV-Struktur-Idee bisher:
"VATER-ID";"MINPREIS-KG1";"MINPREIS-KG2";"MINPREIS-KG5";"MINPREIS-KG6"
"{{ArtNo}}";"{{MinPreisKGruppe1}}";"{{MinPreisKGruppe2}}";"{{MinPreisKGruppe5}}";"{{MinPreisKGruppe6}}"

Weil ich eine for-Schleife benutze, müsste ich darin die Variable erzeugen. Hast du eine andere Idee?
 

OliausderSchweiz

Aktives Mitglied
3. März 2013
34
0
Echt? Das geht nicht? hmmm ... und ja, Du hast's jetzt begriffen ;)

Dann beginn ich mal von Vorne:

EndZiel: Bei Vaterartikeln soll pro Kundengruppe (IDs 1,2,5,6) der niedrigste Kind-Preis aller Kinder inkl. deren Staffelpreisen + Sonderpreisen als Verkaufspreis gespeichert werden.
Bisheriger Ansatz: Mit Workflow CSV schreiben und mit Ameise importieren.
CSV-Struktur-Idee bisher:
"VATER-ID";"MINPREIS-KG1";"MINPREIS-KG2";"MINPREIS-KG5";"MINPREIS-KG6"
"{{ArtNo}}";"{{MinPreisKGruppe1}}";"{{MinPreisKGruppe2}}";"{{MinPreisKGruppe5}}";"{{MinPreisKGruppe6}}"

Weil ich eine for-Schleife benutze, müsste ich darin die Variable erzeugen. Hast du eine andere Idee?
Habs gelöst ... mach die Query halt einfach 4x ... danke dir!
 

frankell

Sehr aktives Mitglied
9. September 2019
2.551
776
Flensburg
Alles klar.

Das ginge auch in einer einzigen Query, die man per Ameise exportieren (Eigener Export) und dann wieder importieren kann.

Aber auch in DotLiquid ginge das Ganze weiterhin mit einer For-Schleife, wenn Du die zweite Zeile in eine einzige Variable (bspw. "zeile2") schreibst und diese vor der Schleife bereits den Wert {{ ArtNo }} besitzt. Auf die Anführungszeichen in der CSV kannst Du verzichten, da dort ja nirgendwo ein Semikolon auftaucht. Ich gehe zumindest davon aus, dass Deine Artikelnummer kein Semikolon enthalten. :)

Dann kannst Du einfach in Deinem Ursprungscode die letzte Zeile vor dem Schleifenende durch Folgendes ersetzen:

{% capture result -%}{{ sqlquery | DirectQueryScalar }}{% endcapture -%}
{% assign zeile2 = zeile2 | Append: ';' | Append: result -%}

Deine Ausgabe am Ende ist dann:
VATER-ID;MINPREIS-KG1;MINPREIS-KG2;MINPREIS-KG5;MINPREIS-KG6
{{ zeile2 }}

Die andere Art der Speicherung der Query in eine Variable per capture hat den Hintergrund sicherzustellen, dass result ein String ist und keine Zahl, denn mit einer Zahl funzt Append nicht.
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Versandklassen für Kategorien / Unterkategorien bzw. Artikel im Warenkorb User helfen Usern - Fragen zu JTL-Wawi 0
Neu Freelancer gesucht für Artikelpflege ( Herstellerkataloge / Preisänderungen einspielen) Dienstleistung, Jobs und Ähnliches 3
JTL-WAWI Datenbankprofil für neue Windows Benutzer JTL-Wawi 1.11 2
Neu Für die Weiterentwicklung und Betreuung unserer bestehenden Systemlandschaft suchen wir einen erfahrenen Freelancer (m/w/d) mit fundierten Kenntnissen JTL-Wawi App 1
Neu Platzhalter für OPC-Portlets in Seitentext einbauen Allgemeine Fragen zu JTL-Shop 1
Neu kann man JTL POS alleine nutzen für 29 Euro? Einrichtung / Updates von JTL-POS 0
Neu OSS aktiv – Ausnahme für Eventtickets mit deutschem Leistungsort möglich? Allgemeine Fragen zu JTL-Shop 6
Neu Lösung nötig für JTL 1.11+ !!! Fragen rund um LS-POS 3
Neu Widerrufsformular als kostenloses Plugin für Shops ab 5.1.5 Plugins für JTL-Shop 9
Aktuelles Update 1.11.7: Anmeldedialog merkt sich den letzten User immer noch nicht & falsche Warnung für angeblich fehlendes SQL Server Update JTL-Wawi 1.11 3
Neu Artikelmerkmale für eigenes Exportformat auslesen Betrieb / Pflege von JTL-Shop 0
Gesamtübersicht für Minusbuchen (Lagerbuchungstext) JTL-Wawi 1.10 2
Teilbare Artikel NICHT für Kunden, nur für intern teilbar JTL-Wawi 1.11 5
Neu Neue Preiserhöhung JTL April +~20% für Monatstarife, eingeschränkte "Funktionalitäten" User helfen Usern - Fragen zu JTL-Wawi 267
Neu Jecke Anfrage für Rosenmontag 🎉 – Kamelle & Werbegeschenke gesucht Smalltalk 0
Neu Suche DirectQuery für Kundenkommentar (Rechnung) & Hinweis (Lieferschein) Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 2
Neu Coupon für Oberkategorie aktivieren User helfen Usern - Fragen zu JTL-Wawi 0
Neu vollständige Liste/Definition aller Importfelder für die JTL-Ameise JTL-Ameise - Fehler und Bugs 7
Neu Mehrere Label für GLS Retoure nicht möglich? JTL-ShippingLabels - Fehler und Bugs 0
Beantwortet Downloadfunktion für pdf dateien Allgemeine Fragen zu JTL-Shop 10
Neu Im- und Export-Vorlage für eBay Bestandsabgleich JTL-Ameise - Ideen, Lob und Kritik 0
Neu Neues Plugin: Sauberes Meta-Tracking für JTL-Shop 5 (Pixel + CAPI + Consent) Plugins für JTL-Shop 0
Neu 📢 Plugin "Kreditlimit Plugin für JTL-Shop 5 " von CIN GmbH Plugins für JTL-Shop 0
Zweiter Shop an gleichem Mandanten nur für USA JTL-Wawi 1.11 1
Neu Suche Servicepartner für SQL-Abfrage Dienstleistung, Jobs und Ähnliches 2
Neu Bestimmte 2 Artikel im Warenkorb sorgen für falsche/geringere Versandkosten JTL-Shop - Fehler und Bugs 3
Übersicht für das Lager JTL-Wawi 1.11 1
Hersteller für Verkaufskanal mappen geht nicht JTL-Wawi 1.11 0
Abweichende Attributwerte für POS-Kasse via Ameise importieren JTL-Wawi 1.11 5
Neu eBay Webinar: Dein Business ist bereit für die Weltbühne? News, Events und Umfragen 0
Neu Es werden nicht die gesamter Menge einer Bestellung für die Produktion übernommen; die Bestellung bleibt teilgeliefert. JTL-Plan&Produce - Fehler und Bugs 0
Neu Smarty für "im Zulauf" und "auf Einkaufsliste"? Allgemeine Fragen zu JTL-Shop 7
Neu Betatester gesucht – Hood-Schnittstelle für JTL-Shop 5 Plugins für JTL-Shop 3
Neu askJan | Neuer KI-Assistent für JTL-Wawi - schnelle, effiziente und transparente KI-Datenanalyse - ohne SQL! Dienstleistung, Jobs und Ähnliches 35
Neu FHX One für JTL - Analytics, Monitoring, KI-Texte, Helpdesk uvm. (Otto, Amazon, Shopify, eBay) Dienstleistung, Jobs und Ähnliches 1
Webinar: Verkaufe über die Landesgrenzen hinaus – ist dein Business bereit für die Weltbühne? Messen, Stammtische und interessante Events 0
Neu Platzhalter für Bestellnummer Allgemeine Fragen zu JTL-Shop 3
Neu Für jeden Artikel Bild1 löschen mit der Ameise JTL-Ameise - Ideen, Lob und Kritik 3
Neu Stücklistekomponenten für B2B ausblenden Arbeitsabläufe in JTL-Wawi 1
Neu Retouren Variablen in Workflow für Rechnungskorrektur Wert & Korrekturbetrag JTL-Workflows - Ideen, Lob und Kritik 0
Neu Kunden ohne Kauf finden ( Freischaltung für B2B) User helfen Usern - Fragen zu JTL-Wawi 6
Neu Smart Glasses für eigenes Lager Smalltalk 4
Neu Variable für Maßeinheit gesucht Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 1
Neu Frage zu Benutzer/Rechte für Kunden im Onlineshop neues Passwort generieren User helfen Usern - Fragen zu JTL-Wawi 0
Seit Update auf 1.11.4 Workflow für Kartonauswahl gibt error JTL Das Objekt mit Nullwert muss einen Wert haben. BrowsePk: 152325 WorkflowAktionId: 155 JTL-Wawi 1.11 1
Neu Rechnung nur für bestimmte Kundengruppe drucken, aber für alle Erstellen Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 1
Neu JTL auf dem Server duplizieren für Experimente Installation von JTL-Wawi 1
25 Gutscheine für Kunden auf Rechnung erstellen Allgemeine Fragen zu JTL-Vouchers 0
Neu SEO URL für den Blog Allgemeine Fragen zu JTL-Shop 2
Neu 🚨 Hinweis für JTL-Händler, die Taxdoo nutzen News, Events und Umfragen 1

Ähnliche Themen