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
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.
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
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
Hallo,
ich habe leider immer noch Probleme mit dem Zugriff auf das aufrufende Dokument.
Vielleicht übersehe ich einfach was, deshalb versuche ich noch mal die Situation dar zu stellen.
Mitarbeiter befindet sich in der Datenbank Kunden im Dokument Kontakt.
Dort ruft er über eine Schaltfläche folgenden Code auf:
Sub Click(Source As Button)
Dim s As New NotesSession
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Set db = s.CurrentDatabase
Dim doc As NotesUIDocument
Set doc =ws.Currentdocument
Dim servername As String
servername="xxxxxxxx"
Dim docProfil As notesdocument
Set docProfil = db.GetProfileDocument("ProfilEinstellungen")
Dim dbname As String
Dim item As notesitem
Set item = docProfil.GetFirstItem("Pfad")
dbname= Cstr(item.Values(0))
Call doc.Save
' die Datenabnk wo die Dokumente abgelegt werden wird geöffnet
Dim dbDoc As New notesdatabase (servername,dbname)
' neues Ablage Dokument wird erstellt, Daten übergeben und im Edit Modus geöffnet
Dim docAblage As NotesDocument
Set docAblage = New NotesDocument(dbDoc)
With docAblage
.Form="DokumentenAblage"
.Ndg=doc.FieldGetText("Ndg")
.Name=doc.FieldGetText("Name")
.Vorname=doc.FieldGetText("Vorname")
.Hofname=doc.FieldGetText("Hofname")
.Geburtsdatum=doc.FieldGetText("Geburtsdatum")
.Kundenbetreuer=doc.FieldGetText("Kundenbetreuer")
.Filiale=doc.FieldGetText("Filiale")
Dim uidoc As NotesUIDocument
Set uidoc= ws.EditDocument(True,docAblage)
End With
Exit Sub
Dadurch öffnet sich in einem neuen Fenster das Dokument DocAblage, welches sich in der Datenbank Dokumente befindet, im Bearbeiten Modus
In der Maske DocAblage habe ich folgenden Code.
Unter (Globals) DokumentenAblage - Declarations
Dim docK as NotesUiDocument
und im Queryopen der Masket DokumentenAblage
Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
Dim workspace As New NotesUIWorkspace
Set docK=workspace.currentdocument
'nur um zu sehen ob ich auf docK Zugriff habe
Msgbox "docK " + docK.fieldgettext("form")
End Sub
und genau hier bekomme ich die Fehlermeldung "Variant does not contain an object"
Wenn ich die Meldung bestätige befinde ich mich dann im neu angelegten Dokument DocAblage im Bearbeitungsmodus, was ja gewünscht wäre.
Aber ich bekomme keinen Zugriff mehr auf das noch offene Dokument Kontakt in der andernen Datenbank Kunden, in welchem ich ja dann die UNID des Dokuments DocAblage zurück schreiben möchte.
Wo mache ich was falsch?
Schon mal Danke für die Tips
Oliver