Hallo Notes-Gemeinde,
in unserer "ToDo"-Datenbank stellen mehrere Kollegen verschiedene "Aufträge" ein, wer im Team was bis wann zu tun hat. Nun möchte der Mitarbeiter über Änderungen in manchen seiner Aufträge informiert werden, wenn einer an seinem Auftrag etwas ändert. (Datenschutz, Persönlichkeitsrechte usw. sind geklärt). Dazu habe ich in der Maske ein Feld "bitte bei Änderung informieren > ja" ein- und eine Ansicht aufgebaut:
Spalte1: Zeitstempel letzte Änderung
Spalte2: wer ist für den Auftrag zuständig
Spalte3: wer hat zuletzt dran geändert (über @Subset($UpdatedBy; -1)
Spalte4: Feld"bitte bei Änderung informieren = ja"
Nun soll ein täglicher Agent über die Ansicht laufen: "wenn ein Eintrag in der Ansicht drin & "bitte bei Änderung informieren"=ja, dann sende Mail an Auftragsinhaber mit DocLink. Der Code:
zuständig := @DbColumn("":"";"":"";"(ÄnderungsInfo)";2);
letzter := @DbColumn("":"";"":"";"(ÄnderungsInfo)";3);
Info :=@DbColumn("":"";"":"";"(ÄnderungsInfo)";4);
sende_an := @MailSend(Auftrag_zuständig;"";"";"Änderung deines Auftrags";"Der Auftrag: "+Auftrag_kurz+" wurde von "+letzter + " bearbeitet:";[IncludeDoclink]);
@If(
zuständig != letzter & Info!="";sende_an;
"")
>>> Der Agent verursachte mehrere hundert von falschen MailSends, obwohl nur eine hätte kommen dürfen!? <<<
Was mach ich falsch, wo liegt der Denkfehler? Vielen Dank für Eure Hilfe!
Danke für die prompte Antwort!
Nun habe ich die Ansicht auf "Änderungsinfo = Ja" beschränkt, somit habe ich in der Ansicht nur diejenigen Einträge, die auch tatsächlich eine Änderungsinfo-Mail bekommen sollen.
Dann habe ich das MailSend mal zum Test rausgenommen und durch nen Prompt ersetzt:
zuständig := @DbColumn("":"";"":"";"(ÄnderungsInfo)";2);
letzter := @DbColumn("":"";"":"";"(ÄnderungsInfo)";3);
Info :=@DbColumn("":"";"":"";"(ÄnderungsInfo)";4);
InfoAn := @DbColumn("":"";"":"";"(ÄnderungsInfo)";5);
@Prompt([Ok];"Werte" ; zuständig + " / " + letzter + " / " + Info + " / " + InfoAn);
Der Prompt zeigt NICHT die Namen an, die ich in der Ansicht sehe, sondern andere Namen? Mysteriös, das...
So kanns gehen, wenn man im Thread nur unvollständig postet....
Das war mein ursprünglicher Code:
zuständig := @DbColumn("":"";"":"";"(ÄnderungsInfo)";2);
letzter := @DbColumn("":"";"":"";"(ÄnderungsInfo)";3);
Info :=@DbColumn("":"";"":"";"(ÄnderungsInfo)";4);
InfoAn := @DbColumn("":"";"":"";"(ÄnderungsInfo)";5);
sende_an := @MailSend(ÄnderungsInfoAn;"";"";"Änderung deines Auftrags";"Der Auftrag: "+Auftrag_kurz+" wurde von "+letzter + " bearbeitet:";[IncludeDoclink]);
@If(
zuständig != letzter & Info!="";sende_an;
"");
Die Ansicht brauche ich dafür, daß man täglich informiert wird, wer an "meinem" Auftrag rumschreibt.
"Deine Bedingungen" wären nämlich dann:
"Wenn das Dokument heute geändert, und zwar nicht von mir, sondern jemand anders, dann sende Mail", darum:
@If( zuständig != letzter & Info!="";sende_an; ... über die Ansicht, weil dann der Agent nicht auf 8.935 Einträgen, sondern auf 20 läuft...
"...völlig falsch ...." , "...Quatsch..." - ihr habt ja Recht!? Ihr müßt mich ja für den NPVG (=Notesprogrammierervolltrottel) halten.... :)
Somit verzichte ich auf die Ansicht, setze den Agent auf "alle neuen und geänderten Dokumente" und fülle den Agent mit diesem Code:
Heute := @Today;
Zugriff := @Accessed;
zuständig := Auftrag_zuständig;
letzter := @Name([CN];@Subset($UpdatedBy; -1));
@If(
Heute=Zugriff & zuständig != letzter & ÄnderungsInfoAn!="";
@MailSend(ÄnderungsInfoAn;"";"";"Änderung des Auftrags";"Der Auftrag: < "+Auftrag_kurz+" > wurde von "+letzter + " bearbeitet:";[IncludeDoclink]);
"");
Besser so?