3

在 LotusScript 驱动的应用程序中,我们大量使用它NotesDirectory.LookupNames来创建 DirNavs 并从个人文档中检索数据。仅使用服务器的主 NAB 即可正常工作:我们使用 ($Users) 视图进行查找,然后从匹配的人员文档的字段中返回值。

现在我们必须扩展它,以便我们也能够查找存储在辅助 NAB 中的人员。此辅助 NAB 被复制到运行应用程序的服务器,并设置目录服务。AFAIK DA 基本上可以工作(例如,可以从标准名称对话框中选择辅助 NAB),辅助 NAB 似乎是一个完整目录;至少数据库属性说它是“Domino 目录”类型的数据库。

问题是:NotesDirectory.LookupNames如果我们正在查找存储在辅助 NAB 中的名称,使用不会产生任何结果,而查找存储在主要 NAB 中的名称仍然有效

运行的服务器是 V 11.0.1;所有 NAB 和 da.nsf 都在运行更多或最新设计(从位于 V 10.0.1 服务器上的模板运行设计刷新)

主要问题是:这应该首先起作用吗?该类的文档只谈到“目录”,所以我认为这应该是可能的。任何提示都非常受欢迎

-- 更新 2021-02-24 --

为了完整起见,这里是 Scott 建议的(更正的)测试代理的代码:用户 #1 来自主目录,而 #2 来自辅助目录

Sub Initialize
    Dim sn As New NotesSession
    Dim nDir As NotesDirectory
    Dim nDirNav As NotesDirectoryNavigator
    Dim sKey As String, sVw As String, sSrv As String
    Dim vItems As Variant, vItem As Variant, vResult As Variant, vKeys As Variant
    Dim i As Integer
    
    sVw = "($Users)"
    sSrv = "devtest/edcomTest"
    Set nDir = sn.Getdirectory(sSrv)
    nDir.Searchalldirectories = True 'Not really necessary, but doesn't hurt either
    ReDim vKeys(1)
    vKeys(0) = "sautor1"
    vKeys(1) = "Veronika.Test@edcomtest.de"
    ReDim vItems(2)
    vItems(0) = "Type"
    vItems(1) = "FullName"
    vItems(2) = "ShortName"
    ReDim vResult(0)
    
    Set nDirNav = nDir.Lookupnames(sVw, vKeys, vItems, False)
    Do While nDirNav.Namelocated
        Do While nDirNav.Matchlocated
            vItem = nDirNav.Getfirstitemvalue()
            vResult(0) = vItem(0)
            'Looping the other items
            For i=1 To 2
                vItem = nDirNav.Getnextitemvalue()
                vResult = ArrayAppend(vResult, vItem(0))
            Next
            Call nDirNav.Findnextmatch()
        Loop
        Call nDirNav.Findnextname()
    Loop
    
    Print Join(vResult, "; ")
    
End Sub
4

1 回答 1

1

我非常尴尬,因为这个“失败”的原因是用户名中的一个简单的拼写错误,我只是将“Veronika”拼错为“Veronica”......(它已经在上面的代码片段中更正了)

于 2021-02-24T09:59:10.623 回答