Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: ArcTan am 02.08.05 - 10:49:32

Titel: Doclink in UIDoc einfügen
Beitrag von: ArcTan am 02.08.05 - 10:49:32
Hallo,

ich suche nach einer Möglichkeit, über einen Action Button in einer Ansicht ein neues Dokument zu erzeugen, in dessen Body-Feld (ist ein RTF-Feld) ein Doclink auf das Dokument hinterlegt wird, das beim Anklicken des Action-Buttons markiert war. Habe dazu folgenden Scriptcode probiert:

Sub Click(Source As Button)   
   Dim session As New NotesSession
   Dim workspace As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim db As NotesDatabase
   Dim collection As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim rtitem As notesrichtextitem

   Set db = session.CurrentDatabase
   Set collection = db.UnprocessedDocuments
   Set doc = collection.GetFirstDocument()
   
   Set uidoc= workspace.ComposeDocument( "", "", "eintrag" )
   
   Set rtitem = New NotesRichTextItem( uidoc.Document, "body" )
   Call rtitem.AppendDocLink( doc, "Link auf Vorgänger" )   
End Sub

Ein neues Dokument wird angelegt, allerdings (es wäre zu schön gewesen...) erscheint im Feld "body" nicht der Doclink auf "doc".

Gehts das überhaupt, was ich vorhabe? Und wenn ja, wäre dankbar für eine Idee, wie.

Gruß
ArcTan
Titel: Re: Doclink in UIDoc einfügen
Beitrag von: koehlerbv am 02.08.05 - 10:55:52
Du musst das Dokument erst im Backend anlegen, dort auch das RTI und dort den DocLink generieren - und das Dokument dann speichern. Dann kannst Du es für das FrontEnd öffnen.

Bernhard
Titel: Re: Doclink in UIDoc einfügen
Beitrag von: ArcTan am 02.08.05 - 11:12:15
Hi Bernhard,

danke für Deinen Tipp. So funktioniert es.
Nur, sollte sich der User nach dem Klicken des Action-Buttons dazu entscheiden, das Dokument (das ja für ihn wie "neu erstellt" aussieht) doch nicht anlegen zu wollen, so muss es wieder gelöscht werden. Das abzufangen (ohne dass er extra eine Hinweisbox bekommt) dürfte schwierig sein, oder?

Gruß
ArcTan
Titel: Re: Doclink in UIDoc einfügen
Beitrag von: diali am 02.08.05 - 11:30:44
Wenn Du Notes 6.x einsetzt und das Dokument neu erstellst, dann brauchst Du es nicht zu speichern.

Wenn das Dokument dann geschlossen wird, ohne das der User etwas geändert hat, dann kommt auch keine Abfrage zum Speichern.
Titel: Re: Doclink in UIDoc einfügen
Beitrag von: ArcTan am 02.08.05 - 14:25:10
Das scheint bei mir nicht zu funktionieren.

Ohne dass ich das Backend-Dokument abspeichere wird unter Notes 6.5.1 der Doclink nicht im neuen Dokument angezeigt.

Ich verwende nun folgenden Code:

Sub Click(Source As Button)
   
   Dim session As New NotesSession
   Dim uidoc As NotesUIDocument
   Dim db As NotesDatabase
   Dim collection As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim rtitem As notesrichtextitem
   Set db = session.CurrentDatabase
   Set collection = db.UnprocessedDocuments
   Set doc = collection.GetFirstDocument()
   
   Set newdoc = New NotesDocument ( db )
   newdoc.form = "eintrag"
      
   Set rtitem = New NotesRichTextItem( newdoc, "followup" )
   Call rtitem.AppendDocLink( doc, "Link auf Vorgänger" )
   
   Call newdoc.Save( True, True )
   
   Dim workspace As New NotesUIWorkspace   
   Call workspace.EditDocument(True, newdoc)
   
End Sub
Titel: Re: Doclink in UIDoc einfügen
Beitrag von: Axel am 02.08.05 - 15:03:26
Hi,

versuch's mal so:

...
Set newdoc = New NotesDocument ( db )
newdoc.form = "eintrag"
     
Set rtitem = New NotesRichTextItem( newdoc, "followup" )
Call rtitem.AppendDocLink( doc, "Link auf Vorgänger" )

Call newdoc.Save(True,False)  'Temp. Speichern des Backend-Doc. damit RTF-Feld angezeigt wird.

Dim workspace As New NotesUIWorkspace   
   
Call uidoc = workspace.EditDocument(True, newdoc)  'Dokument im Frontend öffnen
Call uidoc.Refresh(True)
Call newdoc.Remove(True)  'Das Dokument, das im Backend erstellt wurde, löschen
   
Axel
Titel: Re: Doclink in UIDoc einfügen
Beitrag von: ArcTan am 03.08.05 - 09:54:08
Klasse, funktioniert  :)
Auf die Idee wäre ich ja nicht gekommen...

Mit der kleinen Verbesserung in der Zeile

Call uidoc = workspace.EditDocument(True, newdoc)  'Dokument im Frontend öffnen

aus dem "Call" ein "Set" zu machen, läufts.

Vielen Dank

Gruß
ArcTan
Titel: Re: Doclink in UIDoc einfügen
Beitrag von: Axel am 03.08.05 - 10:18:34
Sorry, war ein Tippfehler  :-\

Axel