@DialogBox z pohledu a žádný označený dokument
3.08.2007
Lotus Notes
Jak bezpečně pomocí agenta zobrazit @DialogBox v pohledu.
Pokud chceme zobrazit @DialogBox v pohledu, musíme mít označený dokument. Pokud není označen dokument vyhodí to chybovou hlášku, něco jako:
@DialogBox cannot be used in this context; a document must be selected.
Co s tím, pokud tu hlášku nechceme, anebo ji chceme přebít svou vlastní hláškou?
Řešení je jednoduché. Stačí jednoduchá kontrola, zda je označen dokument, nebo ne. V agentovi, který má nasteven Target na none umístěte před samotnou výkonnou formuli následující podmínku:
@If(@Text(@DocumentUniqueID) = "00000000000000000000000000000000"; @Return(1); @Success);
Tohle zajistí, že se žádná hláška nezobrazí. Pokud chceme nějakou svojí, stačí místo @Return(1) napsat @Return(@Prompt(...))
Komentáře
Pro lenochy (B3, 03.08.2007, 13:28:15)
Místo dvaatřiceti nul uzavřených v uvozovkách je možné použít:
@Repeat("0"; 32)
Z hlediska běhu programu by to mohlo být teoreticky o něco pomalejší, protože tohle se musí vypočítat (narozdíl od původní konstanty). Ale z hlediska rychlosti psaní kódu přes klávesnici je to rychlejší než psát 32 nul (pokud nebereme v úvahu kopírování přes clipboard).
Posuďte sami dosaženou úsporu z hlediska vzhledu upraveného kódu v porovnání s původním kódem v článku:
@If(@Text(@DocumentUniqueID) = @Repeat("0"; 32); @Return(1); @Success)
(Lokutus, 03.08.2007, 13:36:03)
Ano, ušetřili jsme celých 16 znaků. :-)
Když vezmu v úvahu, že jsem to psal jednou v životě a od té doby to kopíruji...
Něco úspornějšího ke kopírování (B3, 03.08.2007, 14:08:36)
Např. od R5:
@If(@DocFields = ""; @Return(1); @Success);
Nebo za předpokladu, že se v DB nevyskytují dokumenty bez formulářů:
@If(Form = ""; @Return(1); @Success);
Zkrátka: Počet podmínek umožňujících rozeznat, že kurzor není na dokumentu (ale třeba na kategorii), může být za určitých podmínek nekonečný.
Úspora 16 znaků (B3, 03.08.2007, 14:42:52)
Z hlediska potencionálních chyb je konstanta obsahující 32 stejných znaků nebo číslic podstatně náchylnější k chybám vyplývajících z možných překlepů. Pokud by se při editaci kódu přesunul kurzor mezi znaky v konstantě a jedna z nul by byla přidána nebo odebrána, dá se to zjistit pouze vizuálně, což je u řady stejných čísel relativně obtížné a snadno přehlédnutelné. Použití funkce @Repeat pro vytvoření řady stejných znaků je z tohoto pohledu daleko odolnější proti podobným chybám.