Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Alexis am 20.07.05 - 16:42:30

Titel: Link zwischen Dokumenten zweier DB herstellen
Beitrag von: Alexis am 20.07.05 - 16:42:30
Hallo Forum,

das was $Ref bei Antwortdokumenten schafft, möchte ich bei zwei Dokumenten herstellen, die wie folgt zusammenhängen:

Dokument 1 in DB1 enthält Button zur Erzeugung eines Dokumentes 2 in DB2 (per Script). Felder werden sauber in Dokument 2 übertragen.

Nun möchte ich in Dokument 1 aber einen Link auf das Dokument 2 einbauen, so dass darüber eine Verbindung zwischen beiden hergestellt ist. Dieses soll programmtechnisch im Script angelegt werden, dass das Dokument 2 erzeugt.

Wie stelle ich das an? Hilft mir jemand im Ansatz?

Alexis
Titel: Re: Link zwischen Dokumenten zweier DB herstellen
Beitrag von: Driri am 20.07.05 - 17:13:47
Übergib an Doc2 die DocumentUNiqueID von Doc1. Dann hast Du die Verbindung und kannst diese zumindest Programmtechnisch nutzen.

Du kannst ansonsten auch einen DocLink auf Doc1 in Doc2 speichern.
Titel: Re: Link zwischen Dokumenten zweier DB herstellen
Beitrag von: gossifu am 20.07.05 - 17:33:28
Hallo,

vielleicht wäre ein mit sich selbst berechnetes(@ThisValue) Richtextfeld in der Maske etwas.
Beim Anlegen des Dok2 mit der Richtextitem-Class(AppendDocLink) in diesem Richtextfeld
den Doc-Link erzeugen.

mfg

Kjeld
Titel: Re: Link zwischen Dokumenten zweier DB herstellen
Beitrag von: TMC am 21.07.05 - 00:10:31
Ergänzend zu Ingos Beitrag:

AFAIK sollte das mit einem reinen Textfeld (nicht Richtext-Feld) so wie bei $REF funktionieren, wenn man die DocumentUniqueID verwendet und dort reinschreibt.

Siehe hier http://www.atnotes.de/index.php?topic=13984.0 , Kapitel 3.5.
D.h. dadurch sollte für den Anwender ein Doc-Link erscheinen.
Titel: Re: Link zwischen Dokumenten zweier DB herstellen
Beitrag von: Alexis am 22.07.05 - 13:44:42
Hallo Forum,

mein Script funktioniert nicht: den Link, den ich per "AppendDocLink" setzen will erscheint nicht im entsprechenden Dokumentenfeld, das Feld bleibt leer.

Wer ist so nett und checkt meinen Code?

Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim uidocNew As NotesUIDocument
   Dim docRes As NotesDocument
   Dim docBew As NotesDocument 
   Dim dbbw As NotesDatabase
   Dim doc As NotesDocument
   
   Set uidoc = ws.CurrentDocument                            
   Set docRes = uidoc.Document                           
   Set dbbw = New NotesDatabase("", "")                      
   Call dbbw.OpenByReplicaID( "Server”,"ID" )
   Set docBew = New NotesDocument(dbbw)                 
   docBew.Form = "2. Datenbank"                            
   Set docBew = New NotesDocument(dbbw) 
   docBew.Personen = docRes.Capacity                   
   docBew.Raum = docRes.ResourceName               
   docBew.Datum = docRes.StartDateTime                
   docBew.Von = docRes.StartDateTime                
   docBew.Bis = docRes.EndDateTime       
   Set uidocNew = ws.EditDocument(True, docBew)   
   Set rtitem = New NotesRichTextItem( docRes, "Link" )    
   Call rtitem.AppendText("Link to ... --> ")
   'Call rtitem.AppendDocLink( dbbw, "Title" )          
   Call uidocNew.Refresh       
End Sub

Alexis
Titel: Re: Link zwischen Dokumenten zweier DB herstellen
Beitrag von: Driri am 22.07.05 - 14:05:45
Mit einem Refresh wirst Du da nicht weit kommen. Du mußt das Background-Dokument erstmal speichern und dann ein Reopen machen.

Such mal im Forum nach "Reopen", da gabs schon Beiträge mit fertigem Script zu. Glaube Ata hatte das mal gebastelt.
Titel: Re: Link zwischen Dokumenten zweier DB herstellen
Beitrag von: ..Andreas.. am 22.07.05 - 14:44:20
Vorausgesetzt Du verwendest R6 kannst Du auch die NotesURL (Property von NotesDocument, ab R6 auch nicht mehr nur für COM verfügbar) des verlinkten Dokumentes in ein Feld wegschreiben.

Dann kannst Du über ein einfaches <a href=... (Pass-Thru HTML, mit der NotesURL als Computed Text dazwischen, und Maskeneigenschaft Render pass through HTML in Notes) den gleichen Effekt erzielen. Noch ein bisschen mit Verbergeformeln und aussagekräftigen Linktexten ausstatten, und die Nutzer werden Dich dafür lieben. ;)

Andreas
Titel: Re: Link zwischen Dokumenten zweier DB herstellen
Beitrag von: Alexis am 25.07.05 - 13:40:43
Hallo Forum,

habe das Problem mit Hilfe der Technote der IBM gelöst (siehe Code). Nur ein Punkt bekomme ich nicht hin. An der ausgewiesenen Stelle im Script möchte ich die Maske im Wokspace bearbeiten können und erst dann den Code fortsetzen. Wie stelle ich das an?

Sub Click(Source As Button)
   
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim uidocNew As NotesUIDocument
   Dim docRes As NotesDocument
   Dim docBew As NotesDocument 
   Dim dbbw As NotesDatabase
   Dim doc As NotesDocument
   
   Set uidoc = ws.CurrentDocument                         
   Set docRes = uidoc.Document                        
   Set dbbw = New NotesDatabase("", "")                      
   Call dbbw.OpenByReplicaID( "Server","ID" )
   Set docBew = New NotesDocument(dbbw)                 
   docBew.Form = "Bewi"                                                             
   docBew.Personen = docRes.Capacity                   
   docBew.Raum = docRes.ResourceName               
   docBew.Datum = docRes.StartDateTime                
   docBew.Von = docRes.StartDateTime                
   docBew.Bis = docRes.EndDateTime    
   Set uidocNew = ws.EditDocument(True, docBew)   
   Set rtitem = New NotesRichTextItem( docRes, "Link" )    
   Call rtitem.AppendText("Link to Service Order (to change)  --> ")
   Call rtitem.AppendDocLink( docBew, "" )
   docRes.Form = "Reservation"
   Call docRes.Save(False,False)
   docRes.saveoptions = "0"
   Call uidoc.Close

   ' An dieser Stelle sollte der Workspace mit docBew zum Editieren offen sein   

   Call ws.EditDocument(True,docRes,False)
   Set docRes = uidoc.Document
   Dim view As NotesView
   Set db = session.CurrentDatabase
   Set view = db.GetView("ResByDate")
   Call view.Refresh
End Sub

Alexis