Autor Thema: aus dem Querysave einen NotesDocLink per Mail verschicken ? es geht ned !  (Gelesen 2859 mal)

Offline Scotty67

  • Aktives Mitglied
  • ***
  • Beiträge: 146
...maaa ich gehe die Wände hoch...

Will über den querysave aus dem neu erzeugten dokument einen DocLink per Mail verschicken - bitte helft mir !!!

hier der entscheidende part im querysave

Notify:
   
   Dim docmail As New NotesDocument(db)
   docmail.Form="Memo"
   docmail.From=" Besuchsberichte Notifier"
   docmail.Principal=" Besuchsbericht Agent"
   docmail.Subject=" Besuchsbericht Datenbank"
   ' Notify Liste aufbauen
   Set uidoc = workspace.CurrentDocument
   Set doc=uidoc.document
   
   MailPrimary=doc.GetItemValue("SendTo")
   Mailcc=doc.GetItemValue("SendCc")
   
   Forall MailToReceipients In MailPrimary   
      'Msgbox MailToReceipients
      docmail.SendTo=MailToReceipients
      Set rtitem = New NotesRichTextItem(docmail,"Body")
      Set richStyle = session.CreateRichTextStyle
      Call rtitem.AddNewLine( 1 )
      richStyle.Bold = True
      Call rtitem.AppendStyle(richStyle)
      Call rtitem.AppendText( "Sie werden über nachstehendes neue/geänderte Dokument  in der  Besuchsbericht-Datenbank informiert :  " )
      'Set doc = uidoc.Document
      Call doc.Save(True,True)
      Set doc = uidoc.Document
      Call rtitem.AppendDocLink(doc,"der Link")
      Call rtitem.AddNewLine( 1 )
      Call rtitem.AddNewLine( 1 )
      richStyle.Bold = False
      Call rtitem.AppendStyle(richStyle)
      Call rtitem.AppendText( "firma XYZ " )
      Call docmail.Send(True)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Hat die Datenbank eine Vorgabeansicht?

Bernhard

BigWim

  • Gast
Code
Set uidoc = workspace.CurrentDocument
Set doc=uidoc.document 

ich meine mal gelesen zu haben, dass QuerySave ein ungünstiger Ort ist, weil Dokument zu diesem Zeitpunkt doch noch gar nicht gespeichert ist.

Wäre PostSave nicht angebrachter?

Markus

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Hannes speichert es im Code explizit, Markus.

Bernhard

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Kannst Du auch noch schreiben, was "ned geht"? Wird eine Mail verschickt und der Doclink fehlt, oder wird nichts verschickt? Gibt es Fehlermeldungen?

Mir ist aufgefallen, dass Du innerhalb der Forall-Schleife immer wieder ein neues Body-Item erzeugst und neu füllst. Ausserdem speicherst Du jedesmal und holst Dir das doc neu. Geschickter wäre doch, erst einmal das doc fertigzustellen (wenn es denn gespeichert werden muss, halt auch speichern, glaube aber nicht, dass das für den Doclink zwingend notwendig ist) das zu versendende Mail zu erzeugen (mit Body, Texten und Doclink) und dann in der Forall-Schleife nur den Empfänger auszutauschen und das Dokument zu versenden?

Offline Scotty67

  • Aktives Mitglied
  • ***
  • Beiträge: 146
hi leute ! hier mein feedback.

Also der sogenannte "Default-View" hat gefehlt, den hab ich mal festgelegt.
Dann hat mir der Ansatz von Markus mit dem  Postsave gut gefallen und dorthin hab ich jetzt
die Routine gelegt - und jetzt funkt es.

Interessant wäre noch ob es jetzt auch mit meinem ursprünglichen Ansatz geht, weil vom coding her hätte ich gemeint
es ist richtig !

danke - wie immer - ist unglaublich wie toll wie ihr mir immer zur seite steht - DANKE DANKE DANKE !!!

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Interessant wäre noch ob es jetzt auch mit meinem ursprünglichen Ansatz geht, weil vom coding her hätte ich gemeint es ist richtig !
Das hätte sicherlich funktioniert, somit war es "richtig", oder besser "nicht falsch", ich finde es aber "krautig", wie ich schon geschrieben hatte. Also auf unnötige doppelte Aktionen innerhalb einer Schleife zu verzichten, fände ich besser.

Hast Du auch abgefangen, dass die Mails nicht mehrfach rausgehen, wenn das Dokument mehrfach gespeichert wird (z.B. mit STRG+S)?

Offline Scotty67

  • Aktives Mitglied
  • ***
  • Beiträge: 146
@peter !  .....ohhh  :o doppelt gespeichert ? das höre ich jetzt zum ersten mal - was gilt's  zu beachten ?

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Wenn Du im Querysave oder Postsave eine Aktion ausführst, wird die immer ausgeführt, wenn das Dokument gespeichert werden soll, bzw. gespeichert wird. Ein geöffnetes Dokument kann vom Benutzer aber beliebig oft gespeichert werden (z.B. durch Drücken von STRG+S).

Deshalb solltest Du Dir in einer globalen Variablen merken, ob das Dokument gespeichert wurde und den Mailversand erst im Queryclose durchführen (also beim Schließen des Dokuments), falls das Dokument gespeichert wurde. Dann solltest Du noch überlegen, was passiert, wenn jemand das Dokument speichert und schließt, aber später erneut öffnet, bearbeitet, speichert und schließt.

Evtl. benötigst Du einen Status des Dokuments (z.B. "Dokument ist abgeschlossen"), erst wenn der erreicht wird, erfolgt der Mailversand, ein Bearbeiten des Dokuments ist danach nicht mehr möglich.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Wenn tatsächlich nur einmal gemailt werden soll, dann braucht man nur ein entsprechendes Item im Dokument zu speichern:
doc.MailSent = Now

Und der Mailversendeteil fragt als erstes dieses Item ab:
If Isdate (doc.MailSent (0)) = False Then ...

Quatsch ist aber auf jeden Fall noch die Forall-Schleife im Sendeteil - die treibt enormen Dummfug. Aber das hatte Peter ja auch schon erwähnt.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz