Domino 9 und frühere Versionen > ND6: Entwicklung
Täglicher Agent - Datumvergleich - Email senden
Amelia:
Hallo Zusammen,
ich soll für eine Abteilung eine Lotus Notes Datenbank erstellen(Azubiprojekt), bei der man Geräte verwalten kann, quasi eine "Verleihdatenbank". Diese ist bereits erstellt und funktioniert soweit.
In den Dokumenten werden Geräteinformationen abgespeichert, unter anderem Geräte Typ, an wen und wie lange es verliehen wird. Die Info wie lange es verliehen wird, wird ein einem Datumsefld ausgewählt(Feld:"verleihdatum").
Die "Verleiher" möchten nun dass eine automatische Erinnerungsmail kommt, sobald das aktuelle Datum sieben Tage vor dem Abgabe Termin ist, also immer eine Woche vor Ablauf eine Erinnerung.
Ich für diese Aufgabe leider noch keine passende Hilfe gefunden. Hier im Forum gab es ein fast identisches Problem, habe auch die Lösungsvorschläge versucht die dort gegeben wurden.
(http://atnotes.de/index.php?action=printpage;topic=26094.0)
Leider kam ich bisher auf keine funktionierende Lösung. Daher nun hier meine Frage an euch ob ihrmir weiterhelfen und Tipps geben könnt wo meine Fehler liegen und was ich anders machen müsste.
Ich poste euch einfach mal was ich bisher habe (bitte behachten das ich zum ersten mal mit Notes arbeite und auch nicht wirklich die Zeit habe mich viel damit zu beschäftigen :-[)
Das habe ich im Agent stehen:
SELECT @All;
datum := @Text(@GetField("verleihdatum"));
name := @Name([CN];@GetField("an"));
details := + @NewLine + @Text(
+ @NewLine + "Anbei Ihre Informationen zu dem Gerät:" + @NewLine + @NewLine + "-------------------------------------------------" +@NewLine + "Gerät: " + @GetField("neuGerät") + " " + @GetField("Workstationfeld") + @GetField("Notebookfeld") + @GetField("Sonstigefeld") + " (" + @GetField("neuHostname") + ")" + @NewLine +
"-------------------------------------------------" + @NewLine +
"Verliehen bis: " + datum + @NewLine +
"-------------------------------------------------" + @NewLine +
"Sonstige Infos: " + @Text(@GetField("infos")) + @NewLine +
"-------------------------------------------------" + @NewLine
);
emailsenden := @MailSend(@GetField("an"); @GetField("verleiher");"";"Erinnerung zur Rückgabe";"";"Hallo Frau/Herr " + name + ","+ @NewLine + @NewLine+ "Bitte denken Sie daran Ihr geliehenes Gerät zuzückzugeben." + @NewLine +details);
@If(
@Today <= @Adjust(datum;0;0;-7;0;0;0) & MailSent != "1";emailsenden;
@Today <= @Adjust(datum;0;0;-7;0;0;0) & MailSent != "1";
FIELD MailSent := "1";
"")
Mir ist bewusst das der Code nicht gerade das gelbe von Ei ist, gerade was die Feldnamen betrifft. Aber ich hoffe ihr könnt trotzdem verstehen was ich meine.
Ich würde mich über Lösungsansätze freuen.
Vielen Dank schon mal im Vorraus.
LG Amelia
ascabg:
Hallo,
Und was funktioniert nicht bzw. wo haengt es denn jetzt?
In dem verlinkten Post ist doch die Loesung schon enthalten.
Andreas
Amelia:
Das hab ich natülrich vergessen aufzuschreiben, sorry.
Also wenn ich den Agent teste/starte, geht er durch alle Dokumente durch, die fi Abfrage greift quasi nicht? :-:
Ich habe mir den verlinkten Post mehrmals duchgelesen, auch meine anderen Azubikollegen haben mit drüber geschaut, aber wir kommen nicht auf die Lösung was bei uns falsch ist.
Deswegen ja meine Frage an euch ob ihr seht wo der Fehler liegt, und was ich evtl ändern müsste.
Tode:
Also warum Du das hier
--- Code: ---datum := @Text(@GetField("verleihdatum"));
--- Ende Code ---
tust, ist mir erst mal schleierhaft: wie willst Du nachher mit einem Text weiterarbeiten, Du brauchst doch ein datum. Damit fallen dann die Zeilen hier
--- Code: ---@If(
@Today <= @Adjust(datum;0;0;-7;0;0;0) & MailSent != "1";emailsenden;
@Today <= @Adjust(datum;0;0;-7;0;0;0) & MailSent != "1";
FIELD MailSent := "1";
"")
--- Ende Code ---
auf die Schnauze... Mal ganz abgesehen davon, dass "emailsenden" einfach nur eine Variable ist, der das Ergebnis des Mailsend vorher zugewiesen wird... Man kann in der Formelsprache keinen Code "Zwischenparken". Hier
--- Code: ---emailsenden := @MailSend(@GetField("an"); @GetField("verleiher");"";"Erinnerung zur Rückgabe";"";"Hallo Frau/Herr " + name + ","+ @NewLine + @NewLine+ "Bitte denken Sie daran Ihr geliehenes Gerät zuzückzugeben." + @NewLine +details);
--- Ende Code ---
wird die Mail bereits versendet...
Amelia:
Weil ich dachte das man es umwandeln muss, ich hatte mir den Wert immer per prompt ausgeben lassen und da gab es bei dem Datumsfeld immer leichte Probleme.
Also müsste es dann quasi einfach so sein:
--- Code: ---datum := @GetField("verleihdatum");
--- Ende Code ---
Okay, dass man das nicht so zuweisen kann wusste ich nicht. ich hatte es gemacht, weil ich mir nicht sicher war ob die @mailsend formel in der if Abfrage stört und diese daher nicht funktioniert.
Quasi nun so:
--- Code: ---@If(
@Today <= @Adjust(datum;0;0;-7;0;0;0) & MailSent != "1";@MailSend(@GetField("an"); @GetField("verleiher");"";"Erinnerung zur Rückgabe";"";"Hallo Frau/Herr " + name + ","+ @NewLine + @NewLine+ "Bitte denken Sie daran Ihr geliehenes Gerät zuzückzugeben." + @NewLine +details);
@Today <= @Adjust(datum;0;0;-7;0;0;0) & MailSent != "1";
FIELD MailSent := "1";
"")
--- Ende Code ---
Vielen Dank schon mal für die Antworten.
Ist denn der Grundaufbau meines Agenten richtig?
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln