Hallo zusammen,
ich versuche aus einem geöffneten Dokument ein neues Dokument zu bilden und in einem Richtext feld einen Doclink einzufügen.
Leider passiert da gar nicht :-( Weiss jemand rat?
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim workspace As New NotesUIWorkspace
Dim doc As NotesDocument
Dim item As NotesItem
Dim doc2 As NotesDocument
Dim rtitem As NotesRichTextItem
Dim uidoc As NotesUIDocument
Dim uidoc2 As NotesUIDocument
Dim subject As String
Set db = session.CurrentDatabase
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document
subject = doc.Knowhow_thema(0)
subject = "Neues Knowledge Dokument: " & subject
Set uidoc2 = workspace.ComposeDocument _
( "", "", "Memo" )
noteid$ = doc.NoteID
Set doc = db.GetDocumentByID( noteid$ )
Set doc2 = uidoc2.Document
Call doc.Save( False, True )
doc2.Subject = subject
doc2.Form = "Memo"
doc2.SaveOptions = 0
Set rtitem = New NotesRichTextItem( doc2, "Body" )
Call rtitem.AppendDocLink( doc, db.Title )
Call doc.Save( False, True )
End Sub
Wenn das der komplette Code ist, dann wirst Du den DocLink auch niemals sehen, denn kurz nach dem Einfogen des DocLinks wirfst Du mit End Sub Dein ganzes Konstrukt ungespeichert in den Orkus.
Was bezweckst Du eigentlich hiermit:
Set doc = uidoc.Document
......
noteid$ = doc.NoteID
Set doc = db.GetDocumentByID( noteid$ )
doc war doch schon instantiiert, und dann machst Du es (auf eine andere Art und Weise) nochmal. Wozu ?
Bernhard
Hi,
warum legt du denn das neue Dokument nicht komplett im Backend an?
...
Set uidoc2 = workspace.ComposeDocument _
( "", "", "Memo" )
Set doc2 = uidoc2.Document
...
Ob das sauber funktioniert, da bin ich mir ganz und garnicht sicher.
Axel
Hallo zusammen,
ich danke Euch nochmal für Eure Hilfe wobei ich immer noch nicht verstehe warum ich meine Erste varinte nicht nutzen konnte :-(
Wenn ich eine NotesDocument mit
doc = uidoc.document Deklariere ist doc Doch ein Backend Dokument und hat damit auch alle möglichkeiten oder??
Naja ich habe es jetzt so gemacht:
Sub Click(Source As Button)
Dim workspace As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim item As NotesItem
Dim doc2 As NotesDocument
Dim rtitem As NotesRichTextItem
Dim uidoc As NotesUIDocument
Dim uidoc2 As NotesUIDocument
Dim subject As String
Dim user As String
Set db = session.CurrentDatabase
Set uidoc = workspace.CurrentDocument
Set doc2 = uidoc.Document
Set doc = New NotesDocument(db)
user = session.CommonUserName
subject = doc2.Knowhow_thema(0)
subject = "Neues Knowledge Dokument: " & subject
Set rtitem = New NotesRichTextItem( doc, "Body" )
Call rtitem.AppendDocLink( doc2, db.Title )
doc.Form = "Memo"
doc.Subject = subject
doc.from = user
doc.type = "reply"
doc.copyto = user
Call doc.Save( False, True )
Set uidoc2 = workspace.EditDocument( True, doc)
End Sub
Das löschen lass ich im moment vom einem tägichen Agent machen.
Schicker wäre es natürlich nach dem versenden. Frage an Euch wäre wieso das unnötigen Ballast erzeugt?
Gruss
Kai
Das mit dem Erzeugen und Speichern eines Dokuments, dass danach sowieso wieder gelöscht werden soll, ist natürlich für eine Datenbank nicht so schön.
Man kann das Ganze in Ermangelung einer entsprechenden NotesUIDocument-Methode auch anders machen:
In der Maske des Dokuments, zu dem ein DocLink verschickt werden soll, gibt es einen Button (ist ja bestimmt jetzt schon der Fall). Dort stehen folgende @functions:
@Command ([FileSave]);
@Command([EditMakeDocLink]) ;
@Command ([ToolsRunMacro]; "(CreateMemo)")
Der Agent "(CreateMemo)" enthält prinzipiell folgenden Code:
Sub Initialize
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim dbCurrent As NotesDatabase
Dim docMemo As NotesDocument
Dim uidocMemo As NotesUIDocument
Set dbCurrent = session.CurrentDatabase
Set docMemo = dbCurrent.CreateDocument
docMemo.Form = "Memo"
Set uidocMemo = ws.EditDocument (True, docMemo)
Call uidocMemo.GotoField ("Body")
Call uidocMemo.Paste
End Sub
Voila - der DocLink steht in einem ungespeicherten Dokument. Im QuerySave der Memo-Maske verhinderst Du noch, dass das Dokument gespeichert werden kann und machst das NotesDocument.Send.
HTH,
Bernhard