You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LotusScript定时代理ComputeWithForm不计算含@DBLookup字段求解

解决方案

首先明确这是Domino平台的已知原生限制:ComputeWithForm方法设计上就不支持执行@DbLookup、@DbColumn等所有@Db类函数,该限制有IBM官方的正式确认,和权限、服务器配置无关。

推荐标准方案(按优先级排序)

  • 方案1:将Lookup逻辑改用LotusScript直接实现(批量场景最优)
    完全避开表单计算字段的@DbLookup依赖,在代理新增文档时直接查询目标视图取值,性能最高,适合你当前批量新增数据的场景,示例代码如下:

    Sub Initialize
        Dim s As New NotesSession
        Dim db As NotesDatabase
        Set db = s.CurrentDatabase
        ' 提前初始化要Lookup的视图,避免循环内重复打开
        Dim lookupView As NotesView
        Set lookupView = db.GetView("(columnName)") ' 对应@DbLookup使用的视图名
        Dim view As NotesView
        Set view = db.GetView("viewName")
    
        Do
            Dim doc As New NotesDocument(db)
            ' --- 其他新增文档的逻辑代码 ---
            Dim key As String
            key = doc.fieldName(0) ' 对应@DbLookup的匹配键
            Dim lookupDoc As NotesDocument
            Set lookupDoc = lookupView.GetDocumentByKey(key, True)
            If Not lookupDoc Is Nothing Then
                ' 把Lookup到的第2列值直接赋值给对应字段
                doc.empname = lookupDoc.ColumnValues(1) ' 列索引从0开始,第2列对应索引1
            Else
                doc.empname = "no name"
            End If
    
            Call doc.ComputeWithForm(False, False) ' 此时可正常计算其他非@Db类的计算字段
            Call doc.Save(True, False)
        Loop
    
        Call view.Refresh()
    End Sub
    
  • 方案2:用Evaluate函数执行@DbLookup公式
    如果你不想改写原有公式逻辑,可以直接在代理中用Evaluate执行公式获取结果后赋值给字段:

    ' 放在新增文档的逻辑之后,ComputeWithForm之前执行
    Dim formula As String
    formula = |empname := @DbLookup("Notes" : "NoCache"; "serverName" : "dbName.nsf"; "(columnName)"; fieldName; 2);@If(@IsError(empname); "no name"; empname)|
    Dim result As Variant
    result = Evaluate(formula, doc)
    doc.empname = result(0)
    
  • 方案3:后台刷新文档(仅适合小数据量场景)
    如果必须完全依赖表单的计算逻辑,可在所有文档新增完成后,调用NotesDatabase的UpdateFTIndex方法后,使用代理触发全部文档的刷新,该方式性能较差,不建议超过1000条的批量场景使用。

补充说明

你测试中得到的"no name"结果就是因为ComputeWithForm跳过了@DbLookup执行直接返回了错误分支的默认值,和公式正确性、权限配置无关,不需要再排查权限、视图索引类问题。


内容的提问来源于stack exchange,提问作者Jeff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 23:24:03