@marco3993 - Das ist gar nicht schlecht gemacht und für viele einfach gelagerte Fälle würde das sicherlich so auch gehen, aber in der Summe hat Deine Lösung doch ein paar Probleme, die sie dann tatsächlich doch nicht so gut geeignet sein lassen...
1. Wenn Du mehrere Lieferanten für einen Artikel hast, tauchen die dort alle unter der gleichen
kArtikel Nummer und mit
nID=8 auf. Dann wird einfach die Oberste Art.Nr. zurückgeliefert, welche auch immer das ist...
2. In
tArtikelSpeicher ist nicht enthalten, wer der Standard-Lieferant ist. Also ist so etwas wie die Vorgabe, die Lieferantenartikelnummer des Hauptlieferanten auszugeben, hierüber nicht realisierbar.
3. Die Einträge in
tArtikelSpeicher haben nichts, aber auch gar nichts mit
Lieferungen und
Warenlagerausgängen zu tun, sondern bilden nur statisch einen Mini-Ausschnitt von dem ab, was im Artikel unter "Lieferanten" steht.
4. Wenn Du also z.B. 10 Stück eines Artikels auslieferst, können davon 5 vom einen und 5 von einem anderen Lieferanten stammen und im Zweifel nicht 1 Stück vom Hauptlieferanten... - Wie soll damit umgegangen werden?
Die tatsächlich notwendige SQL Abfrage, um all das oben zu berücksichtigen und die Lieferantenartikelnummer(n) an-/auszugeben, die auch wirklich zu den Warenlagerausgängen des aktuellen Lieferscheins gehören, ist aber ungleich komplexer und geht über ziemlich viele Ecken mit vielen JOINs und einigen SubQueries, was mit einer JTL_DirectQuery() zwar machbar, aber ziemlich unhandlich ist. - Die Frage ist aber, was hier sinnvoll ist und vielleicht ist Deine Lösung von der Grundidee her da schon verdammt nah dran und in Wirklichkeit will man nur die Lieferantenartikelnummer des Hauptlieferanten haben, und gut ist...
Tatsächlich findest Du alle notwendigen Informationen für diese einfachere Variante, also für "Gib mir die Lieferantenartikelnummer des Standard- oder Hauptlieferanten zurück, egal ob die aktuelle Auslieferware auch von diesem Lieferanten stammte" in der Tabelle
tliefartikel und die zugehörige SQL Abfrage lautet in Anlehnung an Deine Abfrage wie folgt...
Code:
"LAN: " + JTL_DirectQuery("SELECT cLiefArtNr FROM tliefartikel WHERE tArtikel_kArtikel="+ToString$(Lieferscheinpositionen.Artikel.InterneArtikelnummer)+"AND nStandard=1")
Falls es sich bei der Lieferposition aber um eine
Dropshipping-Position handelt, wäre die Angabe der Lieferantenartikelnummer des "normalen" Standardlieferanten aber auch schon wieder falsch. Entsprechend sollte man das bei der Gelegenheit auch noch gleich abfangen und das sieht dann so aus ...
Code:
"LAN: " + JTL_DirectQuery("SELECT cLiefArtNr FROM tliefartikel WHERE tArtikel_kArtikel="+ToString$(Lieferscheinpositionen.Artikel.InterneArtikelnummer)+"AND "+Cond(Lieferscheinpositionen.Auftragsposition.IstDropshipping,"nDropShippingStandard","nStandard")+"=1")
Gruß,
Ingmar