Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: nsm am 05.09.02 - 15:34:33

Titel: verknüpfung per docid berrechnen
Beitrag von: nsm am 05.09.02 - 15:34:33
hallo leute,

ich habe ein kniffliges problem, da ich leider kein script kann.

ich habe ein feld in dem die DocumentUniqueID eines anderen doc´s errechnet wird.
nun würde ich gerne in ein rtf feld eine verknüpfung per script einfügen lassen.

wer hat einen (ausführlichen) tip für mich?

danke
nsm
Titel: Re: verknüpfung per docid berrechnen
Beitrag von: Rob Green am 05.09.02 - 15:51:59
Notes Help:

This script creates a new mail memo. In the Body item of the memo, the script places a link to each document in the Boots folder in the test.nsf database. Each link is followed by a tab, the Subject item of the document being linked to, and a carriage return.
Dim session As New NotesSession
Dim db As New NotesDatabase("", "test.nsf")
Dim view As NotesView
Dim newDoc As NotesDocument
Dim rtitem As NotesRichTextItem
Dim doc As NotesDocument
Set view = db.GetView( "Boots" )

Set newDoc = New NotesDocument( db )
'hier macht Notes das neue Doc "auf"

Set rtitem = New NotesRichTextItem( newDoc, "Body" )
'es erstellt ein Feld namens Body,vom Typ RT

Set doc = view.GetFirstDocument
While Not ( doc Is Nothing )
 Call rtitem.AppendDocLink( doc, db.Title )
'im Body Feld wird ein Doclink erzeugt zum fokussierten Doc (set doc=view.getfirst....), als Kommentar erscheint der Titel der DB, wenn der User später auf den Link gehen würde (schwebend)

 Call rtitem.AddTab( 1 )
 Call rtitem.AppendText( doc.Subject( 0 ) )
 Call rtitem.AddNewLine( 1 )
 Set doc = view.GetNextDocument( doc )
Wend
newDoc.Subject = _
"Here are links to all docs in the Boots folder"
newDoc.SendTo = "Lauri Nodwell"
Call newDoc.Send( False )
Titel: Re: verknüpfung per docid berrechnen
Beitrag von: Glombi am 05.09.02 - 15:59:39
Hi,
hier eine Möglichkeit: Das ganze wird im QueryClose gemacht:

'Annahme: Feld mit DocumentUniqueID heisst DocID:

'(Declarations)
DocIsSaved as integer

'PostOpen
DocIsSaved = false

'QuerySave
DocIsSaved = true

'QueryCLose
dim session as NotesSession
dim db as NotesDatabase
dim doc as NotesDocument
dim linkdoc as NotesDocument
dim rtitem as NotesRichTextitem

set doc = Source.Document
set session = New NotesSession
set db  = session.CurrentDatabase

if doc.InsertDocLink(0) <> "1" then

set linkdoc = db.GetDocumentByUNID(doc.DocID(0))


if not linkdoc is nothing then
Set rtitem = New NotesRichTextItem( doc, "Body" )
call rtitem.AppendDocLink(doc,"")
doc.InsertDocLink = "1"
call doc.Save(false,true,true)
end if

end if

####################

Du solltest dann noch das Feld InsertDocLink - Bearbeitbar, versteckt mit Vorgabewert "0" in die Maske bauen. Dieses Feld triggert dann, ob der Doklink eingesetzt werden soll.
Im QueryClose ist das sinnvoll, da Änderungen an RT Items erst nach dem Speichern und Neuladen sichtbar werden.

Gruß
Andreas
Titel: Re: verknüpfung per docid berrechnen
Beitrag von: nsm am 05.09.02 - 16:06:26
haoo rob green,

danke für den tip, nur will ich kein neues doc erstellen,
sondern das ganze in einem doc ausführen lassen.

genauer gesagt:

ich erstelle frm_auftrag mit einem rtf_link (masken funktion).
in dieser make wähle ich dann einen vertrag dazu aus.
nun wird in feld  A die vertragsnummer und in feld B
die eindeutige id (berrechnet auf grundlage von A)
eingetragen.

nun erstelle ich einen einsatz auf grundlage des auftrags.
dem einsatz wird wieder ein link zum auftrag automatisch
über die maskenfunktion eingefügt.

ims feld C wird die vertragsnummerID aus frm_auftrag übergeben.

nun wollte ich einen link von einsatz zum vertrag.

danke nsm
Titel: Re: verknüpfung per docid berrechnen
Beitrag von: nsm am 05.09.02 - 16:37:20
hallo andreas,

ich habe das script eingebaut.
es wird mri auch ein doclink erstellt, allerdings verweist
der auf das aktuelle doc und nicht auf den vertrag

dank nsm
Titel: Re: verknüpfung per docid berrechnen
Beitrag von: Glombi am 06.09.02 - 08:51:33
Sorry,
da ist mir natürlich ein kleiner Fehler unterlaufen. Es muss korrekt lauten:

if not linkdoc is nothing then
Set rtitem = New NotesRichTextItem( doc, "Body" )
call rtitem.AppendDocLink(linkdoc,"")
doc.InsertDocLink = "1"
call doc.Save(false,true,true)
end if

Gruß
Andreas
Titel: Re: verknüpfung per docid berrechnen
Beitrag von: HaPe am 06.09.02 - 09:25:22
Hi,

wenn du nur einen link brauchst, kannst du auch einfach die DocUnId in ein berechnetes ZAHLENFELD füllen. Wenn du die Maske dann mi Klient öffnest mach notes daraus einen Link und zeigt nicht (wie man villeicht erwarten würde) die Zahl der DocUnId an.

Somit kannst du den Link auch später austauschen. Und das alles ohne script ;) . Ich hab mal durch zufall festgestellt, daß das funktioniert.

Gruß
 HaPe
Titel: Re: verknüpfung per docid berrechnen
Beitrag von: Zimmi am 09.09.02 - 10:20:12
Hallo HaPe,

prima Tipp - das kann ich gut gebrauchen ...

Danke für den Hinweis ..

Zimmi
Titel: Re: verknüpfung per docid berrechnen
Beitrag von: nsm am 09.09.02 - 14:46:59
hallp HaPe,

ich habe das versucht, nur bei mir wird die id angezeigt.
kann das daran liegen, daß ich die id in diesem feld
bereits vom +bergeordneten doc übernehme?

nsm