Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: iukhdh am 10.05.10 - 15:33:14
-
Hallo Forum,
ich brauch mal wieder eure Hilfe:
Ich habe das Dokument A, in dem ich eine eingebettete Ansicht B habe. Ich fülle Ansicht B per Dialogbox mit Dokumenten, diese beinhalten Eurowerte. Danach aktualisiere ich dann die Ansicht B und das Dokument A, da im Dokument A in einem berechneten Feld die Summe der Eurowerte berechnet wird.
Klappt einwandfrei, kann ich alles per Script aktualisieren und durchrechnen.
Nun hab ich aber das Problem, dass man bei geöffnetem Dokument A die eingebetteten Dokumente in Ansicht B ja auch per Doppelklick aufrufen und ändern kann. Ich schaffe es die eingebettete Ansicht zu aktualiseren, aber nicht, das Dokument A zu aktualisieren. Ich komm einfach nicht drauf, wie und wo ich mir dieses hole, bzw. wo ich die Aktualisierung dann anstoße.
Vielleicht denk ich mal wieder zu verquert ...? :-:
-
Du kannst in der eingebetteten UI-View über workspace.currentDocument.document auf das aktuell geöffnete Dokument zugreifen.
Oder dir im geöffneten Unterdokument das übergeordnete Dokument per Lookup nach der Kategorie holen.
Allerdings gibt das immer schöne Nebeneffekte wenn man das Dokument im Hintergrund aktualisiert und speichert.
Gruß
Roland
-
Hallo Roland,
den ersten Teil kapiere ich leider nicht so ganz ... kannst du das bitte noch mit 2-3 weiteren Sätzen erklären?
Teil 2 ist soweit klar, das bekomme ich auch hin.
Thomas
-
Wenn du eine Aktionsschaltfläche/Event IN der eingebetteten Ansicht hast, kannst du mit workspace.currentDocument auf das "um die Ansicht rum" liegende UI-Document und dessen Backend-Document zugreifen und da deine Summen ändern und einen UI-Save / Backend-Save ausführen.
wenn du in der embedded Ansicht ein anderes Dokument per Doppelklick öffnest, sollte
workspace.currentDocument im initialize der UI-Form des gerade angeklickten Dokuments auf das UI-Doc zeigen das deine Ansicht enthält und du aktualisieren willst. Dies könntest du dir im initialize merken (im QueryOpen ist es schon zu spät glaube ich) und dann im PostSave mit aktualisieren.
Aber vorsicht: Das UI-Dok kann inzwischen wer geschlossen haben. Entsprechende Prüfungen einbauen.
Ggf. musst du dir das Dok dann nochmal direkt aus der DB holen.
Gruß
Roland
-
Danke für die weiteren Ergänzungen, das probiere ich gleich mal aus.
:knuddel:
-
Jetzt bin ichs doch nochmal ...
wie meinst du das, dass ich mir das Dokument im initialize 'merken' soll? Mir fällt nur eine Lösung über die notes.ini ein, aber das scheint mir nicht unbedingt die beste zu sein.
Gibt es sonst noch eine Lösung, wie ich das Dokument vom initialize ins PostSave übergebe? Bin leider im Script noch nicht so firm. Meine bisherigen Versuche erstellen nur immer ein zweites, identisches Dokument A, aber im Original tut sich nix :P
-
Ich hab mir das so gedacht:
In der Form folgendes machen:
globals:
Dim parentUIdoc as NotesUIDocument
Dim parentUNID as String
sub initialize
dim ws as new NotesUIWorkspace
set parentUIdoc = ws.currentDocument
parentUNID = ws.currentDocument.universalID
end sub
sub postSave(...)
if parentUIDoc is nothing then
... jemand hat das UIDoc geschlossen-> Sonderbehandlung: Dokument holen und im Backend speichern
set doc = db.getDocumentByUNID(parentUNID)
doc.summe=calcSum()
calld doc.save(false, false)
else
parentUIdoc.document.summe=calcSum()
parentUIdoc.save()
end if
end sub
Das alles ist aber UNGETESTET!
Gruß
Roland
-
Hallo Roland,
vielen Dank, jetzt hat's geklappt. Das mit den globalen Variablen war mir nicht geläufig, bin halt doch noch immer ein Script-Dummie ;) Das wird mir auch in anderen Codes helfen.
^-^