Moin Peter,
erst einmal Chapeau, das ist zwar ziemlich von Hinten durch die Brust ins Auge, aber jo, so kann man tatsächlich indirekt einen Ansprechpartner auswählen, wieder was gelernt ...
Und jetzt bitte nicht erschrecken, die folgende SQL Abfrage ist ein bißchen komplexer als Du sie vielleicht erwartet hättest. Ich habe aber der Vollständigkeit halber gleich die Abfrage, die ich benutze, um bei
Lieferantenbestellungen die Ansprechpartner-Infos aus der DB zu holen, an Deinen "Fund" mit der Email-Adresse angepasst und diese Abfrage macht deutlich mehr als Du eigentlich wolltest, ist aber eben auch deutlich mächtiger ...
Code:
JTL_DirectQuery("SELECT 'Name='+ISNULL(cName,'')+'|Abteilung='+ISNULL(cAbteilung,'')+'|Email='+ISNULL(cMail,'')+'|Tel='+ISNULL(cTel,'')+'|Fax='+ISNULL(cFax,'') FROM tansprechpartner
WHERE cMail='"+Vorgang.Rechnungsadresse.EMail+"' AND kKunde="+ToString$(Vorgang.Kunde.InterneKundennummer)+"
UNION
SELECT 'Name='+CONCAT(cTitel,CASE WHEN cTitel<>'' THEN ' ' ELSE '' END,cVorname,CASE WHEN cVorname<>'' THEN ' ' ELSE '' END,cName)
+'|Abteilung='+ISNULL(cZusatz,'')+'|Email='+ISNULL(cEMail,'')+'|Tel='+ISNULL(cTel,'')+'|Fax='+ISNULL(cFax,'') FROM tKunde
WHERE NOT EXISTS (SELECT 0 FROM tansprechpartner WHERE cMail='"+Vorgang.Rechnungsadresse.EMail+"' AND kKunde="+ToString$(Vorgang.Kunde.InterneKundennummer)+")
AND kKunde="+ToString$(Vorgang.Kunde.InterneKundennummer))
Ok, und was macht das gute Stück?
Es liefert gleich alle Infos aus dem Ansprechpartner des Kunden zurück, der über die ausgewählte Email-Adresse identifiziert wird. Und diese Daten werden gleich in dem Format zurückgeliefert, das man in den Vorlagen super-elegant über den Alias$() Befehl auswerten kann.
Und damit man auch dann vernünftige Werte zurückgeliefert bekommt, wenn man keinen Ansprechpartner ausgewählt hat, oder es schlicht keinen gibt, prüft die Abfrage auch darauf und liefert in diesem Fall die analogen Infos aus dem primären Kundendatensatz zurück. Das könntest Du zwar auch in der Vorlage selbst prüfen, aber das wäre ein immer wiederkehrender sinnloser Aufwand, deshalb erledige ich das gleich mit.
Um einfach damit arbeiten zu können, mache ich in der Summe also Folgendes:
- Ich lege mir unter "Projekt > Benutzervariablen" eine neue Benutzervariable namens
"Ansprechpartner" an.
- Dieser neuen Variable, die über
@Ansprechpartner überall im Formular ansprechbar ist, gebe ich als Wert die obige Abfrage mit.
- Wenn ich jetzt im Formular irgendwo z.B. die Email-Adresse des Ansprechpartners verwenden will, benutze ich den Formel-Ausdruck
Alias$("Email",@Ansprechpartner).
- Die verfügbaren Feldnamen für diese
Alias$() Abfragen sind dann
"Name",
"Abteilung",
"Email",
"Tel",
"Fax".
Das war's, eigentlich ganz einfach ...
Gruß,
Ingmar