0

Verständnisfrage - Referenz auf andere Tabellen

Tach Gemeinde,

 

habe nur eine Verständnisfrage... :-)

 

ich arbeite gerade an einem "Firmenkalender". Dort werden zu diversen Objekten (überlassene Fahrzeuge, Verträge, zeitlich befristete Arbeitsmittel und sonstiges was nach gewisser Zeit Aufmerksamkeit benötigt) Wiedervorlagen erstellt und, so hoffe ich zumindest :-), vom zuständigen Mitarbeiter erledigt/abgearbeitet.

 

Nun habe ich beim neuen Trigger "Nach dem  Öffnen der Datenbank ausführen..." eine Funktion eingebaut, welche bei fällig gewordenen Wiedervorlagen eine eMail an den betroffenen Mitarbeiter sendet:

 

let myArray := (select Wiedervorlage)[Wiedervorlage <= today() and 'eMail gesendet am' = null];
let myCNT := cnt((select Wiedervorlage)[Wiedervorlage <= today() and 'eMail gesendet am' = null]);
if myCNT > 0 then
let myChoice := dialog("e-Mails senden?", "Es sind " + myCNT + " Wiedervorlage(n) fällig, zu denen noch keine eMail versandt wurde(n).
Sollen diese jetzt gesendet werden?", ["Ja", "Nein"]);
if myChoice = "Ja" then
for i in myArray do
let myDate := first((select Wiedervorlage)[Nr = i].Wiedervorlage);
let myText := first((select Wiedervorlage)[Nr = i].Text);
let myMail := first((select Wiedervorlage)[Nr = i].Mitarbeiter.'E-Mail');
let mySubject := "Wiedervorlage fällig am " + format(date(myDate), "DD.MM.YYYY");
let myTXT := "Hallo,

am " + format(date(myDate), "DD.MM.YYYY") + " ist wie folgt fällig:

" + myText + "

Bitte um Erledigung und Rückmeldung.

Mit freundlichen Grüßen,
" + user();
let myHTML := "Hallo,<br><br>am " + format(date(myDate), "DD.MM.YYYY") + " ist wie folgt fällig:<br><br>" + myText + "<br><br>Bitte um Erledigung und Rückmeldung.<br><br>Mit freundlichen Grüßen,<br><br>" + user();
sendEmail({
from: userEmail(user()),
to: myMail,
bcc: userEmail(user()),
subject: mySubject,
text: text(myTXT),
html: myHTML
});
let myWV := first((select Wiedervorlage)[Nr = i]);
myWV.('eMail gesendet am' := now())
end
end
end;

 

Das Script funktioniert soweit wie gewünscht. Ich hätte jedoch erwartet, dass ich in der for-Schleife direkter auf die Array-Einträge zugreifen kann, hab aber keine Syntax gefunden, die mir die first(select)-Konstruktionen erspart. Hat jemand einen Tipp, wie das "sauberer" geht?

 

lg, Torsten

3 Antworten

null
    • Torsten_Stang.1
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo nochmal,

     

    okay, einen Schritt zur Vereinfachung hatte ich ja schon selbst im Code erarbeitet - nur eben falsch eingesetzt. :-)

     

    let myWV := first((select Wiedervorlage)[Nr = i]);
    let myDate := myWV.Wiedervorlage;
    let myText := myWV.Text;
    let myMail := myWV.Mitarbeiter.'E-Mail';

     

    lg, Torsten

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Torsten,

    man kann die Datensätze in der Schleife direk als i benennen:

    ---

    let myArray := (select Wiedervorlage)[Wiedervorlage <= today() and 'eMail gesendet am' = null];
    let myCNT := cnt((select Wiedervorlage)[Wiedervorlage <= today() and 'eMail gesendet am' = null]);
    if myCNT > 0 then
    let myChoice := dialog("e-Mails senden?", "Es sind " + myCNT + " Wiedervorlage(n) fällig, zu denen noch keine eMail versandt wurde(n).
    Sollen diese jetzt gesendet werden?", ["Ja", "Nein"]);
    if myChoice = "Ja" then
    for i in myArray do
    let myDate :=i.Wiedervorlage;
    let myText := i.Text;
    let myMail :=i.Mitarbeiter.'E-Mail';
    let mySubject := "Wiedervorlage fällig am " + format(date(myDate), "DD.MM.YYYY");
    let myTXT := "Hallo,

    am " + format(date(myDate), "DD.MM.YYYY") + " ist wie folgt fällig:

    " + myText + "

    Bitte um Erledigung und Rückmeldung.

    Mit freundlichen Grüßen,
    " + user();
    let myHTML := "Hallo,<br><br>am " + format(date(myDate), "DD.MM.YYYY") + " ist wie folgt fällig:<br><br>" + myText + "<br><br>Bitte um Erledigung und Rückmeldung.<br><br>Mit freundlichen Grüßen,<br><br>" + user();
    sendEmail({
    from: userEmail(user()),
    to: myMail,
    bcc: userEmail(user()),
    subject: mySubject,
    text: text(myTXT),
    html: myHTML
    });
    let myWV := i;
    myWV.('eMail gesendet am' := now())
    end
    end
    end;

    ---

    Leo

    • Torsten_Stang.1
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

     

    ich war mir sicher, dass ich es genau so versucht habe, es aber nicht ging. Aber ja, hab's so jetzt umgesetzt und tut einwandfrei. Das war auch genau die Syntax, nach der ich gesucht habe. Danke Dir!

     

    lg, Torsten

Content aside

  • vor 5 JahrenZuletzt aktiv
  • 3Antworten
  • 1718Ansichten