Solved

Lookup Email from NAB using first name and last name ONLY!

Posted on 2010-11-22
4
768 Views
Last Modified: 2013-12-18
Following on from http://www.experts-exchange.com/Software/Office_Productivity/Office_Suites/Lotus_SmartSuite/Lotus_Notes/Q_26622828.html

Large company, plenty of duplicate First/Last names, haven't even looked at how they resolve that, either with different OU's or using middle names.

I have a field with first name and last name e.g. "Robert Smith", I need to lookup their email address from the NAB. There may or maybe not be multiple Robert Smith's. If there is only one, then I just want to populate the email field on my form with their email address. If there are multiple entries, I want a dialogue box to appear showing ONLY the people with that last name, so that the user can select the correct one from the list.

I am using LotusScript for this.
0
Comment
Question by:Sam654
  • 2
  • 2
4 Comments
 
LVL 5

Assisted Solution

by:RonaldZaal
RonaldZaal earned 175 total points
Comment Utility
Hello,  you can try with this:

Dim adress As String
Dim sFormula As String
Dim eMail As Variant
dim thename as string

thename = "Smith"
sFormula = {@NameLookup([NoUpdate];"}+thename+{";"InternetAddress")}    ' formula to return emailaddress (es) from NAB
eMail = Evaluate(sFormula) ' returns array with 0,1 or multiple names
Msgbox eMail(0)   ' to test to return the first one found
0
 
LVL 5

Expert Comment

by:RonaldZaal
Comment Utility
and then you check the returning eMail array for number of values returned by the formula with a test on the Ubound value.

if ubound(eMail) = 0 then
msgbox "no name found!"
end
end if

if ubound(eMail) > 1 then .....
dialogbox to let the user choose one name from the arr eMail
else
msgbox eMail(0)   ' got only on name
end if
0
 
LVL 22

Expert Comment

by:mbonaci
Comment Utility
Modification of the function I mentioned in the previous thread to get all documents by user name:
Function getAllUserDocumentsFromNAB( UserCommonName As String ) As NotesDocumentCollection
        'Mb¤, 23.11.2010
        'The function returns all user documents from server's NAB
        Dim s As New NotesSession
        Dim nab As NotesDatabase
        Dim v As NotesView

        'if you're running this locally change the first (server) param
        'or you can use notesDatabaseArray = notesSession.AddressBooks
        Set nab = s.GetDatabase( s.CurrentDatabase.Server, "NAMES.NSF", False)
        If Nab Is Nothing Then Exit Function
        
        Set v = nab.GetView("($Users)")
        If v Is Nothing Then Exit Function
        
        Set getAllUserDocumentsFromNAB = v.GetAllDocumentsByKey( s.CommonUserName, True )
        
End Function

Open in new window


How to use the function in your case (i wrote it here so expect errors):
        Dim w As New NotesUIWorkspace
        Dim c As NotesDocumentCollection
        Dim cur As NotesDocument
        Dim lstUsers List As NotesDocument
        Dim arrUsers() As String
        Dim commonName As String
        Dim i As Integer
        Dim response As Variant
        
        commonName = "common username" 'you get this from somewhere...

        Set c = getAllUserDocumentsFromNAB(  )
        If c.Count = 0 Then Exit Sub 'or handle this case differently

        Set cur = c.GetFirstDocument

        If c.Count > 1 Then 'there's more than one - prompt the user to choose
                Redim arrUsers( c.Count - 1 )
                Do Until cur Is Nothing

                        'collect the values for dialog
                        arrUsers( i ) = cur.InternetAddress(0) & " " & cur.someOtherDistinctiveFieldFromUserDoc(0) '& more fields if you need more distinction, but be sure this is unique for each document, because duplicates wont be visible

                        'add document in our list (using the large key defined above) for later field retrieval
                        lstUsers( arrUsers( i ) ) = cur

                        i = i + 1
                        Set cur = c.GetNextDocument( cur )
                Loop

                response = w.Prompt( 4, "Select user", "Multiple users with the same name found. Select the correct one:", arrUsers(0), arrUsers )
                If Isempty( response ) Then
                        Messagebox "Cancelation", , "User was not chosen"
                Else
                        Set cur = lstUsers( CStr( response ) ) 'lookup document by key from our list
                End If
        End If

        'now cur is our document, regardless of whether we found one or more in view
        'pull data you want from it

Open in new window



Ask if this is too complicated...
0
 
LVL 22

Accepted Solution

by:
mbonaci earned 325 total points
Comment Utility
The line 12 is missing an argument, so it should be:

Set c = getAllUserDocumentsFromNAB( commonName )

Open in new window

0

Featured Post

Do You Know the 4 Main Threat Actor Types?

Do you know the main threat actor types? Most attackers fall into one of four categories, each with their own favored tactics, techniques, and procedures.

Join & Write a Comment

I thought it will be a good idea to make a post as it will help in case someone else faces these issues. I trust this gives an idea how each entry in Notes.ini can mean a lot for the Domino Server to be functioning properly. This article discusses t…
Lack of Storage capacity is a common problem that exists in every field of life. Here we are taking the case of Lotus Notes Emails, as we all know that we are totally depend on e-communication i.e. Emails. This article is fully dedicated to resolvin…
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…
This video demonstrates how to create an example email signature rule for a department in a company using CodeTwo Exchange Rules. The signature will be inserted beneath users' latest emails in conversations and will be displayed in users' Sent Items…

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now