FORMULA LANGUAGE
Para un valor "clave" determinado, busca en la vista o carpeta especificada y localiza todos los documentos que contienen dicho valor en la primera columna ordenada de la vista. Basándose en dichos documentos, @DbLookup da como resultado el contenido de una columna determinada de la vista o el contenido de un campo determinado
Sintaxis
@DbLookup( tipo : caché ; servidor : base-de-datos ; vista ; clave ; campo ; palabras-clave ) o @DbLookup( tipo : caché ; servidor : base-de-datos ; vista ; clave ; número-columna ; palabras-clave)
Nota El separador entre los argumentos de cadena tipo y caché, así como los de servidor y base de datos es el signo de dos puntos; el resto de los separadores son puntos y comas.
Parámetros
tipo
Palabra clave. Opcional. Las palabras clave pueden estar concatenadas.
valores-hallados
Puede especificar el parámetro servidor : base-de-datos de varias formas:
Lotus Domino buscará las réplicas en el orden indicado a continuación y usará la primera que encuentre:
Si hay varias réplicas apiladas en su área de trabajo, Lotus Domino usa la réplica situada más arriba.
Si hay varias réplicas sin apilar en su área de trabajo, Lotus Domino busca el icono de una réplica situada en su servidor actual y la usa. Si ninguno de los iconos corresponde a una réplica situada en su servidor actual, Lotus Domino usa el icono que se añadió a su área de trabajo en primer lugar.
Puede especificar el parámetro vista (o carpeta) usando tanto su nombre como su sinónimo. Por ejemplo, si la vista Apellidos está dispuesta en cascada tras Por autores en el menú Ver y posee el sinónimo |Apell, tendría el nombre siguiente en el cuadro de propiedades de la vista:
Por autores\Apellidos | Apell
Al hacer referencia a esta vista con @DbLookup, basta con que emplee el sinónimo Apell, encerrado entre comillas:
"Apell"
Si el nombre de la vista no tiene un sinónimo, utilice la secuencia completa, también entre comillas (pero sin el sinónimo). Como está empleando el nombre en una fórmula, la "\" debe ir precedida por otra "\" para que Lotus Domino la interprete correctamente:
"Por autores\\Apellidos"
Cómo especificar una clave
Sólo es posible comprobar valores que coinciden exactamente con la clave (igualdades); Notes no le permite especificar otro tipo de operadores, como, por ejemplo, < (menor que).
Además de especificar una constante como la clave que debe coincidir, se puede usar el valor de un campo editable. Por ejemplo, suponga que crea el formulario InfoContactos que contiene dos campos: nombreContacto y mostrarComentarios. Su objetivo es que los usuarios puedan introducir el nombre de un contacto en el campo nombreContacto y hacer que el campo mostrarComentarios muestre la lista de los comentarios asociados al contacto indicado por los usuarios. Para ello, puede hacer que el campo nombreContacto sea un campo de texto editable (o un campo de lista de opciones, como, por ejemplo, un cuadro de diálogo). El campo mostrarComentarios podría incluir el siguiente código como fórmula de validación de los datos introducidos:
@DbLookup("":"NoCache";"Ventas":"Clientes.nsf";"ListaContactos";nombreContacto;"Comentarios")
Cuando un usuario introduce o selecciona el nombre de un cliente, "Susana Vega", por ejemplo, en el campo nombreContacto del formulario InfoContactos y pulsa F9 para actualizar el documento, la fórmula del campo mostrarComentarios lleva a cabo estas tareas:
La clave de búsqueda y el valor en la columna de ordenación de la vista deben ser idénticos. No importa si no coinciden las mayúsculas y minúsculas, pero el número de espacios y la puntuación deben coincidir exactamente. La clave debe indicarse de forma completa, salvo que especifique la palabra clave [PARTIALMATCH].
Para que funcione la búsqueda, la vista debe contener una columna ordenada; en caso contrario, el resultado es un valor nulo. Los resultados no son precisos si se trata de campos de valores múltiples que están ordenados pero no organizados por categorías.
Cómo especificar un nombre de campo
Cuando se usa un campo para realizar la búsqueda, el valor que se obtiene es el valor que se encuentra almacenado en el campo, y puede ser distinto del que se visualiza en la vista. Lotus Domino puede obtener los datos contenidos en cualquier campo de cualquiera de los documentos que se visualizan en la vista especificada, pero si el campo no se visualiza en ninguna columna de la vista, Lotus Domino debe buscar en todo el documento hasta hallar el campo, lo que puede ralentizar la consulta. No es posible recuperar datos desde un campo de texto enriquecido utilizando @DbLookup.
Algunos de los documentos que coinciden con la clave no contengan el campo especificado si fueron creados usando otros formularios.
Cómo especificar el número de la columna
Las búsquedas que se basan en las columnas de las vistas son más eficaces que las que se basan en los campos no incluidos en ellas. Para mejorar el rendimiento, conviene que incluya en la vista el campo deseado.
Por ejemplo, si su vista está organizada por números de referencia de productos y especifica "01776" como clave de búsqueda, y 2 como columna, Lotus Domino da como resultado el contenido de la columna 2 para todos los documentos agrupados bajo la categoría 01776.
Para especificar el parámetro número-columna, cuente las columnas de la vista de izquierda a derecha, a partir del número 1; no obstante, debido al modo en que Lotus Domino indexa las vistas, no todas las columnas cuentan a la hora de realizar la consulta.
Para calcular el número de una columna a efectos de utilizarlo en una consulta:
1. Cuente las columnas de la vista, de izquierda a derecha.
3. Omita todas las columnas que usan únicamente las funciones @ siguientes: @DocChildren, @DocDescendants, @DocLevel, @DocNumber, @DocParentNumber, @DocSiblings, @IsCategory, @IsExpandable.
4. Ahora, vuelva a contar las columnas, de izquierda a derecha.
Cómo acceder a los resultados
Si el resultado de @DbLookup son varios valores, se les dará formato de lista y se empleará el separador de valores múltiples especificado en el cuadro de propiedades del campo actual al diseñar el formulario.
@DbLookup puede dar como resultado un máximo de 64 kB de datos. Use las ecuaciones siguientes para determinar la cantidad de datos que pueden obtenerse con @DbLookup.
Para búsquedas que dan como resultado texto:
2 + (2 * número de entradas obtenidas) + tamaño total del texto de todas las entradas
Para búsquedas que dan como resultado números o fechas:
(10 * número de entradas obtenidas) + 6
Uso
No funciona en fórmulas de columna, de selección ni de agente que se activa al recibir documentos por correo.
Agentes que se ejecutan en los servidores - aspectos de seguridad
Considere que la base de datos que contiene @DbLookup es la base de datos de origen de la consulta y que la base de datos que se está consultando es la base de datos de destino.
Cuando utilice @DbLookup en un agente, éste podrá acceder a los datos de una base de datos de destino que se esté ejecutando o bien en el mismo servidor que alberga la base de datos de origen o bien en otro servidor. El firmante del agente debe disponer, como mínimo, de acceso de lector a la base de datos de destino.
Nota Los agentes que se ejecutan en servidores de la Versión 5 o de anteriores versiones, sólo pueden acceder a las bases de datos de destino que se encuentran en el mismo servidor que la base de datos de origen. Además, el firmante del agente debe disponer, como mínimo, de acceso de lector a la base de datos de destino. El uso de un ID de réplica en la LCA aún es posible en la Versión 6. Si el firmante del agente no dispone de acceso en la LCA de una base de datos anterior a la Versión 6 pero sí lo tiene el ID de réplica, se usará éste en su lugar. (Conceda acceso a la base de datos de origen agregando el ID de réplica de la base de datos de origen, por ejemplo 85255CEB:0032AC04, a la LCA de la base de datos de destino y asignándole un acceso de lector o superior.)
Otros tipos de agentes - aspectos de seguridad
Cuando se usa @DbLookup en cualquier otro tipo de fórmula o agente, tiene acceso sin límites a cualquier base de datos de destino almacenada en la estación de trabajo del usuario. Si la base de datos de destino de encuentra en otro servidor Domino, el acceso de @DbLookup viene determinado por el nivel de acceso del firmante del agente (el asignado a su archivo ID de Notes).
@DbLookup está sujeta a la lista de Acceso de lectura de una vista.
Ejemplo Véase también