在 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