문제

@nameleokup formula를 사용하여 검색 키를 제공하여 인터넷 주소를 검색하고 있습니다. 이제는 인터넷 주소뿐만 아니라 FirstName 및 LastName과 같은 다른 속성을 검색하려고합니다. 다음은 검색 문자열을 제공하여 @namelookup 인터넷 주소에 사용하는 수식입니다.

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

// username 문자열 변수 (검색 기준)

수식을 한 번만 평가하여 여러 속성을 검색하는 방법을 누구나 도움을받을 수 있습니다.@namelookup을 사용하여 수행 할 수없는 경우 다른 방법이 있습니까?

도움이 되었습니까?

해결책

이는 평가를 사용하여 수식을 호출 할 때의 전형적인 예입니다. 좋은 아이디어가 아닙니다. 원하는 것은 NotesDocument 클래스를 가져 와서 값을 읽는 것입니다.

이와 같은 것 (면책, 저는 Java 개발자가 아닙니다) :

// 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");
}
.

평가를 사용하여 여러 조회보다 빠르게 될 것이고, 또한 전체 오류 처리의 추가 혜택을 갖고 있으며 모든 것이 기본 코드입니다.

다른 팁

@namelookup은 통화 당 한 항목의 값만 반환합니다.

목표가 하나의 평가 명령문만을 가정하면 호출을 함께 연결하고 특정 순서로 값 배열을 반환 할 수 있습니다.

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

또는 가능하게 :

String firstName = m_session.evaluate("@NameLookup([NoUpdate];\""+ userName + "\"; \"FirstName\")");
String lastName = m_session.evaluate("@NameLookup([NoUpdate];\""+ userName + "\"; \"LastName\")");
String internetAddress = m_session.evaluate("@NameLookup([NoUpdate];\""+ userName + "\"; \"InternetAddress\")");
.

를 클릭 한 다음 3 개의 문자열을 벡터에 어떤 순서로 추가하십시오.

다른 접근법은 directoryNavigator 클래스를 사용하는 것입니다.나는 그것이 노트 / 도미노 8.5 (아마도 그 전에도) 이후로 사용할 수 있다고 믿습니다.DirectoryNavigator는 @namelookup과 동일한 핵심 논리를 사용하므로 잘 수행해야합니다.

여기에 몇 가지 샘플 코드가 있습니다.나는이 정확한 코드를 테스트하지 않았지만 비슷한 조회를하는 프로덕션 코드로부터 그것을 적응 시켰습니다.

    String firstName = null;
    String lastName = null;
    String inetAddress = null;

    Vector<String> lookupItems = new Vector<String>();
    lookupItems.addElement("FirstName");
    lookupItems.addElement("LastName");
    lookupItems.addElement("InternetAddress");

    Vector<String> vName = new Vector<String>();
    vName.addElement(userName);

    Directory dir = session.getDirectory();
    DirectoryNavigator dirNav = dir.lookupNames("($Users)", vName, lookupItems, true);
    if( dirNav != null && dirNav.getCurrentMatches() != 0 ) {

        // Digest the results of the lookup

        Vector<String> value = null;
        value = dirNav.getFirstItemValue();
        firstName = value.elementAt(0);

        value = dirNav.getNextItemValue();
        lastName = value.elementAt(0);

        value = dirNav.getNextItemValue();
        inetAddress = value.elementAt(0);
    }
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top