Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: jofa am 04.07.03 - 12:10:30

Titel: DocLink im Frontend einfügen nach Auswahl
Beitrag von: jofa am 04.07.03 - 12:10:30
Hi @all,

ich habe folgendes Problem,
ich möchte in einem RichTextFeld einen DocLink zu einem anderen Dokument einfügen. Das Script läuft soweit auch und erzielt im Debugger keinen Fehler und belegt die Felder korrekt, dennoch wird der DocLink nicht gespeichert.

Hier mein Script:

---snip---
Sub Click(Source As Button)
   
   Dim session As New notessession
   Dim db As NotesDatabase
   Set db = session.CurrentDatabase
   
   Dim docUNID As String  
   
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Set uidoc = ws.CurrentDocument 'get the frontend doc
   
   Dim backendDoc As NotesDocument
   Set backendDoc = uidoc.Document 'get the backend doc
   
   Dim rtitem As NotesRichTextItem
   Set rtitem = backendDoc.GetFirstItem( "T_Vert1" )
   
   
   Dim docPick As New NotesDocument( db )
   
   Dim vStringArray As Variant
   Dim tname As String
   Dim vname As NotesItem
   Dim nname As NotesItem
   
   vStringArray = ws.PickListStrings(PICKLIST_CUSTOM, False, db.Server, db.FilePath, "ID", "Vertretung", "Bitte wählen Sie eine Vertretung aus.", 5, "")
   
   tname = Fulltrim(vStringArray(0))
   
'   Set view   = db.GetView("ID")
   
   Set tdoc   = db.GetDocumentByUnId(tname)
   
   Set vname   = tdoc.Getfirstitem("T_Vorname")
   Set nname   = tdoc.Getfirstitem("T_Name")
   
   
   Msgbox tname & ": " & vname.Text & " " & nname.Text
   
   backendDoc.RemoveItem( "T_Vert1" )
   
   Set rtitem = New NotesRichTextItem( backendDoc, "T_Vert1")
   Call rtitem.AppendDocLink( tdoc, vname.Text & " " & nname.Text, vname.Text & " " & nname.Text)
   
   
   Call backendDoc.Save( True, True) ', True )
   
   Call uidoc.Refresh(True)
   
'   Call uidoc.Close
   

End Sub
---snap---

Hat von Euch einer einen Tip ?

Gruss JoFa
Titel: Re:DocLink im Frontend einfügen nach Auswahl
Beitrag von: jofa am 04.07.03 - 12:47:23
ich habs:

---snip---
Sub Click(Source As Button)
   
   Dim session As New notessession
   Dim db As NotesDatabase
   Set db = session.CurrentDatabase
   
   Dim docUNID As String  
   
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Set uidoc = ws.CurrentDocument 'get the frontend doc
   
   Dim backendDoc As NotesDocument
   Set backendDoc = uidoc.Document 'get the backend doc
   
   Dim rtitem As NotesRichTextItem
   Set rtitem = backendDoc.GetFirstItem( "T_Vert2" )
   
   
   Dim docPick As New NotesDocument( db )
   
   Dim vStringArray As Variant
   Dim tname As String
   Dim vname As NotesItem
   Dim nname As NotesItem
   
   vStringArray = ws.PickListStrings(PICKLIST_CUSTOM, False, db.Server, db.FilePath, "ID", "Vertretung", "Bitte wählen Sie eine Vertretung aus.", 5, "")
   
   tname = Fulltrim(vStringArray(0))
   
   Set tdoc   = db.GetDocumentByUnId(tname)
   
   Set vname   = tdoc.Getfirstitem("T_Vorname")
   Set nname   = tdoc.Getfirstitem("T_Name")
   
'   Msgbox tname & ": " & vname.Text & " " & nname.Text
   
   backendDoc.RemoveItem( "T_Vert2" )
   
   Set rtitem = New NotesRichTextItem( backendDoc, "T_Vert2")
   Call rtitem.AppendDocLink( tdoc, vname.Text & " " & nname.Text, vname.Text & " " & nname.Text)
   Call backendDoc.Save( True, True) ', True )
   
   backendDoc.saveoptions="0"
   
   Call uidoc.close
   Set uidoc=ws.editdocument(True,backendDoc,False)
   Call uidoc.GotoField("T_Vert2")
   
   
End Sub
---snap---

GRuss JoFa
Titel: Re: DocLink im Frontend einfügen nach Auswahl
Beitrag von: cash am 17.04.07 - 13:00:35
soetwas will ich auch machen... Komme aber garnicht klar.

Ich habe in einer Maske eine Schaltfläche (Picklist) wenn man dort drauf klictk und sich ein Dokument aus der Ansicht ID aussucht wird die Dok_ID aus Spalte 3 per Prompt ausgegeben (vorher in Variabe _ID geschrieben. Wie kriege ich es hin das in der aktuellen Maske durch diese Dok_ID ein DokLink in das Feld DocLink erzeugt wird??

Cash
Titel: Re: DocLink im Frontend einfügen nach Auswahl
Beitrag von: dirk_2909 am 17.04.07 - 13:12:58
Hallo

Wenn in einem Textfeld (!!) ein Dokumentlink angezeigt werden soll, muss in dem Feld die entsprechende DocumentUniqueID gespeichert sein! NICHT als Text!

Tipp:
ab Version 6 kannst Du mit einem @DBLookUp die DocumentUniqueID zurückgeben lassen !

Hinweis:

Bitte keine uralt Threads wieder aufmachen!!!  :-P
Erstelle einen neuen !
Titel: Re: DocLink im Frontend einfügen nach Auswahl
Beitrag von: Thomas Schulte am 17.04.07 - 13:53:48
So wie es hier beschrieben ist gar nicht. Das funktioniert nämlich nur mit RT Feldern und der unten beschriebenen Umwandlung mit AppendDoclink.

Außerdem ist ein DOCLink ein ganz spezielles Feld vom Typ NoteRef wie sich jeder überzeugen kann der mal mit einem Linksklick auf ein Dokument geht in dem ein berechnetes Feld mit @DocumentUniqueID drinsteht.

Das lässt sich auch mit keinem Tool bearbeiten. Weder mit ScanEz von Ytria noch mit NoteMan.

Aber was man mit dem Feld machen kann ist es als NotesItem in ein anderes Feld hineinzukopieren.
Also ist die Vorgehensweise diese:
Im Ursprungsdokument ein berechnetes Feld Link2Myself haben das schlicht und einfach nur die @DocumentUniqueID empfängt.
Und dann bei der Übergabe ein copyitem.
Fertig ist die Laube.
Titel: Re: DocLink im Frontend einfügen nach Auswahl
Beitrag von: dirk_2909 am 17.04.07 - 14:19:38
Zitat
So wie es hier beschrieben ist gar nicht.

Dem kann ich nicht zustimmen!

Wenn man in einem normalen Textfeld eine UniversalID speichert, dann wird im UI in dem Feld eine Dokumentverknüpfung zu dem Dokument mit der entsprechenden UNID angezeigt !!

Wie das jetzt in dem speziellen Fall umgesetzt werden kann/sollte muss der Entwickler entscheiden.

Ein Beispiel:
Eine Maske vom Typ "Dokument" mit berechneten Textfeld "LinklDocID" - Formel: @DocumentUniqueID
Eine Maske vom Typ "Antwort" - dort ein Textfeld (!) berechnet beim Anlegen -> "LinklDocIDMutter" - Formel: LinklDocID ; zusätlich im ANtwortdok. ein TEXTfeld , berechnet zur Anzeige "tmpLinkMutter" Formel: LinklDocIDMutter

Wenn ich mit der Antwortmaske ein Dokument erstelle, wird in dem Feld "tmpLinkMutter" eine Verknüpfung zum Hauptdokument angezeigt.


Titel: Re: DocLink im Frontend einfügen nach Auswahl
Beitrag von: Thomas Schulte am 17.04.07 - 14:27:22
Und wo ist jetzt der Unterschied zwischen deiner und meiner Lösung Dirk?  ???

Bezogen auf das Script (das nur für RTItems gültig ist) und die Aussage von Cash der das in einem normalen Textfeld haben wollte bleib ich bei meiner Aussage. Das geht so nicht.

Deine Lösung ist richtig für direktes Erstellen mit Vererbung. Aber wenn du dir das was da rauskommt genauer anschaust, dann wirst du feststellen, das deine vererbten Felder eben nicht mehr vom Typ Text sondern vom Typ NoteRef sind.
Titel: Re: DocLink im Frontend einfügen nach Auswahl
Beitrag von: dirk_2909 am 17.04.07 - 14:43:34
 :(  Thomas Du hast Recht .. habe Dein Posting zu halbherzig gelesen  :'( sorry  :D

Hatte irgendwie noch ein anderen Thread im Kopf  :-:

..Wird Zeit, dass ich das Projekt beende.

Asche über mein Haupt!!!

Zitat
dann wirst du feststellen, das deine vererbten Felder eben nicht mehr vom Typ Text sondern vom Typ NoteRef sind.
..das habe ich festgestellt  ;D
In meinem Posting habe ich den Typ nur so angegeben, wie er auch im Designer angegeben werden kann, und nicht wie er angespeichert wird ..


Sorry nochmal für meine "Halbherzigkeit"


Titel: Re: DocLink im Frontend einfügen nach Auswahl
Beitrag von: cash am 18.04.07 - 16:23:44
es muß ja kein Textfeld sein! Habe mal das Script probiert mit einen Richtextfeld aber da ich mich mit Script eigetlich garnicht auskenne schaffe ich es nicht den o. g. Script anzupassen....


Cash