0

Zuordnung Mehrfachauswahl zu Datensätzen anderer Tabelle

Hi,

ich habe leider keine Ahnung vom Programmieren und hatte gehofft, ChatGPT könnte mir helfen. Aber ich drehe mich im Kreis.

Ich habe eine Tabelle "Projekte". In dieser gibt es das Mehrfachauswahlfeld "Besitzer". Nun soll jeder Besitzer, der dort ausgewählt ist, eine Email bekommen. Die Emailadresse wird aus einer weiteren Tabelle Namens "Mitarbeiter:Innen" abgerufen, indem der Wert aus "Besitzer" mit dem Wert in "Vorname" verglichen wird.

Prinzipiell funktioniert das, wie ich mit diesem Skript erfolgreich geprüft habe:
 

let besitzerWerte := chosen(Besitzer);
if count(besitzerWerte) = 0 then
    alert("Das Feld 'Besitzer' ist leer.")
else
    let besitzerNamen := "";
    for v in besitzerWerte do
        let mitarbeiter := first(select 'Mitarbeiter:Innen' where Vorname = v);
        if mitarbeiter then
            besitzerNamen := besitzerNamen + v + " - Gefundener Mitarbeiter: " + mitarbeiter.Vorname + " " +
                mitarbeiter.Nachname +
                ", E-Mail: " +
                mitarbeiter.Email
        else
            besitzerNamen := besitzerNamen + v + " - wurde nicht gefunden."
        end
    end;
    alert("Besitzer und deren Zuordnung:" + besitzerNamen)
end

Wenn ich allerdings versuche, das in den Emailversand zu integrieren, funktioniert das nicht. In diesem Skript gibt es auch diverse alerts, allerdings wird mir immer nur der letzte angezeigt, der da lautet:
"Es wurde keine gültige E-Mail-Adresse gefunden"

Ich vermute, dass da auch vorher schon alerts angezeigt werden, die dann aber vom jeweils nächsten abgelöst und somit nur sehr kurz angezeigt werden. Ich vermute, irgendwas haut mit der Zuordnung von Besitzer<-->Vorname nicht hin oder die Emailadresse wird nicht korrekt extrahiert (es handelt sich um ein emailfeld namens "Email").

Hier der Code (aktuell zu Testzwecken als Button, soll später ein trigger werden):

let empfaenger := [];
let besitzerWerte := chosen(Besitzer);
if count(besitzerWerte) = 0 then
    alert("Das Feld 'Besitzer' ist leer.")
else
    alert("Besitzer Werte: " + concat(besitzerWerte, ", "));
    for v in besitzerWerte do
        let mitarbeiter := first(select 'Mitarbeiter:Innen' where Vorname = v);
        if mitarbeiter then
            alert("Mitarbeiter gefunden: " + mitarbeiter.Vorname + " " + mitarbeiter.Nachname);
            let email := mitarbeiter.Email;
            if email then
                empfaenger := empfaenger + email;
                alert("E-Mail-Adresse gefunden: " + email)
            else
                alert("Gesuchter Vorname: " + v + " hat keine E-Mail.")
            end
        else
            alert("Gesuchter Vorname: " + v + " wurde nicht gefunden.")
        end
    end;
    let empfaengerList := concat(empfaenger, ",");
    alert("Empfänger Liste: " + empfaengerList);
    let betreff := "Neues Projekt: " + Projektname;
    let text := "Hallo, Ein neues Projekt wurde erstellt. Projektname: " + Projektname +
        " Beschreibung: " +
        Projektbeschreibung +
        " Viele Grüße";
    if length(empfaengerList) > 0 then
        sendEmail({
            from: "event@fotoautomaten.berlin",
            to: empfaengerList,
            subject: betreff,
            text: text,
            html: ""
        })
    else
        alert("Es wurde keine gültige E-Mail-Adresse gefunden.")
    end
end

Über Unterstützung wäre ich sehr dankbar!

4 Antworten

null
    • mirko3
    • vor 3 Tagen
    • Gemeldet - anzeigen

    Hi, Sebastian. Wie sieht denn ein einzelner Wert im Mehrfachauswahlfeld aus? Vorname-Leerzeichen-Nachname?

    Ist es ein einfaches multi oder ein dmulti?

      • Böhm & Herold GbR Fotoautomat Berlin
      • Sebastian_Bohm
      • vor 3 Tagen
      • Gemeldet - anzeigen

      Hi  

      da steht nur ein Name. Also z.B. "Sebastian" Und das ist dann identisch mit dem Feld "Vorname" in der anderen Tabelle. Wie erkenne ich den Unterschied zwischen multi und dmulti?

    • mirko3
    • vor 2 Tagen
    • Gemeldet - anzeigen

    Es ist ein normales Mehrfachauswahlfeld. Versuche mal diese Codeversion. Ich habe alle alerts bis auf die Erfolgskontrolle herausgenommen, um das Script übersichtlicher zu gestalten. Du kannst diese ja selbst noch nachtragen. Mirko

    let betreff := "Neues Projekt: " + Projektname;
    let text := "Hallo, Ein neues Projekt wurde erstellt. Projektname: " + Projektname +
        " Beschreibung: " +
        Projektbeschreibung +
        " Viele Grüße";
    let allNames := chosen(Besitzer);
    let empfaengerList := (select 'Mitarbeiter:Innen' where contains(allNames, Vorname)).text(Email);
    if cnt(empfaengerList) > 0 then
        sendEmail({
            from: "event@fotoautomaten.berlin",
            to: empfaengerList,
            subject: betreff,
            text: text,
            html: ""
        });
        alert("an diese Mitarbeiter:Innen wurde eine email verschickt: " +
        "
    " +
        join(empfaengerList, "
    "))
    end
    
      • Böhm & Herold GbR Fotoautomat Berlin
      • Sebastian_Bohm
      • vor 18 Stunden
      • Gemeldet - anzeigen

       Dankeschön, war die letzten Tage unterwegs. Ich schau's mir an und melde mich zurück

Content aside

  • vor 18 StundenZuletzt aktiv
  • 4Antworten
  • 32Ansichten
  • 2 Folge bereits