Fórmulas y funciones

Las fórmulas se componen de funciones, referencias a otros campos o grupos, valores estáticos (como los números) y operadores matemáticos. Las fórmulas pueden utilizarse para calcular valores matemáticos, mostrar fechas y horas, establecer referencias a los campos de un formulario o realizar operaciones de cadena, como la combinación de varios campos en uno sólo. Las fórmulas siempre devuelven el mismo resultado.

Las fórmulas se almacenan en campos (campo: elemento o atributo en el origen de datos que puede contener datos. Si el campo es un elemento, puede contener campos de atributo. Los campos almacenan los datos que se escriben en los controles.) y se muestran en controles que están enlazados (enlazar: conectar un control con un campo o grupo en el origen de datos para que se guarden los datos escritos en el control. Cuando un control no está enlazado, no está conectado con un campo o un grupo, por lo que no se guardan los datos escritos en el control.) a esos campos. Puede crear una fórmula utilizando las propiedades de un control (cuadros de texto, cuadros de texto enriquecido y selectores de fecha) o las propiedades del campo.

Las funciones, como sum y avg, son un componente fundamental de las fórmulas, y puede utilizarlas en todas las ubicaciones en las que inserte de una fórmula. La mayoría de las funciones necesitan argumentos (argumento: valor que proporciona información a una acción, un evento, un método, una propiedad, una función o un procedimiento.) para realizar operaciones, y algunas requieren más de un argumento. Todas las funciones devuelven un valor. Por ejemplo, en una función que sume los valores de una columna, el argumento es el campo de repetición al que están enlazados los controles de la columna. La función agrega y devuelve los valores de todos esos campos. Según la función, un argumento puede ser un campo o un valor estático, o un campo o valor estático seleccionado dinámicamente a tiempo real basándose en otro valor.

A continuación, un ejemplo de fórmula que calcula la media de los valores de un campo de repetición, después calcula la suma de los valores en un campo de repetición distinto y, a continuación, agrega el resultado de la suma y la media.

avg(field3) + sum(field4)

En este ejemplo hay dos funciones: avg y sum, cada una de las cuales requiere un argumento (field3 y field4, respectivamente). La fórmula devuelve el resultado de las funciones agregadas.

Cuando trabaje con fórmulas, tenga en cuenta lo siguiente:

  • Si muestra una fórmula en un cuadro de texto, cuadro de texto enriquecido o selector de fecha, el control debe ser de sólo lectura para evitar que otros usuarios sobrescriban el resultado de la fórmula.
  • En las propiedades del control o campo, defina si los resultados de la fórmula se actualizarán cuando cambien los valores de ésta o si sólo se va a mostrar el resultado inicial de la misma.
  • Cuando se utilizan argumentos en las funciones, se evalúan todos los valores de un campo de repetición. Por ejemplo, para sumar una columna de una tabla de repetición, sume el campo al que está enlazada la columna: sum(field1).
  • Las funciones pueden anidarse dentro de otras funciones, en cuyo caso el resultado de una función proporciona el argumento de otra función.
  • Puesto que las fórmulas matemáticas suelen depender de valores enteros o decimales como argumentos, asegúrese de que la casilla de verificación Considerar los valores en blanco como cero está activada en la ficha General del cuadro de diálogo Opciones de formulario.
  • Las fórmulas de Microsoft Office InfoPath 2003 se basan en expresiones XPath. Si está familiarizado con XPath, puede editar la expresión XPath directamente.
  • Las fórmulas contienen referencias a campos o grupos del formulario que proceden del contexto en el que están ubicados los campos y grupos. Los campos que contienen una referencia a sí mismo utilizan un punto (.) en lugar de su propio nombre. Por ejemplo, una fórmula que utilice la función Name para devolver su propio nombre de campo tendrá el siguiente aspecto: name(.)

Las siguientes tablas contienen una lista de las funciones que están disponibles en InfoPath.

Funciones de fecha y hora

Función Descripción Ejemplo
now Devuelve la fecha y la hora actuales. No necesita ningún argumento. now()
today Devuelve la fecha actual. No necesita ningún argumento. today()

Funciones de campo

Función Descripción Ejemplo
count Cuenta las veces que aparece el campo o grupo especificado. count (field1)
id Devuelve los campos o grupos asociados al identificador especificado. Esta función no está disponible en el cuadro de diálogo Insertar función; debe escribirse en el cuadro Fórmula del cuadro de diálogo Insertar fórmula. id(field1)
last Devuelve el valor de la última aparición del campo en el contexto actual. field1[last()]
local-name Devuelve el nombre del campo o grupo especificado. Si el argumento es un conjunto de campos o grupos, devuelve el nombre del primer campo o grupo. local-name(field1)
name Devuelve el nombre del campo o grupo especificado, además del prefijo del espacio de nombres. Si el argumento es un conjunto de campos o grupos, devuelve el nombre y el prefijo del primer campo o grupo. name(field1)
namespace-uri Devuelve el espacio de nombres completo del campo o grupo especificado. Si el argumento es un conjunto de campos o grupos, devuelve el espacio de nombres del primer campo o grupo. namespace-uri(field1)
position Devuelve el índice (o posición) del campo o grupo respecto de los demás campos y grupos del mismo grupo. position()

Funciones matemáticas

Función Descripción Ejemplo
avg Calcula el valor medio de todos las valores numéricos del argumento. avg(field1)
Boolean Devuelve el valor "true" (verdadero) si el valor del argumento no es "null" (nulo), si es un número positivo o negativo o si es una cadena no vacía. En caso contrario, devuelve el valor "false" (falso). Devuelve el valor "false" si el valor del argumento es "null", cero o NaN, o si es una cadena vacía. boolean(field1)
ceiling Devuelve el valor entero más bajo que no sea inferior al del argumento (redondeando al alza). ceiling(field1)
eval Devuelve los valores de un conjunto de campos. El primer argumento define el conjunto de campos; el segundo argumento define la expresión que se va a calcular para el conjunto de campos. Normalmente, la función eval está anidada dentro de una función que realiza operaciones en un conjunto de campos, como sum o avg. sum(eval(group2, "field1 * field2"))
false Devuelve el valor "false" (falso). false()
floor Devuelve el valor entero más alto que no sea superior al del argumento (redondeando a la baja). floor(field1)
max Devuelve el número más alto del argumento. max(field1)
min Devuelve el número más bajo del argumento. min(field1)
not Si el valor del argumento es "false" (falso) o "null" (nulo), devuelve "true" (verdadero). Si el valor del argumento es "true" o no es "null", devuelve "false". not(field1)
number Convierte el argumento en un número. number(field1)
nz Devuelve el valor del campo especificado. Si el campo está en blanco, devuelve cero (o). nz(field1)
round Redondea el argumento hasta el número entero más cercano. round(field1)
sum Calcula la suma de los argumentos. sum(field1)
true Devuelve el valor "true" (verdadero). true()

Funciones de texto

Función Descripción Ejemplo
concat Combina el valor de los campos con otros campos o cadenas de texto. concat(field1," of ",field2)
contains Si el primer argumento contiene el segundo argumento, devuelve el valor "true" (verdadero). En caso contrario, devuelve el valor "false" (falso). contains(field1, "city")
normalize-space Quita el espacio en blanco del argumento. normalize-space(field1)
starts-with Si el primer argumento comienza con el segundo argumento, devuelve el valor "true" (verdadero). En caso contrario, devuelve el valor "false" (falso). starts-with(field1, "B")
string Convierte el argumento en una cadena de texto. string(field1)
string-length Devuelve el número de caracteres del argumento. string-length(field1)
substring Devuelve una parte específica de una cadena de texto. El primer argumento define la cadena de texto, el segundo define la posición de inicio y el tercero define cuántos caracteres se van a incluir. substring(field1, 3,5)
substring-after Devuelve una parte específica de una cadena de texto. El primer argumento define la cadena de texto; el segundo, el elemento que hay que buscar en la misma. La función devuelve el texto que sigue a la primera aparición del segundo argumento. substring(field1, "country")
substring-before Devuelve una parte específica de una cadena de texto. El primer argumento define la cadena de texto; el segundo, el elemento que hay que buscar en la misma. La función devuelve el texto que precede a la primera aparición del segundo argumento. substring-before(field1, "the end")
translate Devuelve una cadena de texto convertido. El primer argumento define la cadena de texto; el segundo, los caracteres que hay que cambiar en la misma; y el tercero, el cambio que se va a realizar en los caracteres. . Los caracteres del segundo argumento se convierten en la posición correspondiente del tercer argumento. translate(field1, "()","[]")

 Nota   Puede que la información contenida en este tema no sea aplicable a los formularios diseñados con Microsoft Office InfoPath 2003 sin tener instalado el service pack.

 
 
Corresponde a:
InfoPath 2003