Domino 9 und frühere Versionen > ND8: Entwicklung
Dokumentenlink in ein bereits geöffnetes Dokument einer anderen DB zurückschreib
koehlerbv:
Im QueryOpen ist ja noch gar kein Dokument offen - QueryOpen ist ja das Vorspiel dazu.
Der Zugriff auf das Dokument gelingt Dir im QueryOpen über den Parameter Source. Aber es ist unbedingt zu beachten, daß Dir in diesem Moment bei weitem noch alle Eigenschaften des Objekts zu Verfügung stehen.
Bernhard
RunRevilo:
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:
--- Code: ---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
--- Ende Code ---
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
--- Code: ---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
--- Ende Code ---
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
DerVissi:
Hallo Oliver,
sorry meine erste Meldung war falsch
Du brauchst zuerst noch das NotesUiDocument
und dann kannst du darüber das NotesDocument holen.
Gruß
Andreas
Tode:
Probier mal, den Code statt im QueryOpen ins z.B. Initialize zu schieben, ich bin vorgestern darüber gestolpert, dass sich da wohl mit 9.0.1 was geändert hat, und man u.U. im QueryOpen den Zugriff auf das "öffnende" Dokument nicht mehr hat... Hat mich Stunden gekostet, rauszufinden, warum Code, den ich schon seit Jahren verwende, plötzlich nicht mehr tut...
RunRevilo:
Vielen Dank,
der entscheidende Tip war den Code ins Initialize zu schieben und schon klappte es perfekt.
@Tode bin dir ein Bier schuldig (evtl. beim Entwicklercamp 2015)
Oliver
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln