Domino 9 und frühere Versionen > ND8: Entwicklung

Dokumentenlink in ein bereits geöffnetes Dokument einer anderen DB zurückschreib

(1/3) > >>

RunRevilo:
Hallo,

überlege nun schon eine ganze Weile und habe auch hier im Forum schon gesucht, aber irgendwie noch nicht den richtigen Ansatz gefunden.
Folgende Problemstellung:
Wir benutzen eine nicht von uns erstellte Anwendung für Kundenkontakte, wo wir gewissen Anpassungen auch selber machen können. Grob gesagt besteht die Anwendung aus 2 Datenbanken. In der DB A werden die Kundenkontakte verwaltet und eine DB D, dient zur Ablage von diversen Dokumenten/Dateien (z.B. eingescannte Dokumente oder Worddateien usw.) zu einem Kunden.

Ich möchte nun folgendes realisieren.
Der User befindet sich in der DB A und dort hat er das Dokument K geöffnet. Über eine Schaltfläche gelangt er in die DB D, wo sich ein Dokument U öffnet, in welchem er in einem RichtTextFeld eine Datei einfügt/anhängt. Nun möchte ich, dass wenn der User das Dokument U schließt, ein Dokumentenlink auf dieses Dokument in ein Feld des Dokumentes K in der DB A zurückgeschrieben wird.

Mir ist nicht klar, wie ich von Dokument U (was in dem Moment das currentDocument ist) wo sich der User befindet, das zur gleichen Zeit auch geöffnete ( in einem anderen Fenster) Dokument K ansprechen kann.

Hätte mir nämlich was in dieser Art vorgestellt. Ich erstelle den Dokumentenlink und Kopier den in das enstprechende Feld des Dokumentes K. Doch wie spreche ich das bereits bestehende und geöffnete Dokument K aus dem Dokument U an?

Dim itmLink As New NotesRichTextItem(docK,"linkD")  ' Richtext Feld erstellen itmLink.AppendText("Link zum Dokument  --> ") Call itmLink.AppendDocLink(docSource.Document,"Maßnahme") 'um Dokumentenlink zur erstellen itmLink.Update


Hoffe ich habe das Problem halbwegs verständlich rüber bringen können.

Oliver

Tode:
Wenn Du im QueryOpen der Maske von Dokument U auf NotesUIWorkspace.CurrentDocument zugreifst, dann ist das noch das zuvor geöffnete Dokument. Schreib Dir das in eine Globale Variable, dann kannst Du im QueryClose darauf zugreifen, und Dein Voodoo machen. Achtung: Richtext- Stunts werden in Dokument K erst nach Schliessen und erneutem Öffnen sichtbar.

Ich würde allerdings hier mit einem Feld "DokU_unid" arbeiten und einer Schaltfläche oder einem Hotspot (die ja wie ein Doclink aussehen kann), die per LotusScript das DokU holt und per ws.EditDocument öffnet. Richtextfelder sind schlecht zu warten, und mit der UNID in einem Feld kannst Du auch Lookups in DokU machen ala "Wer verlinkt alles auf mich", und dann diese wieder als Doklink in DokU anzeigen. Ausserdem ist eine Suche "wo sind verwaiste DokLinks" oder ein "Copy & Paste" unter Beibehaltung des Links machbar, was mit Richtextfeldern ziemlich schwierig ist.

RunRevilo:
Hallo Tode,

danke für den Hinweis mit dem QueryOpen und danke für den Vorschlag mit dem Feld "DokU_unid".
Dieser klingt doch vernünftiger. Werde versuchen diesen um zu setzen.

Oliver

RunRevilo:
Hallo,

steh gerade ein wenig auf der Leitung.

Wenn ich im queropen vom Dokument U auf das Dokument K zugreifen will mit:

Set docK = ws.CurrentDocument

bekomme ich die Fehlermeldung "Variant does not contain an object".
Wo muss ich eigentlich den NotesUiWorkspace initalisieren. In den globeln Berich der Maske für Dokument U?


Das Dokument U wir durch folgenden Code einer Schaltfläche aufgerufen, eigentlich neu erstellt und im Edit-Modus geöffnet.


--- Code: ---Dim docU As NotesDocument
Set docU = New NotesDocument(dbDoc)
With docU
    .Form="DokumentenAblage"
    .Ndg=docSource.FieldGetText("Ndg")
   .Name=docSource.FieldGetText("Name")
   .Vorname=docSource.FieldGetText("Vorname")
   Dim uidoc As NotesUIDocument
   Set uidoc= ws.EditDocument(True,docU)
End With
--- Ende Code ---

Könnte sein dass durch die Zeile Set uidoc=ws.EditDocument(true,docU) der Code im Queryopen von Dokument U (docU) gar nicht funktionieren kann, da dort ws.currentdocument nicht mehr auf docK zeigt sondern bereits auf docU?

Oliver

Tode:
Du musst natürlich ws im Queryopen neu definieren. Das sind zwei völlig voneinenader getrennte Adressbereiche, die keinerlei Variablen "sharen" (leider)... Das neue Dokument läuft in einem völlig eigenen LotusScript- Thread, der von Deinem aufrufenden Script nix mitbekommt...

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln