Domino 9 und frühere Versionen > ND8: Entwicklung
Aktualisierungsproblem bei getProfileDocument
seal:
Hallo zusammen,
also ich habe folgende Ausgangssituation. Ich wähle einen Empfänger über eine Dialogbox aus. Wenn ich diesen ausgeählt habe, gehe ich in sein persönliches Profildokument und schaue, ob dieser einen Vertretter aktiviert und eingetragen hat. Funktioniert alles wunderbar, aber ich habe ein Aktualitätsproblem. Wenn er ausgewählte Empfänger seinen Vertretter ausgeschaltet habe und ich ihm die MAil wieder schicke, dann erkennt er das nicht gleich. Erst wenn ich Notes bei mir schließe, öffne und danach nochmal versuche. -> CACHE???
Kann ich Notes irgenwie zwingen den Cache zu aktualisieren bevor ich mir das Profil holle oder nochmal aktualisiern bevor ich mir die Werte daraus ziehe?
Ich holle mir das ProfilDoc des empfängers mit dem Aufruf:
Set verteilerDoc = db.Getprofiledocument("(ProfilePersonal)", fromName.Canonical)
Viele Grüße,
seal
ascabg:
Hallo,
Gemein gesagt.
Arbeite nicht mit Profile-Dokumenten, sondern mit "normalen" Dokumenten.
Andreas
koehlerbv:
Das, was Du da beobachtest, ist exakt das, wofür ProfileDocuments geschaffen wurden: Einmaliges auslesen und dann sehr schneller Zugriff.
Eine Aktulaisierung findet nur statt (zunächst nur im Speicher!)
- wenn die DB geöffnet / das ProfileDocument erstmals geselen wird
- wenn der Benutzer eine Änderung durchführt (und das bekommt erstmal nur der Benutzer mit!).
Wenn das Verhalten nicht passt, darfst Du natürlicherweise keine ProfileDocuments verwenden!
Bernhard
seal:
Hallo zusammen,
vielen Dank für die Hinweise.
Hätte halt gerne die Vorzüge von ProfilDocuments und normalen Documents benötigt.
Geht leider nicht, muss ich damit leben. :-)
pram:
Das Profildokument kannst du so aktualisieren:
--- Code: ---set proDoc = db.getProfileDocument("pd") ' gecachedes Doc
noteID = proDoc.noteID ' NoteID merken
delete proDoc ' Doc aus Speicher werfen und über die NoteID wieder holen
set proDoc = db.getDocumentById(noteID) ' gespeicherter Inhalt, allerdings kein "echtes" Profil
set tmpDoc = net NotesDocument(db) ' Zwischenspeicher
call proDoc .copyAllItems(tmpDoc)
delete proDoc ' das proDoc aus dem Speicher werfen, da es kein "echtes" Profil ist, weil es nicht mit getProfileDocument geholt wurde
set proDoc = db.getProfileDocument("pd") ' gecachedes Doc (mit alten Daten)
call tmpDoc.copyAllItems(proDoc) ' in tmpDoc ist der aktuelle Inhalt
proDoc.timestamp = now ' irgend ein Feld verändern
call proDoc.save(false, false) ' damit es gespeichert wird
--- Ende Code ---
zugegeben nicht sehr elegant. Man benötigt dies aber z.B. wenn man einen "reopen" beim Editieren eines Profils ausführt.
Gruß
Roland
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln