所有文章
- 用程式管理全文索引:CreateFTIndex、UpdateFTIndex,與本機 vs 伺服器的分界
FTSearch 要快、要能用萬用字元與相關性排序,就需要全文索引 — 而 NotesDatabase 能用 LotusScript 建立、更新、移除索引。陷阱是一個幾乎沒人料到的分界:CreateFTIndex / UpdateFTIndex / RemoveFTIndex 只對本機資料庫有效,而 FTIndexFrequency 只對伺服器有效,伺服器索引其實是由 Updall 工作管理的(updall -X 是重建、不是建立)。本文說明 options bitmask、create 與 update 的差別、以及那個分界。
2026.07.17 - LotusScript 的文件鎖定:Lock、LockProvisional,與每個人都忘記的前置條件
Domino 能鎖定一份文件、讓兩個使用者不會同時編輯它 — NotesDocument 上的 Lock、LockProvisional、UnLock、LockHolders。但這些方法會拋錯,除非資料庫啟用了鎖定(IsDocumentLockingEnabled)而且設好了 master lock server;persistent 與 provisional 鎖取決於那台伺服器是否可達;而鎖在 web 應用裡根本不能用。本文說明 API 與每個前置條件。
2026.07.16 - NotesDocument.ComputeWithForm:用程式跑表單驗證 — 以及為什麼它擋不住你的 Save
ComputeWithForm 把表單的預設值、輸入轉換、輸入驗證公式跑在後端文件上 — 相當於使用者在表單上按存檔時觸發的驗證。但三件事會讓人意外:它回一個它從不強制執行的通過/失敗旗標(它照樣讓你把無效文件存進去)、輸入轉換公式可能改寫你的欄位值、而且除非你釘住 Form item、它會悄悄退回預設表單。
2026.07.15 - LotusScript 的回應文件:MakeResponse、ParentDocumentUNID,與遍歷整棵串
Domino 的父子文件階層 — 主文件、回應、回應之回應 — 用幾個 NotesDocument 成員就能建立與遍歷。本文說明 MakeResponse(以及你必須在它之後呼叫的 Save)、用 ParentDocumentUNID 往上走到父文件、以及 Responses 屬性那個關鍵限制:它只回傳直接子文件 — 所以完整的樹需要遞迴。
2026.07.14 - NotesDateTime 與時區:GMTTime、ConvertToZone,與那個絆倒每個人的正負號慣例
一個 NotesDateTime 是單一個瞬間,你可以用三種方式讀出來 —— GMT、機器的本地時間、以及轉換後的時區。本文說明 GMTTime vs LocalTime vs ZoneTime、TimeZone 整數那個反直覺的 Notes 正負號慣例(正值代表 GMT 以西)、ConvertToZone 與它的 DST 陷阱、用 LSGMTTime 做原生日期運算,以及為什麼 GMTTime 是唯一能跨機器安全儲存與比較的形式。
2026.07.13 - 用 LotusScript 簽章與加密文件:Sign、Encrypt,與 Save 的順序規則
Domino 能簽章一份文件以證明是誰寫的、能加密 item 讓只有持金鑰的人讀得到 —— 兩者都能用 LotusScript 做、也都有陷阱。本文說明 NotesDocument.Sign 與它在伺服器 agent 需要的權限、Encrypt 那個必要的「標記 item / Encrypt / Save」順序、逐 item 選擇性加密,以及為什麼 EncryptOnSend 跟「加密儲存的副本」是完全兩回事。
2026.07.12