這裏有一個快速的實現Jonesys的建議:
Function getMailFileUser(mailserver As String, mailfile As String) As String
On Error Goto errorthrower
Dim session As New notessession
Dim dd As NotesDatabase
Forall candidate_dd In session.AddressBooks
If candidate_dd.Server<>"" And candidate_dd.IsPublicAddressBook Then
Set dd = candidate_dd
Exit Forall
End If
End Forall
If dd Is Nothing Then Error 1978,"Failed to find Domino Directory"
If Not dd.IsOpen Then Call dd.Open("","")
Dim userdocs As NotesDocumentCollection
Set userdocs = dd.Search({form="Person" & }& _
{@name([CANONICALIZE];MailServer)[email protected]([CANONICALIZE];"} & mailserver & {") & } &_
{MailFile="} & mailfile & {"},Nothing,1)
Dim userdoc As NotesDocument
Set userdoc = userdocs.GetFirstDocument
If Not userdoc Is Nothing Then
getMailFileUser = userdoc.FullName(0)
Else
getMailFileUser=""
End If
Exit Function
ErrorThrower:
Error Err, Error & Chr(13) + "Module: " & Cstr(Getthreadinfo(1)) & ", Line: " & Cstr(Erl)
End Function
謹慎的幾句話:
CANONICALIZE
從目前的ID,而不是Domino目錄中挑選自己的價值觀 - 輸入mailserver
必須無論是縮寫或規範化的形式爲此工作。
MailFile
字段可能會或可能不會包括.nsf
擴展名。
- 我不認爲文件名在Windows上區分大小寫,但它可能在其他平臺上。
如果您需要經常進行這些查找,Domino目錄中的計算查找表或視圖可能是最有效的解決方案。
+1的好代碼。我沒有使用它,但是,這仍然是一個很好的例子。謝謝。 – 2010-02-05 16:07:33