Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Vigeli am 14.11.05 - 16:23:11

Titel: Dokumentenverknüpfung in Lotus Script
Beitrag von: Vigeli am 14.11.05 - 16:23:11
Hallo Forum,

Ich habe eine Datenbank, welche einen Workflow beinhaltet.
Wie kann ich im Lotus Script eine Dokumentenverknüpfung mitschicken, sodas der Bearbeiter nur noch auf die Verknüpfung im Kalendareintrag klickt und automatisch das Dokument in der Datenbank öffnet.

mit folgendem Script werden Kalendereinträge automatisch generiert:
========================================

REM Kalenereintrag erzeugen
Sub Click(Source As Button)
   Dim session As New NotesSession   
   Dim db As New NotesDatabase ("","")
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument   
   Dim userName As New notesname(session.username)
   Dim dbfilename As String
   Dim dbserver As String
   Dim value As Integer
   Dim vondatum As String
   Dim bisdatum As String
   Dim newdoc As NotesDocument
   Dim rtitem As NotesRichtextItem
   
   Call db.OpenMail   
   dbfilename=db.filepath   
   dbserver = db.server
   
   value = Messagebox ("Soll der Termin " + Chr(10) + "in den Kalender eingetragen werden?", (4+32+0+0), "Abwesenheit in den eigenen Kalender eintragen")
   
   If (value = 6) Then
      
      Set uidoc = ws.CurrentDocument
      REM art=uidoc.FieldgetText("MstName1")
      kunde=uidoc.FieldGetText( "KUNA1" )
      vondatum = uidoc.FieldGetText( "KUBELEN" )
      bisdatum = uidoc.FieldGetText( "KUBELEN" )
      ort=uidoc.FieldGetText("KUORT")
      REM vonzeit = uidoc.FieldGetText( "vonzeit" )
      REM biszeit = uidoc.FieldGetText( "biszeit" )
      Print vondatum, bisdatum   
      
      Set db = session.CurrentDatabase
      Set newdoc = New NotesDocument( db )
      Set uidoc = ws.ComposeDocument (dbserver,dbfilename,"Appointment")
      Call uidoc.FieldSetText("Subject",kunde & " - " & "Besuch")
      Call uidoc.FieldSetText("Location",ort)
      Call uidoc.FieldSetText("StartDate",vondatum)      
      Call uidoc.FieldSetText("EndDate",bisdatum)
      REM Call uidoc.FieldSetText("StartTime",vonzeit)      
      REM Call uidoc.FieldSetText("EndTime",biszeit)
      Call uidoc.FieldSetText("AppointmentType","2")
      
      
%REM
      Messagebox ("Bla Bla Bla")
   Else
      Messagebox ("Kalender wurde nicht verändert")
%ENDREM
      
      Call uidoc.refresh
      Call uidoc.Save()
      Call uidoc.Close()
      Call uidoc.refresh
   End If
   
   Call uidoc.refresh
   Call uidoc.Save()
   Call uidoc.Close()
   
   
   
End Sub   

Besten Dank
Titel: Re: Dokumentenverknüpfung in Lotus Script
Beitrag von: umi am 14.11.05 - 16:24:43
Hi
Über das rtitem. Die Funktion heisst AppendDoclink (vgl. Hilfe)
Titel: Re: Dokumentenverknüpfung in Lotus Script
Beitrag von: Vigeli am 14.11.05 - 16:38:29
hi umi,

geht leider nicht...

habe folgende zeile hinzugefüt..:

Set rtitem = New NotesRichTextItem( uidoc.Document, "body" )
      Call rtitem.AppendDocLink( doc, "Link ==>" )   

Titel: Re: Dokumentenverknüpfung in Lotus Script
Beitrag von: umi am 14.11.05 - 16:40:07
Geht schon, nur nicht direkt. Damit die RTF's richtig funktionieren muss das Dokument mind. 1 mal gespeichert worden sein.
Titel: Re: Dokumentenverknüpfung in Lotus Script
Beitrag von: Vigeli am 14.11.05 - 16:42:42
...und wie??
Titel: Re: Dokumentenverknüpfung in Lotus Script
Beitrag von: umi am 14.11.05 - 16:53:52
Zuerst mit Call uidoc.save() das UIDokument speichern.
danach ungefähr so
dim tdoc as notesdocument
set tdoc = uidoc.document
set rtitem = new NotesRichtextITem(tdoc,"Body")
call rtitem.appendDoclink(Doc,"Link -->","Link -->")

Titel: Re: Dokumentenverknüpfung in Lotus Script
Beitrag von: flaite am 14.11.05 - 16:54:57
bin am googlen. Dabei bin ich auf diese Lösung gestossen, die behauptet, dass ein re-open nicht notwendig ist (mit 6). Ist mir neu:
http://searchdomino.techtarget.com/tip/1,289483,sid4_gci993463,00.html
Hier ist ein "klassisches" Beispiel (mit re-open):
http://www.keysolutions.com/NotesFAQ/howrichtext.html

oder hier:
http://www-10.lotus.com/ldd/46dom.nsf/ShowMyTopicsAllFlatweb/26946918600b6b6b85256d3e000835c4?OpenDocument
Titel: Re: Dokumentenverknüpfung in Lotus Script
Beitrag von: Vigeli am 14.11.05 - 17:02:24
... :'( funzt nicht..Body bleibt immer "leer"...

Call uidoc.Save()
      Dim tdoc As notesdocument
      Set tdoc = uidoc.document
      Set rtitem = New NotesRichtextITem(tdoc,"Body")
      Call rtitem.appendDoclink(Doc,"Link -->","Link -->")
Titel: Re: Dokumentenverknüpfung in Lotus Script
Beitrag von: umi am 15.11.05 - 08:46:06
Ist ja klar warum das leer bleibt. Du fügst den Doclink im Backend ein.
Damit Du den Link dann im UIDocument siehst, musst Du
1. das Dokument speichern
2. das UIDokument schliessen
3. das UIDokument erneut öffnen.
Titel: Re: Dokumentenverknüpfung in Lotus Script
Beitrag von: Vigeli am 15.11.05 - 09:37:39
hi umi,

...es geht nicht  :-[. was ist hier falsch? Body bleibt immer leer!!

REM Kalenereintrag erzeugen
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As New NotesDatabase ("","")
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim userName As New notesname(session.username)
Dim dbfilename As String
Dim dbserver As String
Dim value As Integer
Dim vondatum As String
Dim bisdatum As String
Dim newdoc As NotesDocument
Dim rtitem As NotesRichtextItem

Call db.OpenMail
dbfilename=db.filepath
dbserver = db.server

value = Messagebox ("Soll der Termin " + Chr(10) + "in den Kalender eingetragen werden?", (4+32+0+0), "Abwesenheit in den eigenen Kalender eintragen")

If (value = 6) Then

Set uidoc = ws.CurrentDocument
REM art=uidoc.FieldgetText("MstName1")
kunde=uidoc.FieldGetText( "KUNA1" )
vondatum = uidoc.FieldGetText( "KUBELEN" )
bisdatum = uidoc.FieldGetText( "KUBELEN" )
ort=uidoc.FieldGetText("KUORT")
avs=uidoc.FieldGetText("AVS")
'test=uidoc.FieldGetText("AVS")
REM vonzeit = uidoc.FieldGetText( "vonzeit" )
REM biszeit = uidoc.FieldGetText( "biszeit" )
Print vondatum, bisdatum

Set db = session.CurrentDatabase
Set newdoc = New NotesDocument( db )
Set uidoc = ws.ComposeDocument (dbserver,dbfilename,"Appointment")
Call uidoc.FieldSetText("Subject",kunde & " - " & "Besuch")
Call uidoc.FieldSetText("Location",ort)
Call uidoc.FieldSetText("StartDate",vondatum)
Call uidoc.FieldSetText("EndDate",bisdatum)
Call uidoc.FieldSetText("Categories",avs)
'Call uidoc.FieldSetText("Test",avs)
REM Call uidoc.FieldSetText("StartTime",vonzeit)
REM Call uidoc.FieldSetText("EndTime",biszeit)
Call uidoc.FieldSetText("AppointmentType","2")

Call uidoc.Save()
Call uidoc.Close()

Call uidoc.Save()

Call uidoc.FieldSetText("AppointmentType","2")
Dim tdoc As notesdocument
Set tdoc = uidoc.document
Set rtitem = New NotesRichtextITem(tdoc,"Body")
Call rtitem.appendDoclink(Doc,"Link -->","Link -->")


%REM
Messagebox ("Bla Bla Bla!!!!")
Else
Messagebox ("Kalender wurde nicht verändert")
%ENDREM

Call uidoc.refresh
Call uidoc.Save()
Call uidoc.Close()
Call uidoc.refresh
End If

Call uidoc.refresh
Call uidoc.Save()
Call uidoc.Close()



End Sub
Titel: Re: Dokumentenverknüpfung in Lotus Script
Beitrag von: umi am 15.11.05 - 09:57:43
Code

Call uidoc.Save()

Call uidoc.FieldSetText("AppointmentType","2")
Dim tdoc As notesdocument
Set tdoc = uidoc.document
Set rtitem = New NotesRichtextITem(tdoc,"Body")
Call rtitem.appendDoclink(Doc,"Link -->","Link -->")

call tdoc.save(true,false)
call uidoc.close()

'Die genauen parameter siehe Hilfe
set uidoc = ws.editdocument(tdoc)

End If