Autor Thema: nochmal: Mail per Agent schicken - diesmal aus einer Auswahl von Dokumenten.....  (Gelesen 1439 mal)

Offline Wiesel

  • Aktives Mitglied
  • ***
  • Beiträge: 188
  • Geschlecht: Weiblich
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!

Offline rar

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 856
  • Geschlecht: Männlich
  • Des passt scho
    • click
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
†090620141300

Offline Wiesel

  • Aktives Mitglied
  • ***
  • Beiträge: 188
  • Geschlecht: Weiblich
 :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  ;)

Offline PsychoDad

  • Frischling
  • *
  • Beiträge: 36
  • Geschlecht: Männlich
  • ...und wer weint um mich? Argentinien!?
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
Die Titanic wurde von Profis gebaut - die Arche Noah von einem Amateur...

Offline Wilhelm

  • Aktives Mitglied
  • ***
  • Beiträge: 214
  • Geschlecht: Männlich
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
Ich will endlich die F9-Taste in diesem Forum haben!!!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz