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.399
780
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.399
780
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
1.141
366
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
1.141
366
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
1.141
366
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
1.141
366
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
1.141
366
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 Aufteilung einer Sendung auf mehrere Lieferscheine für die Schweiz User helfen Usern - Fragen zu JTL-Wawi 0
Neu Artikelbeschreibung für diverse Artikel ergänzen Arbeitsabläufe in JTL-Wawi 1
Neu Anfrage für CSS Anpassung Nova Childtemplate Dienstleistung, Jobs und Ähnliches 1
Neu Drucker für Gutscheine Allgemeine Fragen zu JTL-Vouchers 0
Neu Connector für Geschäftspartner Allgemeines zu den JTL-Connectoren 0
Neu Artikel für spezielle Kunden ausblenden Allgemeine Fragen zu JTL-Shop 3
Neu Zustandstexte für ebay auslesen? JTL-Ameise - Fehler und Bugs 2
Neu BUG: kann die neu erstellte Vorlage für eine Rechnung nicht editieren, WAWI stürzt ab JTL-Wawi - Fehler und Bugs 3
SQL-Abfrage für eigene Übersicht im Verkauf – Aufträge zu Angeboten prüfen JTL-Wawi 1.9 2
Erfahrungsaustausch & Unterstützung für JTL-FFN-Setup gesucht JTL-Wawi 1.9 1
Rechnungsvorlagen für Kleinunternehmer JTL-Wawi 1.8 7
Neu Workflow-Bedingungen für Teillieferung aus zwei Lagern (Lager A & Lager B) User helfen Usern - Fragen zu JTL-Wawi 2
Neu Warenkorb Anzeige Problem für Kleinunternehmer Allgemeine Fragen zu JTL-Shop 6
Neu Plugin für Checkout Prozess Plugins für JTL-Shop 5
In Diskussion Grundsätzlich mehrfach Versandlabel für Pakete über 30kg JTL-Workflows - Ideen, Lob und Kritik 10
Neu Mindestbestand für bestimmte Lagerplätze User helfen Usern - Fragen zu JTL-Wawi 3
Neu Connector für Magento 2.4.6 Allgemeines zu den JTL-Connectoren 1
Neu Suche SQL Abfrage für Hersteller die keinem Artikel mehr zugeordnet sind. User helfen Usern - Fragen zu JTL-Wawi 6
Neu Faktura-Liste für Aufträge pro Kunden Schnittstellen Import / Export 1
Neu Artikelanzahl für die Startedition Allgemeine Fragen zu JTL-Shop 5
Neu Template für eigene Seite Templates für JTL-Shop 9
Neu Freelancer für Amazon-Account-Management & JTL-Wawi gesucht Dienstleistung, Jobs und Ähnliches 2
Neu Servicepartner für Workflow gesucht Dienstleistung, Jobs und Ähnliches 3
Neu Workflow für fehlerhafte Retouren User helfen Usern - Fragen zu JTL-Wawi 0
Zentraler Medien-Ordner für mehrere Shops unter subdomain Einrichtung JTL-Shop5 0
Neu Google Search Console: 5xx-Fehler für nicht indexierte Seiten mit URL-Parametern – Warum? Betrieb / Pflege von JTL-Shop 3
Zahlungsabgleich - Zahlungsausgänge automatisch für Mitarbeiter ausblenden JTL-Wawi 1.9 1
Beschreibung Texte für Ausgabeweg WMS Packtisch+ JTL-Wawi 1.9 2
Neu SQL Abfrage für offene Aufträge über Ameise User helfen Usern - Fragen zu JTL-Wawi 5
In Diskussion Workflow für die Abfrage des noch offenen Kreditlimits JTL-Workflows - Ideen, Lob und Kritik 2
In Diskussion Workflow für fehlgeschlagenen Versanddatenexport Adressfehler beheben JTL-Workflows - Fehler und Bugs 5
Beantwortet GLS Label - Duplikat für Versender JTL-ShippingLabels - Fehler und Bugs 0
Neu Sinnvoll? Skript- oder Plugin-Lösung für (Nicht-ganz-)Dropshipping? User helfen Usern - Fragen zu JTL-Wawi 1
Neu Profi? Agentur, Dienstleister gesucht für JTL Rechnungsdatenservice JTL 2 Datev Schnittstellen Import / Export 0
Neu Virtuelle Assistenz für Kundenservice gesucht User helfen Usern - Fragen zu JTL-Wawi 0
In Diskussion Tagesabschluß "Entnahme für Bank" funktioniert nicht JTL-POS - Fehler und Bugs 6
URL PFAD SEO Multishop Für jeden Shop unterschiedliche Einträge JTL-Wawi 1.9 2
Gelöst Variable für das Zählprotokoll Allgemeine Fragen zu JTL-POS 1
Gelöst Workflow Auftrag mit Positionsabfrage geht nicht, wegen Textposition für den Versand JTL-Workflows - Ideen, Lob und Kritik 1
In Diskussion Günstiges Android Tablet für kleinen Laden JTL-POS - Fragen zu Hardware 3
Gelöst Neues System für JTL POS gesucht – Erfahrungen & Empfehlungen? JTL-POS - Fragen zu Hardware 8
"Abholung" nur für bestimmte Kunden Einrichtung JTL-Shop5 4
Neu Suche Anbieter für Server Side Tracking Allgemeine Fragen zu JTL-Shop 0
Neu Kauf Ihres Lagerbestands durch Amazon für den weltweiten Verkauf - Wie Abbildung in JTL? Betrieb / Pflege von JTL-Shop 0
Neu Eigenes Formular erstellen für Kundenservice Allgemeine Fragen zu JTL-Shop 7
Neu Apple Pay in PayPal Plugin für die Schweiz Plugins für JTL-Shop 4
Neu Festgelegte Zahlungsart für Kunde Allgemeine Fragen zu JTL-Shop 0
Neu 🛒𝐍𝐞𝐮𝐞𝐬 𝐏𝐥𝐮𝐠-𝐈𝐧: Eigene Lösung für Rechnungskauf mit Bonitäts- & Betrugsprüfung direkt im Check-out - JTL5? Plugins für JTL-Shop 6
Neu Die wichtigsten Shopify/JTL-Wawi Tipps für Anfänger (wie mich) Shopify-Connector 11
Neu Wawi 1.9.5.4, Ameise Preise glätten für Ebay Vorlagen und laufende Angebote?? User helfen Usern - Fragen zu JTL-Wawi 0

Ähnliche Themen