Neu HTML-Tabellen in DotLiquid mit SQL-Datenquelle

  • "Hermes B2C" wird zum 29.02.2020 abgeschaltet und durch das neue "Hermes-Shipping-Interface" (HSI) ersetzt.
    Wer noch "Hermes B2C" nutzt sollte rechtzeitig umsteigen
    Weiterführende Infos gibt es hier: Infos zur Schnittstelle

thowi

Gut bekanntes Mitglied
8. Juni 2018
370
39
Hey zusammen,

ich möchte eine HTML-Tabelle in einer Email erstellen und krieg es irgendwie nicht hin.

Die Rohdaten für die Tabelle fülle ich vorher per SQL in AuftragListe:
Code:
{% capture query -%}
SELECT
...
{% endcapture -%}

{% assign AuftragListe = query | DirectQuery -%}
Hier ist ja erklärt, wie es geht:
Code:
<table>
{% tablerow product in Vorgang.Auftrag.Positionen cols:1 %}
{{ product.Menge }}x </td><td> {{ product.Bezeichnung }} </td><td class="col3" align="right"> {{ product.BruttopreisGesamt | Nummer: 'N2' }}
{% endtablerow -%}
</table>
Mal abgesehen davon, dass mir da im Code irgendwie am Anfang ein öffnendes und ganz am Ende ein schließendes <td> fehlt, hab ich das genauso einfach mal umgesetzt:
Code:
{% capture query -%}
SELECT
...
{% endcapture -%}

{% assign AuftragListe = query | DirectQuery -%}

<table>

{% tablerow item in AuftragListe.Daten -%}

{{ item.Auftrag }} </td><td> {{ item.inBearbeitungSeit }} </td><td> {{ item.Firma }} </td><td> {{ item.Vorname }} </td><td> {{ item.Name }} </td><td> {{ item.Adresse }}
{% endtablerow -%}

</table>
Wenn ich auf "Vorschau Browser" klicke, bekomme ich die folgende Fehlermeldung:
Liquid error: Der angegebene Schlüssel war nicht im Wörterbuch angegeben.
Liegt das vielleicht am "AuftragListe.Daten"? In der for-Schleife funktioniert das so einwandfrei, aber vermutlich nicht in der tablerow-Funktion? Wenn ich das ".Daten" weglasse, bekomme ich gar keine Ergebnisse.

So läuft es einwandfrei in der for-Schleife durch und ich sehe auch Ergebnisse:
Code:
{% assign AuftragListe = query | DirectQuery -%}
Auftrag;Datum;inBearbeitungSeit;Firma;Vorname;Name;Adresse

{% for item in AuftragListe.Daten -%}
{{ item.Auftrag }};{{ item.inBearbeitungSeit }};{{ item.Firma }};{{ item.Vorname }};{{ item.Name }};{{ item.Adresse }}
{% endfor -%}
Ich hoffe, ihr könnt mir hier helfen - vielen Dank!
 
  • Ich liebe es
Reaktionen: Sebastian Paul

thowi

Gut bekanntes Mitglied
8. Juni 2018
370
39
Joa - so habe ich das zuerst versucht und als das nicht funktionierte, hab ich in der Doku das tablerow gefunden :)

Wer weiß wo ich den Fehler hatte, ich habs nun nochmal gemacht und nun gehts :D Danke dir!

Für alle die es interessiert:
HTML:
<table>
 <thead>
  <tr>
    <th>Auftrag</th>
    <th>Datum</th>
    <th>in Bearbeitung seit</th>
    <th>Firma</th>
    <th>Vorname</th>
    <th>Name</th>
    <th>Adresse</th>
  </tr>
 </thead>
 <tbody>
  {% for item in AuftragListe.Daten -%}
  <tr>
    <td>{{ item.Auftrag }}</td>
    <td>{{ item.Datum }}</td>
    <td>{{ item.inBearbeitungSeit }}</td>
    <td>{{ item.Firma }}</td>
    <td>{{ item.Vorname }}</td>
    <td>{{ item.Name }}</td>
    <td>{{ item.Adresse }}</td>
  </tr>
  {% endfor -%}
 </tbody>
</table>