Pregunta

Estoy usando la fórmula @namelookUP para recuperar la dirección de Internet al darle una clave de búsqueda y está funcionando bien. Pero ahora quiero volver a volver a la dirección de Internet, sino también algunas otras propiedades como el primer nombre y el apellido. Aquí está la fórmula que estoy usando a la dirección de Internet @nameelookup, dando la cadena de búsqueda.

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

// nombre de usuario es la variable de cadena (criterios de búsqueda)

Puede cualquier persona, por favor, ayude a recuperar múltiples propiedades (como Nombre y apellido junto con InternetAddress) evalúe la fórmula solo una vez.Si no se puede hacer usando @namelookup, ¿hay alguna otra forma ...?

¿Fue útil?

Solución

Este es un ejemplo típico al usar Evaluar () para llamar a una fórmula, no es una buena idea. Lo que quiere hacer es obtener la clase de NotesDocument y leer los valores de él.

Algo así (descargo de responsabilidad, no soy un desarrollador de 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");
}

Creo que esto sería más rápido que múltiples búsquedas utilizando Evaluate (), y también tiene el beneficio adicional del manejo completo de errores, y todo es un código nativo.

Otros consejos

@namelookup Solo devuelve el valor de un elemento por llamada.

Suponiendo que su objetivo es tener solo una declaración de evaluación, podría encadenar las llamadas juntas y devolver una matriz de valores en un determinado orden:

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

o posiblemente:

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\")");

y luego agregue esas tres cadenas en cualquier orden en su vector.

Otro enfoque es usar la clase de DirectoryNavigator.Creo que ha estado disponible ya que notas / Domino 8.5 (tal vez incluso antes de eso).DirectoryNavigator usa algunas de las mismas lógicas básicas que @namelookup, por lo que debe funcionar bien.

Aquí hay algún código de muestra.No he probado este código exacto, pero lo adapté del código de producción que hace una búsqueda similar:

    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);
    }

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top