Individuelle Datenbankabfragen im Formulareditor
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.