Autor Thema: SendTo aus mehreren Feldern befüllen  (Gelesen 2966 mal)

Offline Sommersprosse

  • Senior Mitglied
  • ****
  • Beiträge: 296
  • Geschlecht: Weiblich
SendTo aus mehreren Feldern befüllen
« am: 20.06.18 - 14:22:19 »
Ich steh irgendwie auf dem Schlauch...

Wir haben eine Datenbank in der Protokolle von Meetings angelegt werden.
In der ersten Maske (Protokoll) werden die Teilnehmer eingetragen. Hierfür gibt es die Felder Participant und CopyTo.

Die einzelnen Protokolleinträge werden über eine zweite Maske eingetragen, hier gibt es ein Feld Responsible (hresponsible).

in der ersten Anforderung die ich hatte sollte der Moderator des Meetings die Möglichkeit per Button haben, eine Mail an alle Verantwortlichen (hresonsible) aus dem gesamten Protokoll zu verschicken.

Das hat auch wunderbar funktioniert...


Sub Click(Source As Button)
   
   Dim ws As New NotesUIWorkspace
   Dim session As New NotesSession
   Dim dc As NotesDocumentCollection
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Dim maildoc As NotesDocument
   Dim bodyitem As NotesRichTextItem
   Dim senddoc As NotesItem
   Dim mailconf As NotesDocument
   Dim mailrecip As notesitem
   Dim view As NotesView
   Dim docParent As NotesDocument
   Dim responsible As NotesItem
   Dim strUnid As String
   Dim MainID As String
   Dim docnext As NotesDocument
   Dim currentdoc As NotesUIDocument
   
   Set db = session.CurrentDatabase
   Set dc = db.UnprocessedDocuments   
   Set view = db.getview("EmbeddedProtocolEntry")
   
   Set docnext = view.GetFirstDocument
   Set refdoc = ws.CurrentDocument.Document
   namen = doc.r_mitarbeiter_abt
   
   
   MainID = refdoc.Getitemvalue("fm_minutes_DocID")(0)
   
   While Not (docnext Is Nothing)
      strUnid = docnext.Getitemvalue( "db_detail_doc_id" )(0)
      If Not docnext.HasItem("senddoc") Then
         If docnext.GetItemValue("senddoc")(0)="" Then
            If Trim (strUnid) = Trim (MainID) And Not docnext.hresponsible(0) = "" Then
               Set maildoc = New NotesDocument (db)
               maildoc.form="Memo"
               maildoc.principal="New Job available"
               Call maildoc.Replaceitemvalue("Subject",docnext.Getitemvalue("hTopic")(0))
               Call maildoc.Replaceitemvalue("sendto",docnext.Getitemvalue("hresponsible")(0))
'               Call maildoc.ReplaceItemValue("sendto",refdoc.Getitemvalue("Participant")(0))   
               Call maildoc.ReplaceItemValue("Copyto",refdoc.Getitemvalue("CopyTo")(0))
               Set bodyitem=maildoc.CreateRichTextItem("Body")
               bodyitem.AppendText "New Job for Meeting: "  & refdoc.title (0) & "  please click attached link to open --> "
               Call bodyitem.AppendDocLink( docnext, "" ) 
               Set senddoc = docnext.Replaceitemvalue("senddoc",1 )
               Call docnext.Save(True,False)
               maildoc.Send (False)
            End If
         End If
      End If
      
      Set docnext = view.GetnextDocument (docnext)
   Wend
   
End Sub


Jetzt kam die Anforderung die Teilnehmer ebenfalls mit benachrichtigen zu können,wenn neue Einträge erstellt werden.
Ich hatte es erst so versucht wie im Script ersichtlich...

               Call maildoc.Replaceitemvalue("sendto",docnext.Getitemvalue("hresponsible")(0))
'               Call maildoc.ReplaceItemValue("sendto",refdoc.Getitemvalue("Participant")(0))   
               Call maildoc.ReplaceItemValue("Copyto",refdoc.Getitemvalue("CopyTo")(0))

Aber mit der zweiten Zeile überschreibe ich mir den Wert des ersten Replaceitemvalue..
Irgendwie fehlt mir der Ansatz wie ich das in ein Arry bekomme o.ä. das beide Felder ausgelesen werden und in eins geschrieben werden.
Mache das wahrscheinlich zu selten  :-:...

Ihr habt mir bestimmt einen Tipp.
Vielen Dank Euch.
Gruß Ulli

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: SendTo aus mehreren Feldern befüllen
« Antwort #1 am: 20.06.18 - 14:47:04 »
NotesItem.AppendToTextList

Offline Sommersprosse

  • Senior Mitglied
  • ****
  • Beiträge: 296
  • Geschlecht: Weiblich
Re: SendTo aus mehreren Feldern befüllen
« Antwort #2 am: 20.06.18 - 14:59:09 »
Danke für den Gedankenanstoß.

Werde ich entsprechend anpassen, sollte ich hinbekommen  :)
Gruß Ulli

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: SendTo aus mehreren Feldern befüllen
« Antwort #3 am: 20.06.18 - 15:17:05 »
Noch eine andere Variante:
maildoc.SendTo = Evaluate ("hresponsible : Participant", maildoc)

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.873
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: SendTo aus mehreren Feldern befüllen
« Antwort #4 am: 21.06.18 - 12:01:15 »
oder rein LotusScript:
Code
Call maildoc.Replaceitemvalue("sendto",Fulltrim( ArrayUnique( ArrayAppend( docnext.Getitemvalue("hresponsible")(0),refdoc.Getitemvalue("Participant")(0) ) ) ) )

oder doch so:
Code
Dim varSendTo(1) as String
varSendTo(0) = docnext.Getitemvalue("hresponsible")(0)
varSendTo(1) = refdoc.Getitemvalue("Participant")(0)
Call maildoc.Replaceitemvalue("sendto", varSendTo )
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: SendTo aus mehreren Feldern befüllen
« Antwort #5 am: 21.06.18 - 17:34:06 »
Auch ja: Ein Coding Contest  ;)

Noch eine Variante:

maildoc.SendTo = Split (docnext.GetItemValue ("hresponsible")(0) & "," & refdoc.GetItemValue ("Participant")(0), ",")

Das ist aber genauso blauäugig oder Kinderkram wie Torstens zweitgenannte Methode: Es gibt keine Berücksichtigung, dass irgendwann / irgendwer mal Mehrfachwerte für hresponsible und / oder Participant zulässt (wer schaut schon den ganzen Applikationscode durch, um Risiken und Nebenwirkungen zu erkennen ;-)

Daher mit etwas mehr Aufwand:

maildoc.SendTo = Split (Join (docnext.GetItemValue ("hresponsible"), ",") & "," & Join (refdoc.GetItemValue ("Participant"), ","), ",")

Bernhard

Offline Sommersprosse

  • Senior Mitglied
  • ****
  • Beiträge: 296
  • Geschlecht: Weiblich
Re: SendTo aus mehreren Feldern befüllen
« Antwort #6 am: 22.06.18 - 07:26:33 »
Hallo Bernhard,

das mit den Mehrfachwerten ist ein Argument, die werde ich immer wieder haben.

Wie das in der IT so ist musste ich wieder unterbrechen und kam nicht mehr dazu das einzubauen...
Werde ich aber angehen.
Ich danke euch für Eure Hilfe schon im voraus.
Wie immer zuverlässig und gut.  :)

Sollte ich nicht klar kommen, melde ich mich noch mal.
Danke!!
Gruß Ulli

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz