Gelöst Artikelnummer auf Versand Label mit ausgeben

2018

Aktives Mitglied
2. Januar 2018
80
3
Hallo zusammen,
ich würde gerne eine Variable auf meinem Versand Label hinterlegen für die Artikelnummer.
Allerdings finde ich keine Variable, heisst diese ggf anders oder was mache ich falsch?
LG Rudi
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.295
407
Meinst Du das Versandlabel Deines Versenders, also z.B. DHL oder meinst Du das Versandetikett, also die Vorlage innerhalb der Wawi?

Beim Versandetikett, also der Wawi Vorlage könntest Du über eine direkte SQL Abfrage an die Artikelnummer kommen, die Versandlabel, also die DHL- / UPS- / etc. Label werden aber vom Versender erstellt und ich wüsste nicht, dass Du da noch was draufpinnen kannst.

Und meinst Du überhaupt "die Artikelnummer". Das scheint mir nur begrenzt Sinn zu machen, denn das können doch auch 50 Artikel und -nummern werden, oder? Meinst Du vielleicht die Auftragsnummer? Das ginge sogar ohne SQL Abfrage, aber eben nur auf dem Versandetikett.
 

2018

Aktives Mitglied
2. Januar 2018
80
3
Hi, vielen Dank für deine schnelle Antwort, hätte nicht gedacht das das so schnell geht.
Ich meine tatsächlich das Versandetikett.
Du schreibst man könnte eine direkte SQL Abfrage starten, ist das die normale Vorlagenbearbeitung oder etwas spezielles?
Weil in der Vorlagenbearbeitung konnte ich nur die Auftragsnummer hinterlegen.
Das ist aber umständlich, jetzt muss ich immer mit dem PC den Inhalt abgleichen.
Da ich meist aber nur ein Artikel pro Bestellung habe, wäre es komfortabel, einfach die Art-Nr mit auf das Label zu nehmen.

LG Rudi
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.295
407
Hallo Rudi,

JTL gibt jeder Vorlage immer die Daten aus der Datenbank mit, die für die Vorlage benötigt werden. Dabei werden aber auch nur die wirklich benötigten Daten geholt und eine Artikelnummer auf dem Versandetikett, das will definitiv keiner 😉
Aber zu jeder Regel gibt es die Ausnahme, das weiß auch JTL und deshalb werden auch immer ein paar Variablen mit übergeben, die man dazu benutzen kann, um sich von dort aus selbst durch die Datenbank zu hangeln, wenn man weiß, wie's geht.

Hier, beim Versandetikett, hat JTL die interne Auftragsnummer mit übergeben, die eigentlich auch schon nichts auf dem Versandetikett zu suchen hat, s.o. - Und die brauchen wir hier, weil man damit ganz einfach die erste Auftragsposition aus dem Auftrag holen kann, die keine Versandposition ist und das sieht dann so aus ...
Code:
JTL_DirectQuery("SELECT TOP 1 cArtNr FROM tBestellPos WHERE nType=1 AND tBestellung_kBestellung="+ToString$(Aufträge.InterneAuftragsnummer))
... und das Einzige, was Du noch machen musst, ist, den ganzen Code aus der Box oben rauszukopieren und genau an der Stelle reinzukleben, an der Du die Artikelnummer haben möchtest.

Viele Grüße,
Ingmar
 
  • Gefällt mir
Reaktionen: 2018

2018

Aktives Mitglied
2. Januar 2018
80
3
Hallo Ingmar,
das ist ja richtig klasse dein Code, Ich danke Dir Sehr !
Eine frage noch, bestünde die Möglichkeit in dem Code das so zu schreiben, sollte es tatsächlich mal mehr wie ein Artikel sein, das dieser dann auch mit drauf steht.
Also sprich der zweite Artikel mit drauf oder gar wenn ein Kunde sogar Anzahl 2 von einem Artikel bestellt, dass dann halt da steht 2x Art Nr.. ?

LG Rudi
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.295
407
Hallo Rudi,

die Variante, bei der nur der erste Artikel ausgegeben würde, aber mit der Anzahl davor im Format "1x ArtNr" lautet so ...
Code:
JTL_DirectQuery("SELECT TOP 1 CONCAT(CONVERT(INT,nAnzahl),'x ',cArtNr) FROM tBestellPos WHERE nType=1 AND tBestellung_kBestellung="+ToString$(Aufträge.InterneAuftragsnummer))

Wenn Du mehrere, im Zweifel also alle Artikel gelistet haben willst, dann ist das entweder gar nicht schwierig oder echt schwierig, kommt darauf an, wie die Ausgabe aussehen soll. Einfach wird es, wenn die Artikel untereinander stehen dürfen, Du Dir also z.B. rechts am Rand oder wo auch immer eine Spalte reservieren kannst, in der die Werte dann untereinander stehen dürfen. Die zugehörige Abfrage sieht dann so aus...
Code:
JTL_DirectTableQuery ("SELECT CONCAT(CONVERT(INT,nAnzahl),'x ',cArtNr) FROM tBestellPos WHERE nType=1 AND tBestellung_kBestellung="+ToString$(Aufträge.InterneAuftragsnummer)+"ORDER BY nSort ASC","","¶")

Wenn die Werte aber nebeneinander in einer Zeile stehen sollen, also so "1x ArtNr1, 3x ArtNr2, ...", dann wird es echt komplex und ehrlich gesagt zu komplex für meinen geringen Vorrat an Zeit für Hilfe, sorry.

Der Grund dafür ist, dass der MS SQL Server keine eingebaute Funktion zum Verketten von Zeilen kennt, die aus einer SQL Query resultieren. Dazu gibt es zwar Workarounds mit geschachtelten Queries, kompliziertem Geschwurbel und mit dem Mißbrauch von XML PATH Funktionen für das hehre Ziel, aber das ist immer Bastelarbeit und die Lösungen, die ich kenne, tun sich alle unendlich schwer mit leeren und NULL Werten.

Geschätzt unter einer Stunde Bastelei wird das nichts und wenn ich eine Stunde hätte, würde ich lieber schlafen wollen ... 😵

Ich denke aber, dass die drei Lösungen ja auch schon was sind, oder?

Gruß,
Ingmar
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.295
407
Ok, ok, ich habe es doch versucht und war in 5 Minuten fertig, ich hoffe das macht mich nicht zum Lügner ... 🙄

Hier also dann die finale Version in der Form "1x ArtNr1, 3x ArtNr2, ..." ...
Code:
JTL_DirectQuery("SELECT DISTINCT SUBSTRING((SELECT ', '+CONCAT(CONVERT(INT,BP1.nAnzahl),'x '),BP1.cArtNr AS [text()] FROM dbo.tbestellpos BP1 WHERE BP1.tBestellung_kBestellung = BP2.tBestellung_kBestellung AND nType=1 ORDER BY BP1.cArtNr FOR XML PATH ('')), 3, 1000) FROM dbo.tbestellpos BP2 WHERE tBestellung_kBestellung="+ToString$(Aufträge.InterneAuftragsnummer))

Viel Spaß,
Ingmar
 
  • Gefällt mir
Reaktionen: Hellweg-HB

2018

Aktives Mitglied
2. Januar 2018
80
3
Hi Ingmar,
es freut mich sehr so kompetente Hilfe von Dir zu bekommen.
Mir hätte auch schon die Zwischenlösung sehr geholfen.
Aber Perfekt ist tatsächlich die letzte Lösung.

Danke Danke Danke

Wünsche ein schönes Wochenende

LG Rudi
 

Ähnliche Themen