Individuelle Datenbankabfragen im Formulareditor

Wichtig: Bitte verwenden Sie Direct Querys nur, wenn Sie ein erfahrener Anwender sind. Die auf dieser Seite eingefügten Code-Beispiele müssen ggf. noch angepasst werden und dienen lediglich zur Illustration. Wenden Sie sich im Zweifelsfall an einen JTL-Servicepartner, der Ihnen bei der Umsetzung behilflich sein kann.

Jedem Formular wird eine vorgefertigte Liste mit Variablen zur Verfügung gestellt, die im Formular genutzt werden können. Es kommt dennoch vor, dass man Informationen braucht, die nicht zur Verfügung stehen. Würden wir jedem Formular alle erdenklichen Variablen immer zur Verfügung stellen, wäre einerseits die Liste mit verfügbaren Variablen sehr lang und unübersichtlich, andererseits müssten all diese Informationen vor jedem Druck des Formulars aus der Datenbank geholt und aufbereitet werden, was den Druckvorgang verzögern würde.

Fehlende Informationen können jedoch über individuelle Datenbankabfragen im Formular selbst geholt und verwendet werden.

Jede Formularvorlage kann die Funktion JTL_DirectQuery(string) nutzen, um individuelle Abfragen zu tätigen.

Im Folgenden werden einige Beispiele präsentiert:

Merkmalwert des Merkmals Farbe:

JTL_DirectQuery ("SELECT tMerkmalWertSprache.cWert FROM tMerkmalWertSprache
JOIN tArtikelMerkmal ON tArtikelMerkmal.kMerkmalWert=tMerkmalWertSprache.kMerkmalWert
JOIN tmerkmal on tArtikelMerkmal.kMerkmal=tmerkmal.kMerkmal
WHERE  tArtikelMerkmal.kArtikel="+Fstr$(Artikel.kArtikel,"?")+"
AND tMerkmalWertSprache.kSprache=1
AND tmerkmal.cName='Farbe'")

Man kann jedes andere Merkmal auch referenzieren – man muss lediglich den Wert ‚Farbe‘ auf das Gewünschte ändern, z.B. ‚Jahrgang‘.

Kundengruppe des Kunden, an den das Formular (Auftrag, Angebot, Rechnung, usw.) geht:

Menge im Zulauf ermitteln

Mit folgender Abfrage kann die Menge im Zulauf auf die Druckformulare (z.B. Preisliste) gebracht werden:

JTL_DirectQuery ("SELECT ISNULL(SUM(ISNULL(tLieferantenBestellungPos.fMenge, 0.0)), 0.0) - ISNULL(SUM(ISNULL(WarenLagerEingang.Menge, 0.0)), 0.0) AS Menge
	FROM tLieferantenBestellungPos
	LEFT JOIN tLieferantenBestellung ON tlieferantenBestellungPos.kLieferantenBestellung = tlieferantenbestellung.kLieferantenbestellung
		AND tlieferantenbestellung.nStatus IN (20, 30, 50)
	LEFT JOIN 
	(
		SELECT tWarenLagerEingang.kLieferantenBestellungPos, ISNULL(SUM(tWarenLagerEingang.fAnzahl), 0.0) AS Menge FROM tWarenLagerEingang
		GROUP BY tWarenLagerEingang.kLieferantenBestellungPos
	) AS WarenLagerEingang ON WarenLagerEingang.kLieferantenBestellungPos = tlieferantenBestellungPos.kLieferantenBestellungPos
	WHERE tLieferantenBestellungPos.kArtikel =  "+Fstr$(Artikel.kArtikel,"?"))

Amazon Geschenknachricht abfragen

Mit dieser Abfrage wird die erste vorhandene Geschenknachricht der Bestellung abgefragt werden. Natürlich funktioniert diese Abfrage überall in den Formualren, die einen Bezug zur Bestellung haben, wie etwa Lieferschein, Auftrag, Rechnung, Fulfillmentauftrag, usw.:

JTL_DirectQuery ("select TOP 1 pf_amazon_bestellungpos.cGrusstext FROM pf_amazon_bestellungpos
JOIN tbestellpos ON tbestellpos.kAmazonBestellungPos = pf_amazon_bestellungpos.kAmazonBestellungPos
JOIN tbestellung on tbestellung.kBestellung = tbestellpos.tBestellung_kBestellung
WHERE tbestellung.cBestellNr='"+JTL.WaWi.Vorgang.BestellNr+"' AND cGrusstext!=''")

Variation auf Artikeletikett

JTL_DirectQuery ("SELECT TOP(1)
	TEWS.cName
FROM dbo.tEigenschaftWertSprache AS TEWS
JOIN dbo.tEigenschaftKombiWert AS TEKW ON TEKW.kEigenschaftWert = TEWS.kEigenschaftWert
JOIN dbo.tEigenschaftSprache AS TES ON TES.kEigenschaft = TEKW.kEigenschaft
JOIN dbo.tArtikel AS Art ON Art.kEigenschaftKombi = TEKW.kEigenschaftKombi
WHERE TES.cName = 'Größe'
AND tartikel.kartikel="+ToString$(Artikel.kArtikel))

teigenschaft.cName=’Größe‘ kann natürlich individuell angepasst werden. Wichtig ist nur, dass die Schreibweise exakt übereinstimmt mit dem Namen der Variation.