LotusScript 駆動型アプリケーションでは、NotesDirectory.LookupNames
DirNav を作成し、個人文書からデータを取得するために を多用します。サーバーのプライマリ NAB を使用するだけで問題なく動作します。ルックアップに ($Users) ビューを使用し、一致する個人ドキュメントのフィールドから値を返します。
これを拡張して、セカンダリ NAB に保存されている人物も検索できるようにする必要があります。このセカンダリ NAB は、アプリケーションが実行されているサーバーに複製され、ディレクトリアシスタントが設定されます。私の知る限り、DA は基本的に機能しており (たとえば、セカンダリ NAB は標準の名前ダイアログから選択できます)、セカンダリ NAB は完全なディレクトリのように見えます。少なくともデータベースのプロパティは、それが「ドミノ ディレクトリ」タイプの DB であると言っています。
問題は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