Autor Thema: Dokumentenverknüpfung in Mail einfuegen?  (Gelesen 2050 mal)

Offline mh70220

  • Aktives Mitglied
  • ***
  • Beiträge: 125
  • Geschlecht: Männlich
    • Meine HP
Dokumentenverknüpfung in Mail einfuegen?
« am: 26.04.05 - 14:56:49 »
Hallo zusammen,

im folgenden Script versuche ich im "Abschnitt 1:" eine Dokumentenverknuepfung zum aktuellen Dokument mitzusenden. Funktioniert aber nicht. Kann mal jemand sich das Script anschauen und mir vielleicht sagen wo der fehler ist.

Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim workspace As New NotesUIWorkspace
   Dim doc As NotesDocument
   Dim doc1 As NotesDocument
   Dim rtitem As NotesRichTextItem
   Dim uidoc As NotesUIDocument
   Dim status1 As String
   Dim db As NotesDatabase
   Dim db1 As NotesDatabase
   Dim mail As String, mail1 As String, mail2 As String, mail3 As String, mail4 As String, statusab As String, supier As String, abgrund As String
   Set db1 = session.CurrentDatabase
   Set uidoc = workspace.CurrentDocument
   Set doc = uidoc.Document
   Set doc1 = New NotesDocument ( db1)
   Set rtitem = New NotesRichTextItem( doc1, "Body" )
   
   abgrund = uidoc.fieldgettext("DirektVorgesetzBemerk") +" " + uidoc.fieldgettext("VorgesetzBemerk") +" " +  uidoc.fieldgettext("LeiterBemerk")
   
   status1 = uidoc.fieldgettext("status")
   
   If uidoc.IsNewDoc Then 'wenn neues Doc, dann vor unterschreiben erst speichern
      Call uidoc.Save
   End If
   If doc.Isnewnote Then 'prüfen ob geändert, dann vor unterschreiben erst speichern
      Call doc.Save( False, True )
   End If
   Call doc.Sign
   Call doc.Save( False, True )
   
   Set db = session.CurrentDatabase
   Set doc = New NotesDocument( db )
   
   
   mail = uidoc.fieldgettext("ImmediateSuperior")
   mail1 = uidoc.fieldgettext("Superior")
   mail2 = uidoc.fieldgettext("Director")
   mail3 = uidoc.fieldgettext("CreationBy")
   mail4 = uidoc.fieldgettext("currentuser")
   statusab = uidoc.fieldgettext("statusabgelehnt")
   supier = uidoc.fieldgettext("ImmediateSuperior")
   
   
   If statusab = "1" Then
      Call uidoc.fieldsettext("status", "5")
      doc.Form = "Memo"
      doc.SendTo = mail3
      doc.Subject = "Ihr Urlaubsantrag wurder abgelehnt von " + mail4
      doc.Body = "Aus folgenden Grund wurde der Antrag abgelehnt:" + " " + abgrund
      Call doc.Send( False )
      Goto ausgang
   End If
   
   Call doc.Sign
   Call doc.Save( False, True )
   
   
   If Status1 = "0" Then
      Goto Abschnitt1
   Else
      If Status1 = "1" Then
         Goto Abschnitt2
      Else
         If Status1 = "2" Then
            Goto Abschnitt3
         End If
      End If
   End If
   
Abschnitt1:
   
   If mail = "" Then
      Goto Ausgang
   End If
   
   doc.Form = "Memo"
   doc.SendTo = mail
   doc.Subject = "Ein neuer Urlaubsantrag wartet auf Ihre Bearbeitung"
   Call rtitem.AppendDocLink(db1 , "Dokumentverknüpfung zu Urlaubsantrag " )
   
   Call doc.Send( False )
   Goto Ausgang
   
   
Abschnitt2:
   
   
   If mail1 = "" Then
      Goto Ausgang
   End If
   doc.Form = "Memo"
   doc.SendTo = mail1
   doc.Subject = "Ein neuer Urlaubsantrag wartet auf Ihre Bearbeitung"
   Call doc.Send( False )
   
   Goto Ausgang
   
Abschnitt3:
   
   
   If mail2 = "" Then
      Goto Ausgang
   End If
   doc.Form = "Memo"
   doc.SendTo = mail2
   doc.Subject = "Ein neuer Urlaubsantrag wartet auf Ihre Bearbeitung"
   Call doc.Send( False )
   
   Goto Ausgang
   
   
Ausgang:
   
   Call uidoc.close
   
End Sub


Danke

Matthias
Notes 5.05
Server 5.05
Windows 2000

Driri

  • Gast
Re: Dokumentenverknüpfung in Mail einfuegen?
« Antwort #1 am: 26.04.05 - 15:01:44 »
Habs jetzt nur überflogen :

1) Warum wird db1 bei AppendDocLink übergeben ?

2) Wenn der DocLink auf doc1 verweisen soll, muß das DOkument vorher gespeichert sein. Ich hab jetzt kein Save für doc1 gesehen.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Dokumentenverknüpfung in Mail einfuegen?
« Antwort #2 am: 26.04.05 - 15:08:55 »
Da ist noch mehr verquer.

doc1 wird nur instantiiert als neues Dokument und dann ein RTItem generiert. In dieses wird der DocLink gehangen. Sicherlich soll eigentlich dieses Dokument gesendet werden, statt dessen erfolgen alle anderen Aktionen mit doc. doc hat natürlich auch nicht RTItem.
Weiterhin ist es nicht gut, so wild Front- und Backend-Bezüge auf ein Dokument zu mischen - der Mailversand sollte komplett im Backend erfolgen (was via doc1 ja gegeben wäre, wenn der gute Vorsatz nicht wieder abgebrochen worden wäre).

Die vielen Gotos machen das Programm schwer nachvollziehbar und erschweren später die Wartung.

Bernhard

Offline mh70220

  • Aktives Mitglied
  • ***
  • Beiträge: 125
  • Geschlecht: Männlich
    • Meine HP
Re: Dokumentenverknüpfung in Mail einfuegen?
« Antwort #3 am: 26.04.05 - 15:32:22 »
OK,

ich habe gerade mal aus dem Script alles das entfernt, was ich fuer die Dokumenten verknuepfung reingeschrieben hatte.

Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim workspace As New NotesUIWorkspace
   Dim doc As NotesDocument
   Dim uidoc As NotesUIDocument
   Dim status1 As String
   Dim db As NotesDatabase
   
   Dim mail As String, mail1 As String, mail2 As String, mail3 As String, mail4 As String, statusab As String, supier As String, abgrund As String
   
   Set uidoc = workspace.CurrentDocument
   Set doc = uidoc.Document
   
   
   abgrund = uidoc.fieldgettext("DirektVorgesetzBemerk") +" " + uidoc.fieldgettext("VorgesetzBemerk") +" " +  uidoc.fieldgettext("LeiterBemerk")
   
   status1 = uidoc.fieldgettext("status")
   
   If uidoc.IsNewDoc Then 'wenn neues Doc, dann vor unterschreiben erst speichern
      Call uidoc.Save
   End If
   If doc.Isnewnote Then 'prüfen ob geändert, dann vor unterschreiben erst speichern
      Call doc.Save( False, True )
   End If
   Call doc.Sign
   Call doc.Save( False, True )
   
   Set db = session.CurrentDatabase
   Set doc = New NotesDocument( db )
   
   
   mail = uidoc.fieldgettext("ImmediateSuperior")
   mail1 = uidoc.fieldgettext("Superior")
   mail2 = uidoc.fieldgettext("Director")
   mail3 = uidoc.fieldgettext("CreationBy")
   mail4 = uidoc.fieldgettext("currentuser")
   statusab = uidoc.fieldgettext("statusabgelehnt")
   supier = uidoc.fieldgettext("ImmediateSuperior")
   
   
   If statusab = "1" Then
      Call uidoc.fieldsettext("status", "5")
      doc.Form = "Memo"
      doc.SendTo = mail3
      doc.Subject = "Ihr Urlaubsantrag wurder abgelehnt von " + mail4
      doc.Body = "Aus folgenden Grund wurde der Antrag abgelehnt:" + " " + abgrund
      Call doc.Send( False )
      Goto ausgang
   End If
   
   Call doc.Sign
   Call doc.Save( False, True )
   
   
   If Status1 = "0" Then
      Goto Abschnitt1
   Else
      If Status1 = "1" Then
         Goto Abschnitt2
      Else
         If Status1 = "2" Then
            Goto Abschnitt3
         End If
      End If
   End If
   
Abschnitt1:
   
   If mail = "" Then
      Goto Ausgang
   End If
   
   doc.Form = "Memo"
   doc.SendTo = mail
   doc.Subject = "Ein neuer Urlaubsantrag wartet auf Ihre Bearbeitung"
   
   
   Call doc.Send( False )
   Goto Ausgang
   
   
Abschnitt2:
   
   
   If mail1 = "" Then
      Goto Ausgang
   End If
   doc.Form = "Memo"
   doc.SendTo = mail1
   doc.Subject = "Ein neuer Urlaubsantrag wartet auf Ihre Bearbeitung"
   Call doc.Send( False )
   
   Goto Ausgang
   
Abschnitt3:
   
   
   If mail2 = "" Then
      Goto Ausgang
   End If
   doc.Form = "Memo"
   doc.SendTo = mail2
   doc.Subject = "Ein neuer Urlaubsantrag wartet auf Ihre Bearbeitung"
   Call doc.Send( False )
   
   Goto Ausgang
   
   
Ausgang:
   
   Call uidoc.close
   
End Sub

Kann jemand das Script so erweitern, das in Abschnitt 1 - 3 in der Mail eine Verknuepfung zum aktuellen Dokument mitgeschickt wird.

Die vielen "GoTo" gefallen mir auch noch nicht und werde auch daran noch arbeiten.

Danke schon jetzt.

Matthias
Notes 5.05
Server 5.05
Windows 2000

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Dokumentenverknüpfung in Mail einfuegen?
« Antwort #4 am: 26.04.05 - 16:12:22 »
Hi,

dein Code glänzt nicht gerade vor Übersichtlichkeit, aber ich versuche mal dich in die richtige Richtung zu lenken.

Als erstes brauchst du für dein Mail eine andere Variable als doc, denn sonst hast du kein Zugriff mehr für den Link.

...
 Dim newdoc As NotesDocument
 Dim rtitem As NotesRichtextItem
...

...
 Set db = session.CurrentDatabase
 Set newdoc = New NotesDocument( db )
...   
   
...
Abschnitt1:
   
 If mail = "" Then
    Goto Ausgang
 End If
   
 newdoc.Form = "Memo"
 newdoc.SendTo = mail
 newdoc.Subject = "Ein neuer Urlaubsantrag wartet auf Ihre Bearbeitung"
   
 'RTF-Feld anlegen
 Set rtitem = New NotesRichTextItem( newDoc, "Body" )
 'Link zum Dokument einfügen
 Call rtitem.AppendDocLink(doc, "")

 Call newdoc.Send( False )
 Goto Ausgang
...


Ich hab's nur mal exemplarisch für einen Abschnitt gemacht. Das auf die anderen Abschnitte anzuwenden, sollte kein Problem darstellen.

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Marinero Atlántico

  • Gast
Re: Dokumentenverknüpfung in Mail einfuegen?
« Antwort #5 am: 26.04.05 - 16:25:03 »
Hi,

dein Code glänzt nicht gerade vor Übersichtlichkeit,
Ich würde das eher einen terroristischen Anschlag auf die Nerven sämtlicher Leute bezeichnen, die später in diesem code etwas ändern/fixen müssen.

Warum kaufen sich Leute wie du nicht einfach mal ein Buch wie dieses:
http://www.amazon.de/exec/obidos/ASIN/0735619670/qid=1114525403/sr=8-2/ref=sr_8_xs_ap_i2_xgl/028-9496007-5489363
(von Microsoft Press btw.)
Von der ersten und ausreichenden Ausgabe, gibt es auch eine deutsche Übersetzung.

Gruß Axel

Offline mh70220

  • Aktives Mitglied
  • ***
  • Beiträge: 125
  • Geschlecht: Männlich
    • Meine HP
Re: Dokumentenverknüpfung in Mail einfuegen?
« Antwort #6 am: 26.04.05 - 16:29:45 »
erst mal danke fuer die Hilfe. Funktioniert wunderbar.

Und das mit dem Buch werde ich wohl auch machen.  ;D

Matthias
Notes 5.05
Server 5.05
Windows 2000

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Dokumentenverknüpfung in Mail einfuegen?
« Antwort #7 am: 26.04.05 - 17:03:53 »
Ich würde das eher einen terroristischen Anschlag auf die Nerven sämtlicher Leute bezeichnen, die später in diesem code etwas ändern/fixen müssen.

Ganz so krass wollte ich es nicht ausdrücken.  ;D

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz