FORMULA LANGUAGE


@DbLookup (origen de datos ODBC)
Ejemplo

Busca en el archivo ODBC.INI el nombre del origen de los datos especificado y usa la información contenida en dicho archivo para activar el controlador ODBC adecuado. A continuación, el controlador localiza el DBMS (del inglés Database Management System, sistema de gestión de bases de datos), la tabla y la columna que se han especificado, y da como resultado únicamente los valores contenidos en dicha columna que pertenecen a aquellos registros que, en la columna clave, contienen la clave especificada. Opcionalmente, puede indicar si desea que la lista de valores esté ordenada, si los valores repetidos deben suprimirse y el modo en que deben tratarse los valores nulos.

Nota @DbLookup sólo puede recuperar datos; no puede añadirlos, suprimirlos ni modificarlos.

Sintaxis

@DbLookup( "ODBC" : caché ; "origen-datos" ; "ID1-usuario" : "ID2-usuario" ; "contraseña1" : "contraseña2" ; "tabla" ; "columna" : "valores-nulos" ; "columna-clave" ; "clave" ; "Distinct" : "ordenar" )

Parámetros

"ODBC"


caché origen-datos
ID1-usuario : ID2-usuario
"contraseña1" : "contraseña2"
tabla
columna
valores-nulos
columna-clave
clave
"Distinct"
ordenar
Resultado

valores-hallados


Nota Si emplea la interfaz de usuario de botón radial o de casilla de verificación para un campo de palabras clave, Lotus Domino actualizará la lista de palabras clave únicamente durante la creación del documento o cuando éste se ponga en el modo de edición. Si emplea la interfaz de usuario estándar para el campo, la lista de palabras clave también se actualizará cada vez que se recalcule el documento.

Especificación del origen de datos

El nombre del origen de datos puede contener un máximo de 32 caracteres alfanuméricos.

Especificación de los ID y de las contraseñas

Solo necesitará usar este parámetro si emplea un DBMS que requiere su uso.

En lugar de almacenar los ID en la fórmula de @DbLookup, puede reemplazarlos por cadenas vacías. Si el uso de un ID es obligatorio, el controlador ODBC se lo pedirá al usuario. Esto resulta útil cuando no se desea situar los ID en una fórmula a la que pueden tener acceso otros diseñadores, o bien cuando se desea que cada usuario acceda a los datos externos haciendo uso de su propio ID en lugar de crear archivos ID genéricos. Sin embargo, sí deberá incluir los ID y las contraseñas en las fórmulas que se ejecuten automáticamente (por ejemplo, los agentes), ya que éstas no solicitan esta información al usuario.

En cada sesión de una misma base de datos de Domino, sólo es necesario especificar una vez los ID y las contraseñas de usuario que son necesarios para acceder al origen de datos, siempre que la base de datos permanezca abierta. Si el usuario abre otra base de datos de Domino y ejecuta una fórmula que hace uso del mismo origen de datos, el controlador volverá a pedirle el ID y la contraseña.

Solo necesitará emplear las contraseñas si está usando los parámetros ID descritos anteriormente. Al igual que los ID, las contraseñas pueden almacenarse en la fórmula de @DbLookup o bien reemplazarse por cadenas vacías, en cuyo caso, el controlador ODBC se las pedirá al usuario. Si la contraseña de la base de datos es una cadena vacía, puede omitirla de la fórmula.

Por ejemplo, si va a especificar la contraseña completa, introduzca lo siguiente:


Especificación del nombre de la tabla

Si el DBMS lo permite, puede incluir el nombre del propietario de la tabla para evitar que se produzcan ambigüedades; use el formato "nombre-propietario.nombre-tabla". Asegúrese de que separa el nombre del propietario del nombre de la tabla mediante un punto.

Por ejemplo:

"dbo.author"

Tabla también puede hacer referencia a una vista de la base de datos del DBMS cuyos datos se están utilizando.

Especificación de valores nulos

Para controlar el modo en que se tratan los valores nulos, especifique una de las opciones siguientes detrás del parámetro columna, separada de éste por un signo de dos puntos:


Especificación de la columna clave y de la clave

Use "columna-clave" para indicar en qué columna debe buscarse la "clave" especificada; encierre entre comillas el nombre de la columna. Si el DBMS distingue entre mayúsculas y minúsculas al interpretar los nombres de las columnas, asegúrese de que emplea las letras correctas. Los valores de la columna clave no tienen por qué estar ordenados antes de que se recuperen los datos con @DbLookup.

Especifique un valor utilizando el formato de Notes Domino que se corresponde con el tipo de la columna clave del origen de datos. Por ejemplo, especifique un número o una expresión con valor numérico cuando la columna clave sea de cualquier tipo numérico, como, por ejemplo, entero, real, de coma flotante o de doble precisión. Si la clave es una cadena de texto, enciérrela entre comillas. Si desea especificar un valor de fecha-hora, introdúzcalo en el formato utilizado por la base de datos, no en el que utiliza Lotus Domino; por ejemplo, especifique 1997-01-31-12.00.00 para DB2/2 en lugar de 1997-01-31-12:00:00.

Al combinarlas, la columna clave y la clave forman la cláusula "donde" de una sentencia de selección:

"Seleccionar los registros donde columna-clave = clave"

La interfaz de la aplicación ODBC siempre comprueba igualdades y sólo da como resultado datos de aquellos registros que, en la columna clave, contienen un valor exactamente igual a la clave. Para comprobar si el valor de la columna clave coincide con uno de los valores contenidos en una serie de valores, formatee el valor de la clave como una lista y separe los elementos mediante signos de dos puntos; por ejemplo: "Rojo":"Azul":"Verde". Esto se comporta como una operación O, y da como resultado los datos de todos los registros que, en la columna clave, contienen un valor "Rojo" O "Azul" O "Verde". Si desea realizar una operación Y, use @DbCommand para pasar al DBMS la cadena con el comando adecuado. Asimismo, use @DbCommand para pasar la cadena con el comando adecuado si la clave es un valor de fecha-hora, ya que @DbLookup no siempre convierte este valor al formato correcto de fecha-hora del lenguaje de comandos de DBMS.

Si no consigue que @DbLookup dé como resultado los valores correctos a causa de u otros problemas, pruebe a usar una sentencia SELECT en @DbCommand.

Especificación de la palabra clave Distinct

El argumento de cadena Distinct es similar a la función @Unique de Lotus Domino; la diferencia estriba en que Distinct elimina los valores repetidos antes de presentar los datos en Lotus Domino. El uso de Distinct en lugar de @Unique tiene dos ventajas:


Nota Distinct no puede emplearse con todos los controladores ODBC. Cuando existen valores nulos en los datos y se especifica la palabra clave Distinct, el resultado suele incluir uno de ellos.

Especificación del orden

Si emplea el argumento de cadena Distinct descrito anteriormente, introduzca el argumento correspondiente al parámetro ordenar detrás de Distinct y sepárelos mediante un signo de dos puntos, como se indica en el ejemplo de sintaxis. Use una de las dos palabras clave siguientes:


Si no especifica un argumento de cadena para la ordenación, Notes ordenará los valores resultantes de forma arbitraria.

Nota Las palabras clave de ordenar no pueden emplearse con todos los controladores ODBC. Si intenta usar tanto "Ascending" como "Descending" en su fórmula, Lotus Domino mostrará un mensaje indicándole que ha usado un parámetro no válido.

Acceso a los valores hallados

Si el resultado son varios valores, se les dará formato de lista y se empleará el separador de valores múltiples especificado para el campo actual.

@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.


Si el archivo NOTES.INI del usuario incluye esta sentencia:

NoExternalApps=1

cualquier fórmula que contenga la función @DbLookup quedará desactivada. El usuario no verá ningún mensaje de error; simplemente Notes no ejecutará la fórmula. Esto sólo se aplica a @DbLookup cuando esta función se emplea con ODBC.

Uso

@DbLookup tiene su aplicación fundamental en fórmulas de palabras clave. En lugar de crear una fórmula con la lista de palabras clave permitidas en un campo y actualizar dicha lista periódicamente, @DbLookup le permite recuperar dinámicamente una lista de valores procedentes de una tabla de base de datos externa.

@DbLookup no puede utilizarse en agentes que se activan al recibir mensajes por correo, pero sí en aquellos que se activan al pegar documentos. Esta función únicamente opera en aplicaciones de Web si el servidor remoto que alberga la tabla de la que se recuperan los datos se encuentra en el mismo equipo que el servidor Domino, lo que es muy infrecuente.

Ejemplo
Véase también