Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Scotty67 am 30.03.10 - 06:49:30

Titel: appenddoclink in einem NotesUiDocument möglich ????
Beitrag von: Scotty67 am 30.03.10 - 06:49:30
Zunächst einmal ein herzliches Hallo an die bestehende Community. :)
Ein deutschsparchig geführtes Forum mit geballtem Content - das gefällt mir ! Hier bleib ich  :D

Vielleicht kann mir jemand bei dieser Problemstellung helfen.

Ich öffene ein Dokument aus einer Datenbank und möchte über einen Button ein neues Dokument anlegen (anderer Formulartyp)...und jetzt kommt's - ich möchte in dieses neu erzeugte Dokument den DocLink von dem zuvor-geöffeneten Dokument übernehmen und dieses Link im neuen Dokument hinterlegen - so dass  man jederzeit auf dieses "Basis-Dokument" zurückkehren kann. Ich meine eine simple Sache - aber ich bin jetzt schon total verzweifelt - kostet mich schon fast 2 Tage - ich check's einfach nicht.


Hier der Action Button Code der das neue Dokument erzeugt. Ich hab schon alles propiert puncto AppendDocLink daher erspare ich euch mein vermurkstes Coding. Also hier einfach nur die Ausgangssituation für das neue Dokument im dem der Link abgelegt werden soll. Am neuen Form ist ein RichTextField namens "DcLink" hinterlegt.

Ich bin eher Admin als Designer - tu mir einfach ein wenig schwer mit dem programmieren - aber es bleibt mir nichts erspart.. :P

Sub Click(Source As Button)
   Dim workspace As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim uinewdoc As  NotesUIDocument
   Dim doc As NotesDocument
   Set uidoc = workspace.CurrentDocument
   
   
   Call workspace.EditDocument( True )
   Set uinewdoc = workspace.ComposeDocument( "", "", "SMDoing" )
   
.....

LG/Hannes
Titel: Re: appenddoclink in einem NotesUiDocument möglich ????
Beitrag von: ascabg am 30.03.10 - 07:22:56
Hallo und Willkommen,

Kleine Frage.
Wo befindet sich der Button? (in einer Ansicht oder im Dokument)

Code
Dim uiws As New NotesUIWorkspace
Dim uidocCur As NotesUIDocument
Dim uidocNew As NotesUIDocument
Dim docCur As NotesDocument
Dim docNew As NotesDocument
Dim rtLink As NotesRichTextItem

Set uidocCur = uiws.CurrentDocument
Set docCur = uidocCur.Document

Set docNew = New NotesDocument(docCur.ParentDatabase)
docNew.Form = "Dein Maskenname"

Set rtLink = New NotesRichTextItem(docNew, "DcLink")
Call rtLink.AppendDocLink(docCur, "Link zur Source", "")

Set uidocNew = uiws.EditDocument(True, docNew)

Beispiel ist ohne Fehlerbehandlung und unter der Voraussetzung, dass der Button sich im Dokument bzw. in der ActionBar des aktuellen Dokumentes befindet.

Andreas
Titel: Re: appenddoclink in einem NotesUiDocument möglich ????
Beitrag von: Scotty67 am 30.03.10 - 10:45:15
Hallo Andreas !

Danke fürs Willkommen !  :D
Der Action-Bar-Button wird sichtbar sobald man das Dokument öffnet.
Hab in einm Schnellverfahren deine Code in einen neuen ABB(action-bar-button) übernommen.
den docNew.Form Namen hinterlegt.

Das Dokument wird erzeugt - aber im RT-Field "DcLink" kommt nix an - kein Doclink zu sehen.
Was mache ich noch falsch ? Sind an dieses RT-Field bestimmte Anforderungen gestellt ?

LG/Hannes
Titel: Re: appenddoclink in einem NotesUiDocument möglich ????
Beitrag von: DerAndre am 30.03.10 - 11:01:01
Hi Hannes.

Such bitte mal nach AppdDocLink, nimm Dir eine große Tasse Kaffee oder Tee einen Kuchen Deiner Wahl und amüsier Dich mit den Threads zum Thema RTI.
Als kleiner Tipp, such auch noch nach 'reopen'.
Um es mit Bernhards Worten zu sagen, ein Problem seit Notes 4.6
Titel: Re: appenddoclink in einem NotesUiDocument möglich ????
Beitrag von: TRO am 31.03.10 - 07:34:25
aus den hintersten Winkeln meines Gedächtnisses und völlig ungetestet:

In der Maske für den neuen Formulartyp ein sichtbares Text-Feld vom Typ ComputedWhenComposed einbauen. Formel dafür: @InheritedDocumentID. Die Maske muss natürlich auch das Häkchen bei "Felder übernehmen Werte ...." gesetzt haben.


hth

Thomas
Titel: Re: appenddoclink in einem NotesUiDocument möglich ????
Beitrag von: Thomas Schulte am 31.03.10 - 09:58:58
Richtig. Und ganz wichtig dabei ist Computed When Composed. Bei Computed kann man da wunderbare Seiteneffekte erleben. Man muss das Dokument nur zweimal speichern und zwischendurch einmal schließen.

Ein Textfeld, berechnet, mit @DocumentUniversalID auf dem zugrundeliegenden Dokument und dieses dann vererben funktioniert übrigens auch.

Lustig wird es dann wenn man sich das aus dieser Aktion resultierende Feld mal etwas genauer anschaut. Das ist dann nämlich KEIN Textfeld mehr.
Titel: Re: appenddoclink in einem NotesUiDocument möglich ????
Beitrag von: pram am 31.03.10 - 23:03:01
Sorry wenn ich jetzt hier nicht folgen kann...
Durch das berechnete TEXT-Feld soll in ein bestehendes RICHTEXT-Feld ein DocLink eingefügt werden?
Oder ändert sich das Feld selber dann in einen DocLink?

Gruß
Roland
Titel: Re: appenddoclink in einem NotesUiDocument möglich ????
Beitrag von: TRO am 31.03.10 - 23:23:54
das Text-Feld selber wird zum Doclink

Titel: Re: appenddoclink in einem NotesUiDocument möglich ????
Beitrag von: Thomas Schulte am 01.04.10 - 15:10:08
Genau und wird dann eine Note Ref List. Ein Zustand für den ich bis jetzt leider keinen anderen Weg gefunden habe den zu erzeugen.
Titel: Re: appenddoclink in einem NotesUiDocument möglich ????
Beitrag von: pram am 01.04.10 - 16:05:15
Interessantes Verhalten, kannte ich bisher noch nicht, allerdings kann ich dir sagen, wie man solche Felder erzeugen kann:

Dazu braucht man ein temporäres Antwortdokument von dem man sich das $REF-Feld herauskopiert:
Code
Dim tmpDoc As New NotesDocument(db)
Call tmpDoc.MakeResponse(linkToDoc)
Dim refItem As NotesItem
Set refItem = tmpDoc.getFirstItem("$REF")
Call refItem.CopyItemToDocument(ws.CurrentDocument.Document,, "TestLink")
Obiger Code erstellt ein Ref-Feld "TestLink" welches auf linkToDoc zeigt.
(allerdings nur, wenn das Dokument nicht im UI geöffnet ist)

Gruß
Roland

/edit:
Hier hätte ich noch was für den OP: http://www.qtzar.com/blogs/qtzar.nsf/d6plinks/DSLH-7NRK85
Geht aber erst ab 8.5! Neben dem Weg über die Zwischenablage ist dies die einzig (einigermaßen) saubere Möglichkeit, die ich kenne, ein RT-Feld im UI ohne Reopen zu ändern.