Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Wiesel am 24.08.05 - 15:00:32
-
Hallo!
Jetzt stehe ich vor einer neuen Sache, die sich mit meinem Kenntnisstand nicht bewältigen lässt (wenn´s denn überhaupt geht). ???
Ich möchte mittels einem periodischen Agenten eine Mail verschicken.
In einer Ansicht habe ich eine Auswahl von Dokumenten die nach dem Vorgesetzten kategorisiert sind.
Nun soll der Vorgesetzte nicht jede Woche pro Dokument eine Mail bekommen, sondern nach Möglichkeit nur eine als Anreiz in die Datenbank zu schauen.
Beispiel:
Vorgesetzter Müller
Dok1
Dok2
Dok3
Vorgesetzter Meier
Dok4
Dok5
Jetzt soll der Müller keine 3 Mails bekommen, sondern nur eine und der Meier auch nur eine und keine 2.
Mein Scirpt sieht im Agent (periodisch, alle Dokumente) zur Zeit so aus:
Sub Initialize
Dim session As NotesSession
Dim db As NotesDatabase
Dim docMemo As NotesDocument
Dim doc As NotesDocument
Dim view As NotesView
Dim item As NotesItem
Dim rtBody As NotesRichTextItem
Dim varEmpfänger As Variant
Set session = New NotesSession
Set db = session.CurrentDatabase
'auf das erste Dok der View zugreifen
Set View = DB.GetView("Ueberfaelliges")
Set Doc = View.GetFirstDocument
Do Until Doc Is Nothing
varEmpfänger = Doc.Chief(0)
Set docMemo = db.CreateDocument
docMemo.Form = "Memo"
docMemo.SendTo = varEmpfänger
docMemo.Subject = "Überfällige Dokumente"
Set rtBody = docMemo.CreateRichTextItem("Body")
Call rtBody.AppendText("Bitte in die Datenbank XY schauen")
Call docMemo.Send(False)
Set Doc = View.GetNextDocument(Doc)
Loop
End Sub
Damit wird aber pro Dokument eine Mail verschickt.
P.S.: Danke noch mal an Willi für den Mail-Code!
-
Do musst eigentlich nur abfragen, ob bei dem neuen Doc der chief der gleiche ist. Wenn ja dann näxtes doc, sonst mail.
Do Until Doc Is Nothing
if varEmpfänger <> Doc.Chief(0) then
varEmpfänger = Doc.Chief(0)
.....
end if
Set Doc = View.GetNextDocument(Doc)
Loop
HTH
-
:D
Sehr schön!
Eigentlich hatte ich das eben auch schon versucht....aber da war der Script auch noch leicht anders..
Dann war ich ja gar nicht soooo schlecht!
Ich danke Dir! Du hast mich gerettet ;)
-
Hallo!
Solche "einfachen" Probleme kannst Du auch mit der einfachen Aktion "Infobrief Übersicht versenden" sehr schön lösen. Probiere das doch einfach den Effekt aus, wenn Du bei dem Empfänger keinen Namen sondern ein Feld ( in Deinem Fall 'Chief' einträgst...
Gruß
Frank
-
Hi,
Dein ursprünglicher Code sieht schon mal gar nicht so schlecht aus. Ein paar Anmerkungen zu Deiner Variable varEmpfänger:
Man sollte in Variablen (und Feldnamen) wenn möglich Abstand halten von deutschen Sonderzeichen. Also: varEmpfaenger
Desweiteren handelt es sich bei dem Wert den Du einlesen willst um Text. Deshalb solltest Du das Ergebnis nicht in einem Varianten sondern in einem String auffangen: Also strEmpfaenger.
Noch besser ist allerdings folgendes: Du brauchst aus dem Dokument nur ein einziges Item für Deine Verarbeitung welches Du auch noch in der Ansicht findest. Die wesentlich performantere Lösung ist hier, wenn Du Dir den Empfänger über doc.ColumnValues(0) holst, da hier nur der Ansichtswert gelesen wird. Das ist in der Hilfe beschrieben.
Gruß
Willi