Search code examples
lotus-noteslotus-dominolotusdomino-designer-eclipse

how to retrieve multiple properties using @NameLookup in lotus notes


I am using @NameLookUp formula to retrieve internet address by giving a search key and it is working fine.But now i want to retrive not only the internet address but also some other properties like FirstName and LastName. Here is the formula i am using to @Namelookup internet address by giving search string.

Vector vec=m_session.evaluate("@NameLookup([NoUpdate];\""+ userName + "\"; \"InternetAddress\")");

//username is the String variable(Search Criteria)

Can anyone please help how to retrieve multiple properties(like firstName and lastName along with InternetAddress) by evaluate the formula only once. If it cant be done using @Namelookup is there any other way..?


Solution

  • This is a typical example when using evaluate() to call a Formula is not a good idea. What you want to do is to get the NotesDocument class and read values from it.

    Something like this (disclaimer, I am not a Java developer):

    // Open Domino Directory on specified server
    Database db = session.getDatabase("YourServer/Domain", "names.nsf");
    // Get a view with user name is sorted first column
    View view = db.getView("($Users)");
    // Get the person document for specified user
    Document doc = view.getDocumentByKey(userName, true);
    if (doc != null) {
       // Get text values from Notes document
       String emailAddress = doc.getItemValueString("InternetAddress");
       String officePhone = doc.getItemValueString("OfficeNumber");
       String officeAddress = doc.getItemValueString("OfficeStreetAddress");
    }
    

    I believe this would be faster than multiple lookups using evaluate(), and you also have the added benefit of full error handling, and all being native code.