Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Colli am 10.02.06 - 13:20:46

Titel: MailSend-Problem II
Beitrag von: Colli am 10.02.06 - 13:20:46

Sub Querysave(Source As Notesuidocument, Continue As Variant)
   Dim session As New NotesSession
   
   If source.IsNewDoc Then
      Set db = session.CurrentDatabase
      Set mail = db.CreateDocument
      Set rtitem = mail.CreateRichTextItem("Body")
      
      mail.form = "Memo"
      mail.Subject = "Neuer Antrag"
      mail.SendTo = source.FieldGetText("MailEmpfaenger")
      
      Call rtitem.AppendText("In der Lotus Notes Datenbank wurde ein neuer Antrag eingereicht. Link zum Dokument-->")
      Call rtitem.AppendDocLink(source.Document,"")
      Call mail.Send(False)
      
   End If
End Sub


Dieses Script sorgt dafür, dass eine Mail an den Empfänger geschickt wird, der im Feld MailEmpfaenger eingetragen ist.

Nun kann es aber auch sein, dass kein Empfänger ausgewählt werden soll, das Feld ist somit leer. Wie kann ich das Script so ändern, dass die Bedingung abgeprüft wird? Kann man die If-Anweisung erweitern?
So in der Art:


Sub Querysave(Source As Notesuidocument, Continue As Variant)
   Dim session As New NotesSession
   
   If source.IsNewDoc & source.FieldGetText("MailEmpfaenger") <> "" Then
      Set db = session.CurrentDatabase
      Set mail = db.CreateDocument
      Set rtitem = mail.CreateRichTextItem("Body")
      
      mail.form = "Memo"
      mail.Subject = "Neuer Antrag"
      mail.SendTo = source.FieldGetText("MailEmpfaenger")
      
      Call rtitem.AppendText("In der Lotus Notes Datenbank wurde ein neuer Antrag eingereicht. Link zum Dokument-->")
      Call rtitem.AppendDocLink(source.Document,"")
      Call mail.Send(False)
      
   End If
End Sub
Titel: Re: MailSend-Problem II
Beitrag von: koehlerbv am 10.02.06 - 13:29:03
"&" ist der String-Concatenator, mach' daraus ein AND und es passt  ;)

Bernhard
Titel: Re: MailSend-Problem II
Beitrag von: Colli am 10.02.06 - 14:00:16
Danke! :D

Kann es sein, dass über dieses Script die Mail nur an eine Person geschickt werden kann? Mehrfachwerte zulassen hab ich im Feld drin, wenn ich aber mehrere Personen eintrage, dann kommt die Meldung: Mail kann nicht versendet werden, keine Entsprechung in Adressbüchern gefunden.
Titel: Re: MailSend-Problem II
Beitrag von: koehlerbv am 10.02.06 - 14:06:33
Die Empfänger müssen ein Array sein, kein skalarer String. Ein passendes Beispiel ist in der DesignerHelp.

Bernhard
Titel: Re: MailSend-Problem II
Beitrag von: Glombi am 10.02.06 - 14:16:15
Am einfachsten geht das mit den Mehrfachwerten, wenn Du das Backend-Dokuments verwendest. Da sieht dann so aus:

Sub Querysave(Source As Notesuidocument, Continue As Variant)
   Dim session As New NotesSession
dim doc as NotesDocument
set doc = Source.Document
   
   If source.IsNewDoc and doc.MailEmpfaenger(0) <> "" Then
      Set db = session.CurrentDatabase
      Set mail = db.CreateDocument
      Set rtitem = mail.CreateRichTextItem("Body")
     
      mail.form = "Memo"
      mail.Subject = "Neuer Antrag"
      mail.SendTo = doc.MailEmpfaenger
     
      Call rtitem.AppendText("In der Lotus Notes Datenbank wurde ein neuer Antrag eingereicht. Link zum Dokument-->")
      Call rtitem.AppendDocLink(doc,"")
      Call mail.Send(False)
     
   End If
End Sub


Andreas
Titel: Re: MailSend-Problem II
Beitrag von: koehlerbv am 10.02.06 - 14:20:21
Ach ja, die Empfänger stehen ja schon im Backend.
Noch zur Erläuterung: NotesUIDocument.FieldGetText liefert immer einen skalaren String zurück, Dein schönes Mehrfachwertefeld wird damit kaputt gemacht. Daher Andreas' Vorschlag.

Bernhard
Titel: Re: MailSend-Problem II
Beitrag von: Colli am 10.02.06 - 14:32:30
Danke. Klappt wunderbar.