Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet 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
-
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
-
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
-
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 !
-
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.
-
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.
-
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.
-
:( 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!!!
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"
-
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