HCL Domino 日報 — 每日技術精選
HCL Domino 中英雙語日報,每日精選生態系最新動態與技術深度文章。
最新文章
- Domino Web View 翻頁的真相:Start 不是流水號,是階層座標
「我以為 Start=31 就是第 31 列,然後我錯了。」一篇 classic view ?OpenView Start 參數的除錯實測報告:純數字跳到第 N 個最上層分類、像 1.1.1.1.6 的點號值是階層座標、末段會 clamp 但中段不會、而你沒辦法用一個 URL 跳到絕對最後一頁。外加三個實用應用 —— 分類內序號、@DocNumber("")(含必須單獨使用的地雷)、以及用 ReadViewEntries 做麵包屑。
2026.07.23 - 你的 Domino view 表頭為什麼永遠歪一格:passthrough HTML 黑魔法考古
接手一個老 classic-web Domino view,你常會發現直欄標題整體往右偏一格 —— 而且沒人知道為什麼。一篇實測報告,挖出藏在二十年前 view 設計裡的 passthrough HTML 把戲:直欄值與標題裡的方括號 HTML、間隔欄、每列 checkbox,以及真正的元兇 —— 一個故意不閉合的 <input 標籤吞掉 </td><td> 欄界線、把兩個直欄合併成一格,讓它之後的每個表頭都往右偏。
2026.07.22 - DQL 跳「Domino Query 執行時錯誤」怎麼辦:三層診斷階梯
一個 DQL 查詢失敗,你看到「Domino Query 執行時錯誤:」後面接一大串文字。一篇讀懂這個訊息的實測報告:你在 Err 裡找到的 4854 對診斷毫無用處(每個 DQL 失敗都回它),答案永遠在「詳細原因」那一行。涵蓋四段訊息結構、三層階梯(catalog / view 沒建 / partial TIMEDATE)、讓查詢時好時壞的 design catalog 半殘、以及「0 筆且無錯誤」的排查清單。
2026.07.21 - DQL view 日期直欄查詢:型別與時區怎麼無聲吃掉你的結果(三個成因)
「直欄轉成日期反而有些抓得到有些沒抓到,蠻怪的。」一篇實測報告:一個 DQL view 直欄日期查詢結果不一致,拆開來發現有三個獨立成因。DQL 從不自動轉型(所以直欄的輸出型別要跟查詢詞相符)、底層欄位存了文字與日期混型、而 @dt 不帶時區位移就是 UTC——它會在不改變總筆數的情況下弄壞邊界文件。兩個解法皆實測 6/6 全中。
2026.07.20 - NotesXSLTransformer:用 LotusScript 以 XSLT 轉換 XML 與 DXL
NotesXSLTransformer 把 XSLT stylesheet 套到 XML 或 DXL 上、寫出轉換結果 — 是 Domino XML 工具組裡繼 DOM 與 SAX parser 之後的最後一塊。本文說明 session.CreateXSLTransformer 與它的三種來源、stylesheet 必須是 stream 的規則、把 DXL export → 轉換 → import 串起來而不落暫存檔的 pipelining 模型、以及那個透過 Log 屬性與 On Error(而非事件)運作的錯誤處理。
2026.07.19 - NotesJSONNavigator:LotusScript 原生 JSON 解析,不必再做字串手術
在 Domino 10.0.1 之前,用 LotusScript 解析 JSON 意味著 Evaluate 花招或手刻的字串手術。NotesJSONNavigator 用一個真正的 parser 取代了那些:session.CreateJSONNavigator 給你一棵可用 GetElementByName、GetNthElement、JSON Pointer 路徑導覽的型別化樹。本文說明 navigator、element/object/array 類別、型別常數,以及命名上的意外(是 GetFirstElement 不是 GetFirstItem;AppendElement 是 value 在前 name 在後)。
2026.07.18 - 用程式管理全文索引: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