Václav Ťulák | problém při práci s výběrem |
| Dobrý den, narazil jsem na problém který zatím nedokážu vyřešit, při práci s výběrem dokumentů v pohledu dle následujícího výpisu (jde o jednoduchou změnu hodnoty jednoho pole ve vybraných dokumentech prostřednictví akčního tlačítka a následný refreš pohledu již bez změněného dokumentu) všechno funguje dokud neudělám následující postup:
1. označím si 1 či více dokumentů (je jedno zda stojím na jednom z vybraných dokumentů či ne) 2. provedu akci (ta se provede OK) 3. aniž bych by udělal další výběr, mám jen vysvícený dokument v pohledu, provedu akci znovu a nic se nestane.
Po čerstvém otevření databáíze, dokud neudělám nějaký výběr, akce funguje i na vysvícený dokument, pak už ne.
při ladění jsem zjistil že zůstává stále informace o výběru aktivní (dc.count má stále původní hodnotu), takže skript probíhá a přepisují se obsahy polí z předchozí akce jakoby dokumenty byly stále vybrané a v původním pohledu. Když kliknu myší na jiný řádek, či přepnu pohled nic se nezmění, musím zavřít a znovu otevřít databázi. Pokud udělám jiný výber s tím to funguje, ale pak je situace stejná
Sub Click(Source As Button) Dim session As New NotesSession Dim ws As New NotesUIWorkspace Dim uiview As NotesUIView Dim dc As NotesDocumentCollection Dim doc As NotesDocument Set uiview = ws.CurrentView Set dc = uiview.Documents If dc Is Nothing Then Set doc = session.DocumentContext Else Set doc = dc.GetFirstDocument End If While Not (doc Is Nothing) Call doc.Replaceitemvalue("Archiv", "A") Call doc.Save(True, True) If dc Is Nothing Then Set doc = Nothing Else Set doc = dc.GetNextDocument(doc) End If Wend Call ws.ViewRefresh End Sub
existuje nějaká možnost jak informaci o původním výběru odstranit jinak než znovuotevřením databáze? Na nic nemůžu přijít.
Děkuji za pomoc. |
Václav Ťulák | tak už jsem to vyřešil |
20.01.2020 12:57:01
ID: 3726.1

| nakonec skriptu jsem musel přidat
Call uiview.DeselectAll
Nějak mi nenapadlo hledat o třídu výše než v collections. |
mpistora | Agentem na vybrané dokumenty |
21.01.2020 16:24:26
ID: 3726.2
| Standardně se to řeší agentem nastaveným na "All selected documents", který se volá z akčního tlačítka pohledu. Ve skriptu se kolekce získá pomocí db.UnprocessedDocuments a je tak zajištěno, že se pracuje buď s aktivním dokumentem nebo s "oháčkovanými", jen zřidka je to potřeba rozlišovat. Po skončení agenta se deselect provede automaticky, kód přímo v akčním tlačítku to nedělá (to se hodí jen zřídka). |
Vaclav Ťulák | Diky za tip |
24.01.2020 11:40:15
ID: 3726.3
| Agenta jsem nechtěl použít, byla to jednoúčelová záležitost do konkrétního pohledu a takto mi to připadlo čistší. Nakonec se to tedy povedlo ale chvíli mi to zabralo, ten deselect jsem hledal ve špatné třídě. |