Wechseln zu: Navigation, Suche

Individuelle Datenbankabfragen im Formulareditor

Verwandte Themen


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:

JTL_DirectQuery ("SELECT tKundenGruppe.cName FROM tKunde JOIN
tkundengruppe ON tkundengruppe.kKundengruppe = tkunde.kKundengruppe
WHERE tkunde.cKundenNr='"+JTL.WaWi.Kunde.Kundennummer+"'")

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

Möchte man auf Artikeletikett z.B. die Größe mit angeben, so funktioniert das bei Variationskombinationen folgendermaßen:

JTL_DirectQuery ("SELECT teigenschaftwert.cName
FROM teigenschaft
JOIN tEigenschaftKombiWert ON tEigenschaftKombiWert.kEigenschaft = teigenschaft.kEigenschaft
JOIN tartikel on tartikel.kEigenschaftKombi = tEigenschaftKombiWert.kEigenschaftKombi
JOIN teigenschaftwert ON teigenschaftwert.kEigenschaftWert = tEigenschaftKombiWert.kEigenschaftWert
WHERE teigenschaft.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.


Wie geht es weiter?