Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: masterste2000 am 09.12.09 - 11:09:03

Titel: Doklink erzeugen klappt nicht!???ß
Beitrag von: masterste2000 am 09.12.09 - 11:09:03
Hallo Zusammen,

ich erzeuge aus der einem Dokument in der Datenbank A ein neues Dokument in einer anderen Datenbank B. Das klappt auch!!!

Jetzt möchte ich gerne in dem Dokument in der Datenbank A ein DokLink erzeugen, welches auf das Dokument in der Datenbank B verlinkt.

Was jetzt nicht klappt ist, dass das Icon in dem Feld "VideoDatei" erzeugt wird, mit dem der Nutzer direkt zu dem Dokument in der Datenbank B gelangen kann.

uidoc / doc ist das Dokument in der Datenbank A
uidocVID / docVID ist das Dokument in der Datenbank B

VideoDatei ist das Feld im dem der DocLink eingefügt werden soll und vom Feldtyp "text"

dokID ist das Feld mit dem DocLink des Dokuments in der Datenbank B (hat den Vorgabewert "@DocumentUniqueID" )



Sub Click(Source As Button)
   Dim workspace As New NotesUIWorkspace
   Dim uidocVID As NotesUIDocument
   Dim uidoc As NotesUIDocument
   
   Set uidoc = workspace.Currentdocument
   Set uidocVID = workspace.ComposeDocument _
   ( "MeinServer", "Anwendungen\ProjAllgVID.nsf", "VideoAblage" )

   Dim doc As NotesDocument
   Dim docVID As NotesDocument
   
   Call uidocVID.save
   
   Set docVID = uidocVID.document
   Set doc = uidoc.document   
   
   
   Call doc.ReplaceItemValue("VideoDatei",docVID.GetItemValue( "dokID" ))

   
   
End Sub

 
Titel: Re: Doklink erzeugen klappt nicht!???ß
Beitrag von: Johnson am 09.12.09 - 11:24:07
Ich bin mir nicht 100%ig sicher, aber das, was du gemacht hast, geht glaube ich nur wenn sich das verlinkte Dokument in der gleichen Datenbank befindet.

Ist ja eigentlich auch logisch. Denn es fehlen die Informationen wo sich die Datenbank befindet, die das verlinkte Dokument beinhaltet. Also allein die Universal ID wird nicht ausreichen.

Du musst wohl oder übel einen richtigen DocLink erzeugen.
Oder du schreibst eine Notes-URL zu dem zu verlinkenden Dokument in ein Feld (z.B. VideoDateiURL) die du mit einem Hotspot und der Formel @URLOpen aufrufen kannst.
Titel: Re: Doklink erzeugen klappt nicht!???ß
Beitrag von: ascabg am 09.12.09 - 11:37:44
Hallo,

Ein Dok-Link wird hier aus meiner Sicht nicht erzeugt.

Ich wuerde mir mal die Klasse NotesRichTextItem mit all seinen Methoden ansehen.


Andreas
Titel: Re: Doklink erzeugen klappt nicht!???ß
Beitrag von: masterste2000 am 09.12.09 - 13:53:35
Danke, wenn ich jetzt mal den Versuch mit notesrichtextitem starte,
bekomme ich folgende Fehlermeldung:

Couldn't get default View id for Database (Datenbank A) !!!???????????



Sub Click(Source As Button)
   Dim workspace As New NotesUIWorkspace
   Dim uidocVID As NotesUIDocument
   Dim uidoc As NotesUIDocument
   
   Set uidoc = workspace.Currentdocument
   Set uidocVID = workspace.ComposeDocument _
   ( "MeinServer", "Anwendungen\ProjAllgVID.nsf", "VideoAblage" )

   Dim doc As NotesDocument
   Dim docVID As NotesDocument

     Set docVID = uidocVID.document
   Set doc = uidoc.document   
   Dim rt As NotesRichTextItem
   Set rt = New notesrichtextitem(docVID, "dokID")
   
   Call rt.AppendDocLink( doc, "" )

   
   
End Sub
Titel: Re: Doklink erzeugen klappt nicht!???ß
Beitrag von: Axel am 09.12.09 - 13:56:50
...bekomme ich folgende Fehlermeldung:

Couldn't get default View id for Database (Datenbank A) !!!???????????


Die Fehlermeldung beinhaltet auch schon die Lösung.

... Couldn't get default view...

Du musst eine Ansicht in der Datenbank zur Default View (dt. Vorgabeansicht) machen.

Axel
Titel: Re: Doklink erzeugen klappt nicht!???ß
Beitrag von: masterste2000 am 09.12.09 - 14:07:12
Habe gerade eine Ansicht als Default gesetzt, hat aber auch nichts gebracht!

Ich möchte doch nur ein Doclink auf das neue Dokument in der Datenbank B in das Dokument der Datenbank A erzeugen!

Hat denn keiner ein Tip wo ich  mit Skript da ansetzen kann!!!


VIELEN DANK!!!!!!!


 
Titel: Re: Doklink erzeugen klappt nicht!???ß
Beitrag von: ascabg am 09.12.09 - 14:29:45
Frage falsch gestellt.

In welcher DB hast Du die Standardansicht erstellt?
Was funktioniert jetzt immer noch nicht?


Andreas
Titel: Re: Doklink erzeugen klappt nicht!???ß
Beitrag von: Axel am 09.12.09 - 14:35:11
Habe gerade eine Ansicht als Default gesetzt, hat aber auch nichts gebracht!

Was heisst das?

Axel
Titel: Re: Doklink erzeugen klappt nicht!???ß
Beitrag von: masterste2000 am 09.12.09 - 15:26:25
Ok, dann fang ich noch weiter vorne an.

Das Skript wird über ein Schaltfläche startet aus dem Dokument A gestartet.

Über das Skript wird in der anderen Datenbank B ein weiteres Dokument erzeugt.

Das erzeugte Dokument soll über das Dokument in der ersten Datenbank A, über ein Doclink geöffnet  werden.




P.S. Habe auf beiden Seiten (Datenbank A und B) eine Ansicht als default gesetzt!
       Jetzt wird der Fehler nicht mehr angezeigt, aber es wird auch nicht der Doklink in das Feld "VideoAblage" im Dokument der Datenbank A eingefügt!!??


Titel: Re: Doklink erzeugen klappt nicht!???ß
Beitrag von: ascabg am 09.12.09 - 15:38:24
Zum einen das Feld "Videoablage" sehe ich nicht.
Mit Deinem Script wuerde er einen Dok-Link auf das aktuell geoeffnete Dokument im neu erstellten Dokument erzeugen.

Dieser wuerde in dem Feld "dokID" erstellt werden.

Wen nich Deinen Ausfuehrungen nun folge, so wie ich es verstehe, moechtest Du aber einen Dok-Link auf das neu erstellte Dokument im aktuellen Dokument erstellen.

Das funktioniert aber nur, wenn Du Dein neu erstelltes Dokument speicherst und dann den Dok-Link erstellst.

In dem Fall muesste die Schreibweise folgende sein:

Code
Set rt = New NotesRichTextItem(doc, "RTFeld")
Call rt.AppendDocLink(docVID, "Das ist der Link auf das neu erstellte Dokument")

Und die Standardansicht muss in der Db vorhanden sein, in der sich das Dokument befindet, auf welches der Dok-Link verweist.


Andreas
Titel: Re: Doklink erzeugen klappt nicht!???ß
Beitrag von: masterste2000 am 09.12.09 - 16:13:18
Vielen Dank Andreas.

Habe das Skript jetzt mal angepasst, doch es wird weiterhin in dem Feld "Videodatei" kein DocLink eingefügt! :-:

Vieleicht habe ich ja was übersehen?!

Sub Click(Source As Button)
   Dim workspace As New NotesUIWorkspace
   Dim uidocVID As NotesUIDocument
   Dim uidoc As NotesUIDocument
   
   Set uidoc = workspace.Currentdocument
   Set uidocVID = workspace.ComposeDocument _
   ( "MeinServer", "Anwendungen\ProjAllgVID.nsf", "VideoAblage" ) 'Neues Dok in der DB B erstellen

   Dim doc As NotesDocument
   Dim docVID As NotesDocument
   
   Call uidocVID.save ' Speichern des Doks in der DB B
   
   Set docVID = uidocVID.document
   Set doc = uidoc.document   

   Dim rt As NotesRichTextItem
   Set rt = New notesrichtextitem(doc, "VideoDatei")
   
   Call rt.AppendDocLink( docVID, "Link auf das Videodokument in der DB B" )
   
End Sub
Titel: Re: Doklink erzeugen klappt nicht!???ß
Beitrag von: DerAndre am 09.12.09 - 16:37:55
Nach Doc zu und auf auch nicht?

Wir hantieren mit einem RTF und das zeigt eigentlich erst nach dem schliessen und wieder öffnen seinen wahren Inhalt an.
Titel: Re: Doklink erzeugen klappt nicht!???ß
Beitrag von: masterste2000 am 10.12.09 - 08:27:56
 Hi Andre,

auch das Abspeichern des Dok's in der DB A hat nichts gebracht!  ::)

Normalerweise sollte doch das Symbol für den DokLink im Feld "VideoDatei" vom Typ Text angezeigt.

Dieses wird, wie schon gesagt, auch nicht nach dem speichern angezeigt! :-:

Hat das noch keiner Mal an einer anderen Stelle schon mal benutzt!

Ich hoffe es findet sich noch jemand mir evtl. mit seinem Skript unter die Arme greifen kann. ;)

Gruß
Stephan
Titel: Re: Doklink erzeugen klappt nicht!???ß
Beitrag von: ascabg am 10.12.09 - 08:34:16
Frage.

Das Feld "ViedeoDatei" ist in der Maske vorhanden?
Hat es wirklich den Feldtyp "Text"?

Wenn ja, dann kann Dein DokLink auch nicht funktionieren.

Mit Deinem Code erzeugts Du nur ein weiteres Feld mit dem Name "VideoDatei", welches in Deiner Maske dann aber nicht angezeigt wird. (auch nach dem Speichern des Dokumentes, dem anschliessenden Schliessen des Dokumentes und dem erneuten oeffnen des Dokumentes.

Code
   Dim workspace As New NotesUIWorkspace
   Dim uidocVID As NotesUIDocument
   Dim uidoc As NotesUIDocument
   Dim rt As Variant

   Set uidoc = workspace.Currentdocument
   Set uidocVID = workspace.ComposeDocument _
   ( "MeinServer", "Anwendungen\ProjAllgVID.nsf", "VideoAblage" ) 'Neues Dok in der DB B erstellen

   Dim doc As NotesDocument
   Dim docVID As NotesDocument
   
   Call uidocVID.save ' Speichern des Doks in der DB B
   
   Set docVID = uidocVID.document
   Set doc = uidoc.document   

   Set rt = doc.GetItemValue("VideoDatei")
   If Not rt Is Nothing Then
     Call rt.AppendDocLink(docVID, "Link zum Dok in Db B")
   End If


Andreas
Titel: Re: Doklink erzeugen klappt nicht!???ß
Beitrag von: DerAndre am 10.12.09 - 09:18:18
Das Frontend brauch ein Feld vom Typ Richtext!
Titel: Re: Doklink erzeugen klappt nicht!???ß
Beitrag von: masterste2000 am 10.12.09 - 10:20:24
Danke!!!

Das Dokument im Backend wird gespeichert und hat auch den DokLink!!!! Vielen Dank  :knuddel:

Ziel sollte es aber sein, dass es im Frontend sichtbar / eingefügt wird!

Besteht jetzt noch die Möglichkeit das das Feld VideoDatei aus dem Backend in das Feld Videodatei des Frontend zu kopieren?


Gruß
Stephan


Titel: Re: Doklink erzeugen klappt nicht!???ß
Beitrag von: ascabg am 10.12.09 - 10:26:14
Nein.

Du musst das Dokument aus dem Frontend speichern, schliessen und neu oeffnen.


Andreas
Titel: Re: Doklink erzeugen klappt nicht!???ß
Beitrag von: DerAndre am 10.12.09 - 10:44:29
Ich würde mich nochmal eingehend mit Frontend und Backend beschäftigen.

Was Andreas geschrieben hat, ist auch hier im Forum vorhanden.
Titel: Re: Doklink erzeugen klappt nicht!???ß
Beitrag von: Axel am 10.12.09 - 10:57:54
Du willst hier im Forum mal nach ReOpen suchen.

Axel
Titel: Re: Doklink erzeugen klappt nicht!???ß
Beitrag von: Johnson am 10.12.09 - 14:44:20
Ein Dokument muss nicht unbedingt gespeichert werden, nur um ein RT-Item zu aktualisieren: s. hier (http://atnotes.de/index.php/topic,44122.0.html)
Ein einfaches Schließen und Öffnen reicht.
Titel: Re: Doklink erzeugen klappt nicht!???ß
Beitrag von: ascabg am 10.12.09 - 15:09:53
Er hat das Dokument doch aktuell offen im Frontend.
Im Backend erstellt er ein neues Dokument in einer 2. Db.
Und nun moechte er im Feld des Frontenddokumentes einen Dok-Link auf das neue Dokument in der 2. Db erstellen.

Wie willst Du das Dok. im Frontend, ist ja immer noch offen, mit den aktuellen Daten versorgen, da du den Link ja im Backend erstellt hast?

Wie soll das Dokument im Frontend die Aenderungen, die an im in seinem Backend vorgenommen wurden, denn anzeigen, ohne es zu speichern und neu zu laden?


Andreas
Titel: Re: Doklink erzeugen klappt nicht!???ß
Beitrag von: Johnson am 10.12.09 - 16:30:57
Naja???

Ich hab's jetzt nochmal getestet und siehe da... Du brauchst es nicht speichern:
(Wir erzeugen hier einen Link vom ersten Dokument in der Datenbank)

Code
Sub Click(Source As Button)
	
	Dim db As NotesDatabase
	Dim doc As NotesDocument
	Dim doc_link As NotesDocument
	Dim rti As NotesRichTextItem
	Dim uidoc As NotesUIDocument
	Dim uiws As NotesUIWorkspace
	
	
' ### initialize ###
	
	Set uiws = New NotesUIWorkspace
	Set uidoc = uiws.CurrentDocument
	Set doc = uidoc.Document
	Set db = doc.ParentDatabase
	Set doc_link = db.AllDocuments.GetFirstDocument
	
	
' ### close frontend document ###
	
	doc.SaveOptions = "0"
	Call uidoc.Close(True)
	Set uidoc = Nothing
	
	
' ### get or create target rich text item ###
	
	If doc.HasItem("Body") Then
		Set rti = doc.GetFirstItem("Body")
	Else
		Set rti = doc.CreateRichTextItem("Body")
	End If
	
	
' ### append doc link ###
	
	Call rti.AppendDocLink(doc_link, "")
	Call rti.Update
	
	
' ### reopen the modified document ###
	
	Set uidoc = uiws.EditDocument(True, doc, False)
	Set doc = uidoc.Document
	Call doc.RemoveItem("SaveOptions")
	
End Sub

Es muss bei neuen nur noch ein Form-Feld mit dem Namen der Form vorhanden sein. Ich hab's im Test jetzt direkt in der Maske angelegt.

Titel: Re: Doklink erzeugen klappt nicht!???ß
Beitrag von: ascabg am 11.12.09 - 07:17:49
Ja.

Und wo bleibt das uidoc permanent offen im Vordergrund?
(es ist geschlossen und der Link wird im Backend des ehemals offenen uidoc erzeugt und danach wird es wieder geoeffnet)

Und wo wird das zu verlinkende Dokument NEU erstellt?


Andreas
Titel: Re: Doklink erzeugen klappt nicht!???ß
Beitrag von: DerAndre am 11.12.09 - 08:47:55
Hi Andreas.

Johnson sagt, daß das doc nicht _gespeichert_ werden muß. Um das Re-Open kommt keiner herum, auch Johnsen nicht wie wir sehen.

Aber dieser Code erfüllt nicht die gewünschte Anforderung, denn er macht genau das Gegenteil.
Gewünscht:
Doc Link erzeugen der sofort im FrontEnd zu sehen und gespeichert ist

Gepostet:
DocLink nach Reopen zu sehen und _nicht_ gespeichert.

Allerdings kann man diesen als Grundlage für das gewünschte Ergebnis verwenden.
Titel: Re: Doklink erzeugen klappt nicht!???ß
Beitrag von: masterste2000 am 11.12.09 - 12:59:16
Problem ist gelöst!  ;D
Auf dem Weg wollte ich mich bei allen bedanken, die mir bei dem Problem geholfen haben und wünsche ein schönes WE!!!


Gruß
Stephan