Hallo Jossa , hallo Forum,
ok, der Weg ist nun klar:
- Linkdaten im QueryOpen des Dokuments a holen
- Dokument b adressieren, Feld mit Attachment suchen
- Attachment öffnen.
Leider fehlt mir das knowhow, das Attachment zu öffnen. Hier der Code so weit.
Dim session As New NotesSession
Dim rti As NotesRichTextItem
Dim rtnav As NotesRichTextNavigator
Dim rtlink As NotesRichTextDocLink
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument()
Set rti = doc.GetFirstItem("Link")
Set rtnav = rti.CreateNavigator
If Not rtnav.FindFirstElement(RTELEM_TYPE_DOCLINK) Then
Messagebox "No doclinks in Link item",, "No doclinks"
Else
Set rtlink = rtnav.GetElement 'DocLink Objekt
End If
Dim doc2 As NotesDocument
Dim db2 As NotesDatabase
Set db2 = session.GetDatabase("","DB267.NSF")
Set doc2 = db2.getDocumentByUNID(rtlink.DocUNID) 'Elemente des DocLinks
Set rtitem = doc2.GetFirstItem( "Body" )
If rtitem Is Nothing Then
Messagebox "Kein Attachment vorhanden"
Else
Messagebox "Attachmant vorhanden"
End If
Gibt es vielleicht eine Möglichkeit das Attachment direkt zu öffnen, ohne es zu detachen?
Dank für jede Hilfe
Alexis
Hallo Forum,
Problem gelöst :-*. Danke für alle Beiträge und dem Forum, DIE Fundgrube schlechthin :D!
Wen's interessiert hier der Code:
Sub Postopen(Source As Notesuidocument)
Dim session As New NotesSession
Dim rti As NotesRichTextItem
Dim rtnav As NotesRichTextNavigator
Dim rtlink As NotesRichTextDocLink
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Set doc = source.Document
If doc.IsNewNote Or source.EditMode Then Exit Sub
Set rti = doc.GetFirstItem("Link")
Set rtnav = rti.CreateNavigator
If Not rtnav.FindFirstElement(RTELEM_TYPE_DOCLINK) Then
Messagebox "No doclinks in Link item",, "No doclinks"
Else
Set rtlink = rtnav.GetElement
End If
Call doc.Save(False,False)
Dim doc2 As NotesDocument
Dim db2 As New NotesDatabase( "", "" )
If Not db2.OpenByReplicaID( "", rtlink.DbReplicaID ) Then Messagebox "Unable to open database"
Set doc2 = db2.getDocumentByUNID(rtlink.DocUNID)
Set rtitem = doc2.GetFirstItem( "pdf" )
If rtitem Is Nothing Then
Messagebox "No attachment available"
Else
Dim file As String
Forall all In rtitem.EmbeddedObjects
If ( all.Type = EMBED_ATTACHMENT ) Then
file = Join(Split("c:\" & all.Name, " "), "")
Call all.ExtractFile (File)
taskid = Shell("cmd.exe /c start " + file , 0)
End If
End Forall
End If
Call Source.Close(True)
End Sub
Nur eine Frage am Rande;
Was machst Du eigentlich hier
file = Join(Split("c:\" & all.Name, " "), "")
mit der Join / Split-Kombination? Wozu soll die gut sein?
Abgesehen davon: Über Deinen Code wird sich der eine odere andere, der da noch einen Denkanstoss im "Handwerk Coding" benötigt, sicherlich sehr freuen!
Bernhard
Hallo Bernhard,
die Zeile
file = Join(Split("c:\" & all.Name, " "), "")
habe ich eingefügt, weil beim Öffnen der exportierten Datei der Dateinamen mit Blanks nicht richtig erkannt wird: "MeinFile XYZ" versucht der Shellaufruf als "Meinfile" zu öffnen, was natürlich nicht gelingt.
Alexis