Agregar fórmulas y funciones en InfoPath 2010
Se aplica a
Las fórmulas le permiten sacar más partido a las reglas que crea que usar reglas básicas predefinidas. Por ejemplo, las fórmulas se usan para cosas como calcular la fecha actual o futura o incluso concatenar texto.
En este artículo...
Información general
Una fórmula es una expresión XPath (lenguaje de rutas XML) que consta de valores, campos o grupos, funciones y operadores que se usan para calcular y mostrar otros valores. Puede usar una fórmula para crear un nuevo valor para un campo y mostrar ese valor en un control enlazado a ese campo. Las fórmulas se pueden usar de la siguiente manera:
Calcule un valor matemático en función de los valores especificados al diseñar la plantilla o en función de los valores que escriba un usuario al rellenar la plantilla de formulario.
Ejecute una regla basada en un valor calculado con una fórmula.
Mostrar texto de solo lectura calculado desde otros controles o mostrar el valor de otro control.
Una función es una expresión que devuelve un valor basándose en los resultados de un cálculo. Los valores utilizados en las funciones se denominan argumentos. Puede usar las funciones XPath 1.0 estándar que se incluyen en InfoPath, además de algunas funciones específicas de InfoPath. Las funciones constan de las siguientes tres partes:
- Nombre Por lo general, el nombre de la función proporciona una sugerencia sobre la acción que realizará la función.
- Valor devuelto El resultado de la función.
- Argumentos Los valores usados por la función para realizar el cálculo.
Una función puede requerir argumentos para devolver un valor. Si la función requiere argumentos, necesita saber cuántos argumentos son necesarios y el tipo de datos de cada argumento. La función no funcionará si proporciona un número o tipo de argumentos obligatorios incorrectos.
En la ilustración siguiente se muestra la relación entre funciones, expresiones y fórmulas.
Agregar un control de valor calculado
Puede usar un control de valor calculado para mostrar texto de solo lectura, mostrar el valor de otro control en el formulario y crear fórmulas basadas en expresiones XPath. Por ejemplo, si está desarrollando una plantilla de formulario de seguimiento de gastos, puede agregar un control de valor calculado para mostrar el total de los gastos que se han introducido.
Nota
Un control de valor calculado solo muestra datos y no los almacena, por lo que debe usar un control de valor calculado solo si no desea guardar su valor o hacer referencia a él en otra fórmula.
En la plantilla de formulario, coloque el cursor en el lugar donde desea insertar el control.
En la pestaña Inicio , en el grupo Controles , haga clic en el control de valor calculado .
En el cuadro de diálogo Insertar valor calculado , siga uno de estos procedimientos:
Para escribir texto o una expresión XPath directamente en el control de valor calculado, escriba en el cuadro XPath .
Para insertar una fórmula, haga clic en Editar fórmula
y, a continuación, escriba la fórmula deseada en el cuadro de texto Fórmula , haciendo uso de lo siguiente, según sea necesario:- Para insertar un campo o grupo en la fórmula, haga clic en Insertar campo o grupo, haga clic en el campo o grupo en el cuadro de diálogo Seleccionar un campo o grupo y, a continuación, haga clic en Aceptar.
- Para insertar una función en la fórmula, haga clic en Insertar función, seleccione la función en el cuadro de diálogo Insertar función y, a continuación, haga clic en Aceptar.
Si la función requiere parámetros, seleccione la función en el cuadro de diálogo Insertar función , haga clic en Aceptar y, a continuación, en el texto de la fórmula , haga doble clic donde se indica y seleccione el parámetro deseado antes de hacer clic en Aceptar. - Para insertar un valor o un operador matemático en la fórmula, escriba el valor o símbolo de la operación matemática en el cuadro Fórmula .
Los operadores matemáticos incluyen sumar (+), restar (-), multiplicar (*) y dividir (/).
Las fórmulas matemáticas normalmente dependen de valores enteros o decimales como argumentos. Para evitar valores en blanco en la fórmula, en la pestaña Archivo , haga clic en Opciones de formulario , seleccione Avanzadas y asegúrese de que esté seleccionada la opción Tratar valores en blanco como cero .
Agregar una fórmula a un control
Aunque puede usar un control de valor calculado para mostrar los resultados de una fórmula, no está limitado a usar un control de valor calculado. También puede usar una fórmula para establecer el valor predeterminado de otros controles, como los cuadros de texto. Hay dos formas de establecer el valor predeterminado de un control. Puede usar un valor predeterminado estático simplemente escribiendo el valor deseado en el campo Valor del cuadro de diálogo Campo o Propiedades del grupo, o bien puede usar una fórmula para establecer el valor predeterminado de un campo en función de otros valores del formulario. Siga este procedimiento para establecer el valor predeterminado de un campo basándose en una fórmula:
Seleccione el control al que desea agregar la fórmula y, en Herramientas de control, en la pestaña Propiedades , en el grupo Propiedades , haga clic en Valor predeterminado.
Haga clic en Insertar fórmula
junto al cuadro Valor .Escriba la fórmula deseada en el cuadro de texto Fórmula y use lo siguiente, según sea necesario:
Para insertar un campo o grupo en la fórmula, haga clic en Insertar campo o grupo, haga clic en el campo o grupo en el cuadro de diálogo Seleccionar un campo o grupo y, a continuación, haga clic en Aceptar.
Para insertar una función en la fórmula, haga clic en Insertar función, seleccione la función en el cuadro de diálogo Insertar función y, a continuación, haga clic en Aceptar.
Si la función requiere parámetros, seleccione la función en el cuadro de diálogo Insertar función , haga clic en Aceptar y, a continuación, en el texto de la fórmula , haga doble clic donde se indica y seleccione el parámetro deseado antes de hacer clic en Aceptar.Para insertar un valor o un operador matemático en la fórmula, escriba el valor o el símbolo de la operación matemática en el cuadro Fórmula .
Los operadores matemáticos incluyen sumar (+), restar (-), multiplicar (*) y dividir (/).Recomendación
Las fórmulas matemáticas normalmente dependen de valores enteros o decimales como argumentos. Para evitar valores en blanco en la fórmula, en la pestaña Archivo , haga clic en Opciones de formulario y, a continuación, seleccione Avanzadas. Asegúrese de que esté seleccionada la opción Tratar valores en blanco como cero .
Para editar la fórmula como una fórmula XPath, active la casilla Editar XPath (avanzado), que cambiará la fórmula a la versión de expresión XPath de la fórmula.
Para comprobar la sintaxis correcta de la fórmula, haga clic en el botón Comprobar fórmula . Si la fórmula contiene errores:
Haga clic en Mostrar detalles en el cuadro de diálogo Microsoft InfoPath para ver los errores de la fórmula. Las siguientes son algunas sugerencias para resolver estos errores:
- Si usa una función en la fórmula, compruebe que está usando los argumentos correctos para la función. Algunas funciones requieren campos o grupos mientras que otras funciones requieren valores especificados como argumentos.
- Si es necesario, elimine y vuelva a escribir la fórmula para asegurarse de que está escrita correctamente.
- Haga clic en Aceptar.
- Si desea actualizar el valor predeterminado del campo cuando cambien los valores que se basan en él, active la casilla Actualizar el valor al volver a calcular la fórmula . Si hace esto, haga clic en Aceptar y, en Herramientas de control, en la pestaña Propiedades , en el grupo Propiedades , haga clic en Propiedades del control. Haga clic en la pestaña Pantalla y, a continuación, seleccione la casilla Solo lectura .
Usar una fórmula en una regla
Al especificar condiciones en reglas de validación, formato o acción , es posible usar una fórmula para controlar la condición. Para ello, seleccione Usar una fórmula de la tercera lista desplegable en el cuadro de diálogo Condición al asignar una regla a un control o a la plantilla de formulario.
Funciones de fecha y hora
addDays
Agrega días a una fecha o fecha y hora.
Sintaxis
addDays(fecha, días)
| argumento | Descripción |
|---|---|
| fecha | El número de días en el segundo argumento se agrega a la fecha en este argumento. Este argumento puede ser un tipo de datos Fecha (fecha) o Fecha y hora (dateTime). |
| días | El número de días que desea sumar a la fecha en el primer argumento. Este parámetro debe ser un tipo de datos Número entero (entero). Si usa un número negativo en este argumento, el valor devuelto es una fecha anterior. |
Ejemplo
Desea que un campo de la plantilla de formulario contenga una fecha de 60 días a partir de la fecha actual. La plantilla de formulario contiene un campo denominado fldToday, con la fecha de hoy como valor predeterminado. Para calcular la nueva fecha con esta función, use la siguiente fórmula en el nuevo campo de fecha:
addDays(fldToday, 60)
addSeconds
Agrega segundos a una hora o fecha y hora.
Sintaxis
addSeconds(time, seconds)
| argumento | Descripción |
|---|---|
| hora | Un valor de fecha y hora o un valor de hora que es una referencia a otro campo de la plantilla de formulario o el resultado de una función de fecha u hora, como now() o today(). El número de segundos en el segundo argumento se agrega a la hora en este argumento. Este argumento puede ser un tipo de datos Fecha (fecha) o Fecha y hora (dateTime). Si es un tipo de datos Hora, se devolverá un tipo de datos Hora. Si es un tipo de datos Date, se devolverá un tipo de datos De fecha y hora. |
| seconds | El número de segundos que desea agregar al valor de fecha y hora o a la hora en el primer argumento. El campo de este parámetro debe ser un tipo de datos Número entero (entero). Si usa un número negativo en este argumento, el valor devuelto es una fecha y hora anteriores o una hora anterior. |
Ejemplo
La plantilla de formulario contiene un campo denominado fldCurrentTime que usa la hora actual como valor predeterminado y un segundo campo que usa la función addSeconds en una fórmula para mostrar el tiempo 120 segundos de la hora actual. Para calcular el nuevo valor de hora con esta función, escriba la siguiente fórmula en el segundo campo:
addSeconds(fldCurrentTime, 120)
momento
Devuelve la fecha y hora actuales del sistema.
Si solo quiere que se devuelva la fecha actual, use la función hoy.
Sintaxis
now()
Esta función no usa argumentos.
Ejemplo
Para obtener la fecha y la hora en la que se creó un formulario basado en su plantilla de formulario, use la siguiente fórmula en un campo:
now()
hoy
Devuelve la fecha actual del sistema. Para los campos de fecha de lista de SharePoint, use la función now().
Si desea que se devuelvan tanto la fecha como la hora, use la función ahora.
Sintaxis
hoy()
Esta función no usa argumentos.
Ejemplo
Para obtener la fecha en que se creó un formulario basado en su plantilla de formulario, use la siguiente fórmula en un campo:
hoy()
Funciones de campo
Recuento
Cuenta el número de instancias de un campo o grupo.
Sintaxis
count(field)
| argumento | Descripción |
|---|---|
| campo | El nombre del campo o grupo de repetición que se va a repetir en el formulario. |
Ejemplo
Está diseñando una plantilla de formulario cuyos formularios usarán los proveedores para informar de sus productos e inventario. La plantilla de formulario contiene un grupo repetido denominado grpProduct para los productos que envía el proveedor. Cada grupo contiene información sobre el producto y su nivel de inventario. Cuando un proveedor agrega un producto en un formulario que se basa en esta plantilla de formulario, InfoPath crea una nueva instancia del grupo que se repite.
La plantilla de formulario tiene un campo en el origen de datos que contiene el número de productos enviados por el proveedor. Para contar automáticamente el número de productos enviados por el proveedor, que es el número de instancias del grupo repetido grpProduct, use la siguiente fórmula en el campo de número de productos:
count(grpProduct)
apellido
Devuelve la última repetición de un campo o grupo que se repite.
Nota
Si está diseñando una plantilla de formulario compatible con el explorador, esta función no aparece en la lista Funciones del cuadro de diálogo Insertar función.
Sintaxis
field_name[último()]
Aunque la función en sí no tiene ningún parámetro necesario, puede usar esta función como predicado para un nombre de campo especificado.
Ejemplo
Está diseñando una plantilla de formulario que los proveedores rellenarán para informar de sus inventarios de productos. La plantilla de formulario tiene una conexión de datos a un servicio web que tiene un método que comprueba si se ha completado la información del producto de todos los productos de un proveedor. El método necesita el último producto de la lista de productos que ha enviado el proveedor.
La información del producto se almacena en diferentes campos de un grupo repetido denominado grpProduct. Cuando un proveedor agrega un producto al formulario, InfoPath agrega un nuevo grupo repetido denominado grpProduct. Si el proveedor informa sobre varios productos, el origen de datos del formulario contendrá varias instancias del grupo extensible grpProduct.
Para asegurarse de que envía la información correcta al servicio web, agregue un campo que contendrá información sobre el último producto del grupo de productos del proveedor. Para configurar ese campo para recuperar automáticamente el último producto, use la siguiente fórmula como valor predeterminado para el último campo del producto:
grpProduct[last()]
nombre local
Devuelve el nombre local de un campo o grupo.
Nota
- Si el argumento es un campo de repetición o un grupo de repetición, la función devuelve el valor del primer campo o grupo de repetición.
- Cuando un usuario rellena un formulario de explorador web, una fórmula que usa esta función envía datos de formulario al servidor para obtener el valor devuelto para esta función.
Sintaxis
nombre local(campo)
| argumento | Descripción |
|---|---|
| campo | El nombre del campo cuyo atributo de nombre local desea devolver. |
Ejemplo
Está diseñando una plantilla de formulario que se usa para las aplicaciones de permisos. La plantilla de formulario tiene una conexión de datos a un método en un servicio web. Este método requiere el valor del atributo nombre local del campo para el número de licencia del contratista. El nombre del campo de número de licencia es fldLicenseNumber.
Tiene un campo que contendrá el valor del atributo de nombre local. Para recuperar automáticamente el valor del atributo nombre local del campo de número de licencia, use la siguiente fórmula como valor predeterminado para el campo que contendrá el valor del atributo de nombre local:
nombre local(fldLicenseNumber)
nombre
Devuelve el nombre y el prefijo de espacio de nombres de un campo o grupo.
Nota
- Si el argumento es un campo de repetición o un grupo de repetición, la función devuelve el nombre y el prefijo del primer campo o grupo de repetición del formulario.
- Cuando un usuario rellena un formulario basado en una plantilla de formulario habilitada para el explorador, una fórmula que usa esta función envía datos de formulario al servidor para obtener el valor devuelto para esta función.
Sintaxis
nombre(campo)
| argumento | Descripción |
|---|---|
| campo | El nombre del campo cuyo prefijo y nombre de espacio de nombres desea devolver. |
Ejemplo
Está diseñando una plantilla de formulario que se usa para las aplicaciones de permisos. La plantilla de formulario tiene una conexión de datos a un método en un servicio web. Este método requiere el atributo name del campo para el número de licencia del contratista. El nombre del campo de número de licencia es fldLicenseNumber.
Tiene un campo que contendrá el valor del atributo name. Para recuperar automáticamente el valor del atributo name, use la siguiente fórmula como valor predeterminado para el campo:
name(fldLicenseNumber)
namespace-uri
Devuelve el espacio de nombres completo de un campo o grupo.
Nota
- Si el argumento es un conjunto de campos o grupos, la función devuelve el espacio de nombres del primer campo o grupo del formulario.
- Cuando un usuario rellena un formulario de explorador web, una fórmula que usa esta función envía datos de formulario al servidor para obtener el valor devuelto para esta función.
Sintaxis
namespace-uri(field)
| argumento | Descripción |
|---|---|
| campo | El nombre del campo cuyo URI de espacio de nombres desea recuperar. |
Ejemplo
Está diseñando una plantilla de formulario que se usa para las aplicaciones de permisos. La plantilla de formulario envía datos a un servicio web. Para procesar los datos de un formulario basado en la plantilla de formulario, el servicio web requiere el URI del espacio de nombres de un campo de elemento específico en el origen de datos. El campo de la plantilla de formulario que contiene los datos de URI del espacio de nombres se denomina fldComplete.
Tiene un campo que contendrá el URI de espacio de nombres del campo de elemento. Para recuperar automáticamente el URI del espacio de nombres, use la siguiente fórmula como valor predeterminado para el campo que contendrá el URI del espacio de nombres:
namespace-uri(fldComplete)
media
Devuelve el índice (o posición) de un campo o grupo con respecto a los demás campos o grupos del mismo grupo primario.
Nota
Esta función no está disponible en las plantillas de formulario de explorador web.
Sintaxis
position()
Ejemplo
Está diseñando una plantilla de formulario que los proveedores rellenarán para informar de sus inventarios de productos. La información del producto se almacena en campos de un grupo que se repite. El grupo que se repite está enlazado a una tabla extensible, lo que permite a un proveedor agregar información de producto nueva o revisada existente.
En la primera columna de la tabla que se repite, desea mostrar el número de fila en un cuadro de texto. Para mostrar automáticamente el número de fila cuando el proveedor agregue un nuevo producto a la tabla extensible, use la siguiente fórmula como valor predeterminado para el cuadro de texto:
position()
Funciones matemáticas
Las fórmulas que contienen funciones matemáticas normalmente requieren argumentos que son enteros o valores decimales. Para asegurarse de que los argumentos son valores enteros o decimales en lugar de valores nulos, haga clicen >Opciones>avanzadas del formulario de archivo y, a continuación, asegúrese de que la casilla Tratar los valores en blanco como cero está activada.
avg
Calcula el promedio de los valores numéricos de un campo que se encuentra en un grupo que se repite.
Nota
El campo de repetición debe ser un tipo de datos numérico y estar incluido en un grupo.
Sintaxis
avg(field)
| argumento | Descripción |
|---|---|
| campo | Los nombres del campo de repetición en el grupo para el que desea calcular el valor promedio. |
Ejemplo
Está diseñando una plantilla de formulario cuyos formularios usarán los proveedores para informar de sus productos e inventarios. La plantilla de formulario contiene un campo de repetición denominado fldPrice, que se encuentra en un grupo extensible que contiene los datos sobre cada producto que vende el proveedor. El grupo está enlazado a un control de tabla extensible.
Tiene un campo en la plantilla de formulario que contendrá el precio medio de todos los productos vendidos por ese proveedor. Para calcular el precio promedio, use la siguiente fórmula en el campo para el precio promedio:
avg(fldPrice)
boolean
Devuelve true si existe un campo o grupo. En caso contrario, devuelve false.
Esto devolverá true incluso si se ha eliminado un control asociado al campo, pero el campo sigue existiendo.
Sintaxis
boolean(field)
| argumento | Descripción |
|---|---|
| campo | Un campo o grupo de repetición que se va a comprobar con esta función. |
Ejemplo
Está diseñando una plantilla de formulario que usarán los proveedores para informar de sus inventarios de productos. La información del producto se almacena en diferentes campos de un grupo repetido denominado grpProduct. Cada grupo de repetición contiene campos que tienen información sobre cada producto. Si el proveedor proporciona información sobre siete productos, el formulario contendrá siete grupos repetidos.
El grupo que se repite está enlazado a un control de tabla extensible, que permite al proveedor agregar información de producto nueva o revisada existente. El proveedor puede agregar o eliminar filas de la tabla extensible.
Desea mostrar un cuadro de diálogo si el usuario quita todas las filas de la tabla extensible. Agregue un campo al origen de datos que contenga la palabra "true" si el control de tabla de repetición tiene al menos una fila y la palabra "false" si el control de tabla de repetición no tiene ninguna fila.
Configure una regla en el control de tabla extensible para mostrar un cuadro de diálogo si el valor del campo es falso. Para determinar automáticamente si la tabla que se repite contiene al menos una fila, use la siguiente fórmula como valor predeterminado para el campo que contiene la palabra "true" o "false":
boolean(grpProduct)
techo
Redondea un número hacia arriba hasta el entero más próximo.
Sintaxis
techo(número)
| argumento | Descripción |
|---|---|
| número | El nombre del campo, que tiene un valor numérico. |
Ejemplo
Está diseñando una plantilla de formulario de informe de gastos para su empresa. Los gastos se envían a un servicio web que tiene un parámetro que solo acepta números enteros. El importe de gastos que se envía a este parámetro se debe redondear al valor entero más alto. La cantidad de gastos se almacena en un campo denominado fldExpenseAmount y el valor entero se almacena en otro campo. Para calcular el valor entero más alto, use la siguiente fórmula como valor predeterminado para el otro campo:
techo(fldExpenseAmount)
Si un usuario crea un formulario basado en la plantilla de formulario y escribe 145,87 en el campo fldExpenseAmount, el valor del campo que contiene la fórmula será 146.
eval
Devuelve los valores de un campo o grupo. El segundo argumento define la expresión que se calculará para el campo o grupo. Normalmente, la función eval está anidada dentro de una función que opera en un campo o grupo, como suma o prom.
Sintaxis
eval(campo, expresión)
| argumento | Descripción |
|---|---|
| campo | El nombre del campo o grupo cuyos valores se evaluarán mediante la expresión en el segundo argumento. |
| expresión | La expresión que se aplicará al primer argumento. La expresión puede ser una función XPath o una expresión entre comillas dobles (" "). |
Ejemplo
Está diseñando una plantilla de formulario de informe de gastos para su empresa. La plantilla de formulario contiene un campo denominado fldTotal que contiene un importe de gastos. El campo fldTotal forma parte de un grupo repetido denominado grpExpenses. Otro campo está enlazado a un cuadro de texto que contiene la suma de todos los gastos. Para mostrar la suma de todos los gastos a medida que el usuario escribe un importe de gastos, use la siguiente fórmula en el campo total de gastos:
eval(grpExpenses,suma(fldTotal))
false
Devuelve false.
Sintaxis
false()
Esta función no usa argumentos.
Ejemplo
Está diseñando una plantilla de formulario cuyos formularios utilizarán los contratistas para solicitar permisos de construcción. La plantilla de formulario tiene dos secciones: una sección para la información de contacto y otra para la información relacionada con el permiso de construcción. Al rellenar este formulario, los contratistas tendrán que rellenar completamente la sección de información de contacto antes de que puedan rellenar la sección de permiso de construcción.
Para ello, cree una regla para establecer el valor de un campo booleano en false si alguno de los campos de la sección de información de contacto está en blanco. Un campo de valor booleano puede tener un valor verdadero booleano o un valor falso booleano. También puede configurar el formato condicional para ocultar el control de sección que contiene la información de permisos de compilación si el valor del campo booleano es falso.
Para ocultar el control de sección que contiene los campos de la información de permisos de compilación, configure una regla para ejecutar esta función en el campo Booleano si alguno de los campos de la sección de información de contacto está en blanco.
floor
Redondea un número hasta el entero inferior más próximo.
Sintaxis
piso(número)
| argumento | Descripción |
|---|---|
| número | El nombre del campo, que tiene un valor numérico. |
Ejemplo
Está diseñando una plantilla de formulario de informe de gastos para su empresa. Los gastos se envían a un servicio web que usa un parámetro que solo acepta números enteros. El importe de gastos que se envía a este parámetro se debe redondear al valor entero inferior. La cantidad de gastos se almacena en un campo denominado fldExpenseAmount y el valor entero se almacena en otro campo. Para calcular el valor entero inferior, use la siguiente fórmula como valor predeterminado para el otro campo:
floor(fldExpenseAmount)
máximo
Devuelve el número más alto de un campo o grupo.
Sintaxis
max(campo)
| argumento | Descripción |
|---|---|
| campo | Un campo de repetición en un grupo o un campo de un grupo de repetición para el que desea encontrar el valor más alto. |
Ejemplo
Está diseñando una plantilla de formulario cuyos formularios usarán los proveedores para informar de sus inventarios de productos. La plantilla de formulario contiene un grupo extensible que incluye varios campos que contienen datos sobre los productos de los proveedores. Un campo denominado fldPrice en el grupo que se repite contiene el precio de un producto.
Otro campo del origen de datos de la plantilla de formulario contendrá el precio más alto de todos los productos vendidos por ese proveedor. Para devolver el precio más alto, use la siguiente fórmula en el campo de precio más alto:
max(fldPrice)
min
Devuelve el menor número de un campo o grupo.
Sintaxis
min(campo)
| argumento | Descripción |
|---|---|
| campo | Un campo de repetición en un grupo o un campo de un grupo de repetición para el que desea encontrar el valor más alto. |
Ejemplo
Está diseñando una plantilla de formulario cuyos formularios usarán los proveedores para informar de sus inventarios de productos. La plantilla de formulario contiene un grupo extensible que incluye varios campos que contienen datos sobre los productos de proveedores. Un campo denominado fldPrice en el grupo que se repite contiene el precio de un producto.
Otro campo en el origen de datos de la plantilla de formulario contendrá el precio más bajo de todos los productos vendidos por ese proveedor. Para devolver el precio más bajo, use la siguiente fórmula en el campo de precio más bajo:
min(fldPrice)
lo hagas
Devuelve true si un valor booleano es falso o nulo. Devuelve false si el valor booleano es true o no null.
Sintaxis
not(boolean_value)
| argumento | Descripción |
|---|---|
| boolean_value | Un campo con un tipo de datos booleano. |
Ejemplo
Está diseñando una plantilla de formulario cuyos formularios utilizarán los contratistas para solicitar permisos de construcción. La plantilla de formulario tiene una sección para la información de contacto y otra para la información relacionada con el permiso de construcción. Al rellenar este formulario, los contratistas tendrán que rellenar completamente la sección de información de contacto antes de que puedan rellenar la sección de permiso de construcción.
Para ello, cree una regla que establezca el valor de un campo booleano en false si alguno de los campos de la sección de información de contacto se deja en blanco. Un campo de valor booleano puede tener el valor booleano true o el valor booleano false. Después, use la misma fórmula para ocultar el control de sección que contiene la información de permisos de compilación si el valor del campo booleano es falso. Para establecer esta regla, use la fórmula siguiente para establecer el campo Booleano en false:
not(true())
número
Convierte un valor en un número.
La función devuelve NaN si el valor del argumento no se puede convertir en un número.
Sintaxis
número(valor)
ArgumentDescription
valorEl campo con un valor que se va a convertir en número.
Ejemplo
Está diseñando una plantilla de formulario cuyos formularios utilizarán los contratistas para solicitar permisos de construcción. La plantilla de formulario contiene una sección en la que el contratista puede introducir su dirección comercial. Para comprobar que el contratista está escribiendo una dirección válida, use una conexión de datos a un servicio web que pueda verificar la dirección. Si se verifica la dirección, el contratista puede enviar el formulario a una base de datos SQL. La base de datos SQL usa un campo de texto tanto para el número de dirección como para el nombre de la calle. El servicio web requiere que el número de dirección sea un tipo de datos numérico y que el nombre de la calle sea un tipo de datos de texto.
Para enviar datos al servicio web y a la base de datos SQL, la dirección debe almacenarse como dos tipos de datos diferentes:
- Para enviar la dirección al servicio web, el número de dirección debe ser un tipo de datos numérico y el nombre de la calle debe ser un tipo de datos de texto.
- Para enviar la dirección a la base de datos SQL, tanto el número de dirección como el nombre de la calle deben ser un tipo de datos de texto.
También desea que el contratista introduzca su dirección solo una vez. Para convertir la dirección a los tipos de datos correctos y asegurarse de que el contratista escriba su dirección solo una vez, la plantilla de formulario contiene un campo denominado fldAddressNumber para escribir el número de dirección y otro campo para escribir el nombre de la calle. Ambos campos están configurados como tipos de datos de texto.
Para enviar el número de dirección al servicio web, debe convertir los datos del campo fldAddressNumber (almacenados como un tipo de datos de texto) en un tipo de datos numérico. El valor del número de dirección convertido en un tipo de datos numérico se almacena en otro campo que está configurado para almacenar tipos de datos numéricos.
Para convertir el número de dirección de un tipo de datos de texto en un tipo de datos numérico, use la siguiente fórmula como valor predeterminado para el campo fldAddressNumber:
number(fldAddressNumber)
nz
Devuelve un campo o grupo con todos los campos en blanco reemplazados por cero (0).
Sintaxis
nz(campo)
| argumento | Descripción |
|---|---|
| campo | El campo en el que desea comprobar un valor. |
Ejemplo
Está diseñando una plantilla de formulario que los proveedores rellenarán para informar de sus inventarios de productos. El proveedor enviará sus inventarios de productos a un servicio web a través de un formulario basado en su plantilla de formulario. El método del servicio web requiere que todos los elementos que contienen datos numéricos tengan un valor numérico. El servicio web rechaza un formulario que contiene un elemento numérico vacío.
La plantilla de formulario contiene un campo denominado disponibilidad fld que contiene un número correspondiente a la capacidad del proveedor para proporcionar este producto. El proveedor puede escribir un número en este campo. Para asegurarse de que el proveedor puede enviar su formulario basado en la plantilla de formulario al servicio web y establecer automáticamente el valor del campo en cero si el proveedor no especifica un número, use la siguiente fórmula como valor predeterminado para este campo:
nz(fldAvailability)
entes
Redondea un número al entero más próximo.
Si el valor no entero está exactamente a la mitad entre dos valores enteros redondeados, el valor devuelto es el siguiente mayor valor entero.
Sintaxis
redondear(número)
| argumento | Descripción |
|---|---|
| número | El campo que contiene el número que se redondeará con esta fórmula. |
Ejemplo
Está diseñando una plantilla de formulario cuyos formularios usarán los proveedores para informar de sus inventarios de productos. La plantilla de formulario contiene un grupo extensible que incluye varios campos que contienen datos sobre los productos de los proveedores. Uno de los campos, denominado fldPrice, en el grupo que se repite contiene el precio de un producto.
La plantilla de formulario tiene una conexión de datos de envío a un servicio web. El método de servicio web requiere que cada precio se redondee a un valor entero. Para enviar el valor adecuado al método del servicio web, agregue un campo de repetición al origen de datos. En este campo se usa la fórmula siguiente para redondear el precio del campo fldPrice a un valor entero:
round(fldPrice)
sum
Devuelve la suma de todos los campos de un campo o grupo. Cada campo se convierte primero en un valor numérico.
Sintaxis
suma(campo)
| argumento | Descripción |
|---|---|
| campo | El nombre de un campo en un grupo de repetición o un campo de repetición de un grupo cuyos valores se agregarán. Para agregar campos de dos grupos diferentes, use el operador de unión (|) para separar los argumentos. Por ejemplo: suma( nombre de campo 1 | nombre de campo 2). |
Ejemplo
Está diseñando una plantilla de formulario de informe de gastos. La plantilla de formulario tiene un grupo que contiene elementos de gastos. La cantidad de cada elemento se almacena en un campo denominado fldExpenseAmount. El grupo está enlazado a una tabla extensible que muestra cada elemento de gastos como una fila. La plantilla de formulario contiene un control de cuadro de texto que muestra los gastos totales. Para mostrar los gastos totales, el control de cuadro de texto contiene la siguiente fórmula:
sum(fldExpenseAmount)
verdadero
Devuelve true.
Sintaxis
true()
Esta función no usa argumentos.
Ejemplo
Está diseñando una plantilla de formulario cuyos formularios utilizarán los contratistas para solicitar permisos de construcción. La plantilla de formulario contiene una sección para la información de contacto y otra para la información relacionada con el permiso de construcción. Al rellenar este formulario, los contratistas tendrán que rellenar completamente la sección de información de contacto antes de que puedan rellenar la sección de permiso de construcción.
Para ello, cree una regla que establezca el valor de un campo booleano en true si todos los campos de la sección de información de contacto contienen datos. Un campo de valor booleano puede tener el valor booleano true o false. Si el valor del campo Boolean es true, se muestra el control de sección que contiene la información de permisos de compilación.
Para mostrar el control de sección que contiene la información de permisos de compilación, configure una regla para ejecutar esta función en el campo Booleano si todos los campos de la sección de información de contacto contienen datos.
Funciones de texto
concat
Combina dos o más campos de cadenas de texto en una sola.
Sintaxis
concat(texto1, texto2, ...)
| argumento | Descripción |
|---|---|
| texto1 | Un campo que contiene texto que se combinará en una sola línea de texto con el texto del argumento2. |
| texto2, ... | Ore o más campos adicionales que contengan texto que se combinarán con el campo anterior. Separe los campos de texto con una coma. |
Ejemplo
Está diseñando una plantilla de formulario que contiene un campo denominado fldFirstName y un campo denominado fldLastName. Agregue la fórmula siguiente a un tercer campo para que contenga el texto "Este formulario se ha rellenado con <el apellido nombre><>".
concat("Este formulario se ha rellenado con ", fldFirstName, " ", fldLastName, ".")
Nota
Cualquier texto escrito como argumento textual, incluidos espacios o signos de puntuación, debe insertarse entre comillas (").
contiene
Devuelve true si el primer campo o cadena de texto contiene el segundo. En caso contrario, devuelve false.
Sintaxis
contains(within_text, find_text)
| argumento | Descripción |
|---|---|
| dentro_del_texto | El campo que contiene el texto que se va a buscar. |
| texto_buscado | Campo que contiene el texto o el texto entre comillas dobles (" ") para buscar en el primer argumento. |
Ejemplo
Está diseñando una plantilla de formulario con tres campos de texto. La primera permite a un usuario escribir una larga cantidad de texto en el primer control de texto, denominado fldText. La segunda permite a un usuario especificar un segmento corto de texto y se denomina fldFindText. El tercer cuadro de texto comparará el segundo cuadro de texto con el primero e indicará si el valor del segundo campo se encuentra en el primer campo y mostrará el resultado. Tendría la siguiente fórmula como valor predeterminado:
contains(fldText,fldFindText)
normalizar espacio
Quita el espacio en blanco de una cadena de texto.
Nota
Esto quitará los espacios en blanco iniciales, finales y repetidos de un campo con un tipo de datos de texto.
Sintaxis
normalizar espacio(texto)
| argumento | Descripción |
|---|---|
| texto | Es el texto que contiene los espacios en blanco inicial, final o repetido que desea quitar. Escriba el texto entre comillas (" "). |
Ejemplo
Diseñar una plantilla de formulario que contenga un campo denominado fldText (que está enlazado a un control de cuadro de texto). Para normalizar cualquier texto escrito en el primer campo y mostrar el valor en el primer campo sin exceso de espacio en blanco, agregue un segundo campo con la siguiente fórmula como valor predeterminado:
normalize-space(fldText)
empieza con
Devuelve true si el primer campo o cadena de texto comienza con el segundo. En caso contrario, devuelve false.
Sintaxis
comienza con(texto, start_text)
| argumento | Descripción |
|---|---|
| texto | El nombre del campo que contiene el texto que se va a buscar. Separe los argumentos con una coma. |
| start_text | El texto que se va a buscar al principio del campo especificado en el primer argumento. Este argumento puede ser un campo o texto entre comillas dobles (" "). |
Ejemplo
Está diseñando una plantilla de formulario con tres campos de texto. La primera permite a un usuario escribir una larga cantidad de texto en el primer control de texto, denominado fldText. La segunda permite a un usuario especificar un segmento corto de texto y se denomina fldFindText. El tercer cuadro de texto comparará el segundo cuadro de texto con el primero e indicará si el valor del primer campo comienza con el valor del segundo campo y muestra el resultado. Tendría la siguiente fórmula como valor predeterminado:
starts-with(fldText, fldFindText)
cadena
Convierte un valor en una cadena de texto.
Sintaxis
cadena(valor)
| argumento | Descripción |
|---|---|
| valor | El campo que contiene el valor que se va a convertir en texto. |
Ejemplo
Está diseñando una plantilla de formulario cuyos formularios utilizarán los contratistas para solicitar permisos de construcción. La plantilla de formulario contiene una sección en la que el contratista puede introducir su dirección comercial. Para comprobar que el contratista está escribiendo una dirección válida, la plantilla de formulario tiene una conexión de datos a un servicio web que puede comprobar la dirección. Si se verifica la dirección, el contratista puede enviar el formulario a una base de datos SQL. La base de datos SQL usa un campo de texto para la dirección. El servicio web requiere que el número de dirección sea un tipo de datos numérico y que el nombre de la calle sea un tipo de datos de texto.
Para enviar datos al servicio web y a la base de datos SQL, la dirección debe almacenarse en dos tipos de datos diferentes:
- Para enviar la dirección al servicio web, el número de dirección debe ser un tipo de datos numérico.
- Para enviar la dirección a la base de datos SQL, tanto el número de dirección como el nombre de la calle deben ser un tipo de datos de texto.
También desea que el contratista introduzca su dirección solo una vez. Para convertir la dirección a los tipos de datos correctos y ayudar a garantizar que el contratista escriba su dirección solo una vez, el formulario contiene un campo para escribir el número de dirección denominado fldAddressNumber y otro campo para escribir el nombre de la calle. El campo fldAddressNumber es un tipo de datos numérico y el campo de nombre de calle es un tipo de datos de texto.
Para enviar la dirección completa (tanto el número de dirección como el nombre de la calle) a la base de datos SQL, debe combinar los valores del campo fldAddressNumber y el campo street name en un valor que sea un tipo de datos de texto. Primero debe convertir los datos numéricos en el campo fldAddressNumber, que almacena los datos como un tipo de datos numérico, en un tipo de datos de texto. Agregue un campo al origen de datos que contendrá la dirección completa como tipo de datos de texto.
Para convertir los datos de texto del campo fldAddressNumber en un tipo de datos de texto para que pueda usar el servicio web, configure otro campo que contendrá el número de dirección como tipo de datos de texto. Para convertir el número de dirección de un tipo de datos numérico a un tipo de datos de texto, use la siguiente fórmula como valor predeterminado para este campo:
string(fldAddressNumber)
longitud de cadena
Devuelve el número de caracteres de una cadena de texto.
Sintaxis
longitud de cadena(texto)
| argumento | Descripción |
|---|---|
| texto | El campo cuyo valor es el texto que desea contar. |
Ejemplo
Está diseñando una plantilla de formulario que contiene un campo denominado fldText, que está enlazado a un control de cuadro de texto. La plantilla de formulario incluye un segundo campo que se usa para contar el número de caracteres escritos en el primer formulario. Para ello, el segundo campo contiene la siguiente fórmula como valor predeterminado:
string-length(fldText)
subcadena
Devuelve una parte específica de una cadena de texto. El segundo argumento especifica la posición inicial y el tercer argumento especifica el número de caracteres que se incluirán.
Sintaxis
subcadena(texto, start_position, char_count)
| argumento | Descripción |
|---|---|
| texto | Un campo con un tipo de datos de texto o texto entre comillas (" "). La función busca en este texto y devuelve todos los caracteres desde la posición especificada en el segundo argumento hasta el número de caracteres especificado en el tercer argumento o hasta el final del texto, lo que ocurra primero. |
| start_position | La posición inicial del texto que se va a recuperar del primer argumento. Este argumento debe ser un número entero o una referencia a un campo configurado para almacenar tipos de datos de número entero (entero). |
| char_count | El número de caracteres que desea recuperar, empezando desde la posición inicial especificada en el segundo argumento. Este argumento debe ser un número entero o una referencia a un campo configurado para almacenar tipos de datos de número entero (entero). |
Ejemplo
Está diseñando una plantilla de formulario que contiene los siguientes campos y controles:
- Un campo denominado fldText que está enlazado a un control de cuadro de texto. Este campo contiene el texto que busca la función.
- Un campo denominado fldStartingPosition que está enlazado a un control de cuadro de texto. Este campo está configurado como un tipo de datos de número completo. El campo contiene la posición inicial de la función.
- Campo denominado fldNumberOfCharacters enlazado a un control de cuadro de texto. Este campo está configurado como un tipo de datos de número completo. El campo contiene el número de caracteres que devuelve la función.
- Un control de cuadro de texto que muestra los resultados de la función. El control de cuadro de texto contiene la fórmula siguiente:
subcadena(fldText, fldStartingPosition, fldNumberOfCharacters)
Si un usuario escribe "Este formulario se creó a partir de una plantilla de formulario de InfoPath". en el primer cuadro de texto, seguido de 4 en el segundo y 16 en el tercero, el cuarto cuadro de texto contiene "el formulario era creat".
subcadena posterior
Devuelve el texto de la primera cadena de texto que sigue a la primera aparición de la segunda.
Sintaxis
subcadena-después(texto, find_text)
| argumento | Descripción |
|---|---|
| texto | Un campo con un tipo de datos de texto o texto entre comillas (" "). La función busca en el texto de este argumento y, a continuación, devuelve todos los caracteres que siguen al texto en el segundo argumento. |
| texto_buscado | El texto que se va a buscar en el texto del primer argumento. El texto puede ser el valor del campo con un tipo de datos de texto o texto entre comillas dobles (" "). La función busca este texto en el texto del primer argumento y, a continuación, devuelve todos los caracteres que siguen al texto de este argumento. |
Ejemplo
Está diseñando una plantilla de formulario que contiene los siguientes campos y controles:
- Un campo denominado fldText que está enlazado a un control de cuadro de texto. Este campo contiene el texto que busca la función.
- Un campo denominado fldSubstringText que está enlazado a un control de cuadro de texto. Este campo contiene el texto que es el segundo argumento de la función.
- Un control de cuadro de texto que muestra los resultados de la función. El control de cuadro de texto contiene la fórmula siguiente:
subcadena-after(fldText, fldSubstringText)
Si un usuario escribe "Este formulario se creó a partir de una plantilla de formulario de InfoPath". en el campo fldText y "InfoPath" en el segundo, el tercer control de cuadro de texto contiene "plantilla de formulario".
subcadena-antes
Devuelve el texto de la primera cadena de texto que precede a la primera aparición de la segunda.
Sintaxis
subcadena-antes(texto, find_text)
| argumento | Descripción |
|---|---|
| texto | Un campo con un tipo de datos de texto o texto entre comillas (" "). La función busca en el texto de este argumento y, a continuación, devuelve todos los caracteres anteriores al texto en el segundo argumento, find_text. |
| texto_buscado | Es el valor que se va a buscar en el argumento texto. Este valor puede ser el valor de un campo con un tipo de datos de texto o texto entre comillas dobles (" "). La función busca este texto en el texto del primer argumento (texto) y devuelve todos los caracteres anteriores al texto de este argumento. |
Ejemplo
Está diseñando una plantilla de formulario con los siguientes campos y controles:
- Un campo denominado fldText que está enlazado a un control de cuadro de texto. Este campo contiene el texto que busca la función.
- Un campo denominado fldSubstringText que está enlazado a un control de cuadro de texto. Este campo contiene el texto que es el segundo argumento de la función.
- Control de cuadro de texto Aa que muestra los resultados de la función. El control de cuadro de texto contiene la fórmula siguiente:
subcadena-antes(fldText, fldSubstringText)
Si un usuario escribe "Este formulario se creó a partir de una plantilla de formulario de InfoPath". en el campo fldText y "creado" en el segundo, el tercer control de cuadro de texto contiene "Este formulario es".
traducir
Devuelve la primera cadena de texto con cada carácter de la segunda cadena de texto reemplazada por el carácter en la posición correspondiente de la tercera cadena de texto.
Sintaxis
translate(texto, find_chars, replace_chars)
| argumento | Descripción |
|---|---|
| texto | El nombre del campo que contiene el texto cuyos caracteres se reemplazarán. Separe los argumentos con una coma. |
| find_chars | Un carácter o el valor de un campo con un tipo de datos de texto que se reemplazará por los caracteres del tercer argumento. Separe los argumentos con una coma. |
| replace_chars | Un carácter o el valor de un campo con un tipo de datos de texto que reemplazará a todas las instancias del carácter en el segundo argumento. |
Ejemplo
Está diseñando una plantilla de formulario cuyos formularios utilizarán los contratistas para solicitar permisos de construcción. La plantilla de formulario contiene una sección en la que el contratista puede introducir su dirección comercial. La sección contiene un campo denominado fldStreetAddress que está enlazado a un control de cuadro de texto en el que el contratista puede introducir su dirección.
Para comprobar que el contratista está escribiendo una dirección válida, tiene una conexión de datos a un servicio web que puede verificar la dirección. El servicio web requiere caracteres en minúsculas en la dirección.
Para convertir cualquier carácter en mayúsculas de la dirección a minúsculas, agregue otro campo al origen de datos para que contenga la dirección postal que se convierte en minúsculas. El valor predeterminado de este campo contiene la siguiente fórmula:
translate(fldStreetAddress, ABCDEFGHIJKLMNOPQRSTUVWXYZ, abcdefghijklmnopqrstuvwxyz)
Funciones de dirección URL
SharePointListUrl
Devuelve la dirección de la lista o biblioteca de formularios de SharePoint donde se hospeda el formulario (solo en InfoPath 2010).
Sintaxis
SharePointListUrl()
Esta función no usa argumentos.
Ejemplo
Está diseñando una plantilla de formulario para una lista de SharePoint y desea agregar un vínculo a la ubicación donde se hospeda la lista, como "http://sharepointserver/site/list/". Para ello, agregue un control de hipervínculo, establécelo en Solo lectura y, a continuación, establezca el valor predeterminado del campo al que está vinculado el control de la siguiente manera:
SharePointListUrl()
Nota
Si la plantilla de formulario no está hospedada en un servidor de SharePoint, la función SharePointListUrl() solo devolverá "http://sharepointserver/site/list/".
SharePointServerRootUrl
Devuelve la dirección del servidor de SharePoint donde se hospeda el formulario (solo InfoPath 2010).
Sintaxis
SharePointServerRootUrl()
Esta función no usa argumentos.
Ejemplo
Está diseñando una plantilla de formulario para una lista de SharePoint y desea agregar un vínculo a la raíz del servidor de SharePoint que se hospeda en la lista, como "http://sharepointserver/site/list/". Para ello, agregue un control de hipervínculo, establécelo en Solo lectura y, a continuación, establezca el valor predeterminado del campo al que está vinculado el control de la siguiente manera:
SharePointServerRootUrl()
Nota
Si la plantilla de formulario no está hospedada en un servidor de SharePoint, la función SharePointListUrl() solo devolverá "http://sharepointserver/site/list/".
SharePointCollectionUrl
Devuelve la dirección de la colección de sitios de SharePoint donde se hospeda el formulario (solo InfoPath 2010).
Sintaxis
SharePointCollectionUrl()
Esta función no usa argumentos.
Ejemplo
Está diseñando una plantilla de formulario para una lista de SharePoint y desea agregar un vínculo a la colección de sitios del servidor de SharePoint donde se hospeda la lista, como "http://sharepointserver/sitecollection/". Para ello, agregue un control de hipervínculo, establécelo en Solo lectura y, a continuación, establezca el valor predeterminado del campo al que está vinculado el control de la siguiente manera:
SharePointCollectionUrl()
Nota
Si la plantilla de formulario no está hospedada en un servidor de SharePoint, la función SharePointListUrl() solo devolverá "http://sharepointserver/sitecollection/".
SharePointSiteUrl
Devuelve la dirección del sitio de SharePoint donde se hospeda el formulario (solo InfoPath 2010).
Sintaxis
SharePointSiteUrl()
Esta función no usa argumentos.
Ejemplo
Está diseñando una plantilla de formulario para una lista de SharePoint y desea agregar un vínculo al sitio de SharePoint donde se hospeda la lista, como "http://sharepointserver/site/". Para ello, agregue un control de hipervínculo, establécelo en Solo lectura y, a continuación, establezca el valor predeterminado del campo al que está vinculado el control de la siguiente manera:
SharePointSiteUrl()
Nota
Si la plantilla de formulario no está hospedada en un servidor de SharePoint, la función SharePointListUrl() solo devolverá "http://sharepointserver/site/".
La función userName
userName
Devuelve el nombre de usuario de la persona que rellena el formulario (Microsoft InfoPath 2007 y versiones posteriores).
Nota
Si el usuario está rellenando un formulario en un explorador web, el nombre de usuario se recupera de Microsoft Windows SharePoint Services 3.0 o posterior.
Sintaxis
userName()
Esta función no usa argumentos.
Ejemplo
Está diseñando una plantilla de formulario de informe de gastos para su empresa. La empresa de tarjetas de crédito envía registros de los gastos de los empleados de forma electrónica a una base de datos que mantiene su empresa. Para recuperar los registros de gastos de un empleado, la base de datos necesita el nombre de usuario del empleado que está rellenando un formulario basado en la plantilla de formulario.
Agregue un campo al origen de datos de la plantilla de formulario para almacenar el nombre de usuario del empleado. También se crea una conexión de datos de consulta que usa el valor de este campo en una consulta para recuperar los gastos.
Para asegurarse de que el empleado que rellena el informe de gastos usa el nombre de usuario correcto, enlace el campo a un control de cuadro de texto. Para mostrar el nombre de usuario del usuario que crea un formulario basado en esta plantilla de formulario, use la siguiente fórmula como valor predeterminado de un campo enlazado al control de cuadro de texto:
userName()