La función ForAll

Completado

Anteriormente ha aprendido a usar funciones de un único objetivo para operar en una tabla. Son idóneas y funcionan bien, pero en ocasiones necesitará más flexibilidad o tendrá que hacer algo que no ofrezcan esas funciones. Para estos casos, existe la función ForAll.

La función ForAll evalúa una fórmula para todos los registros de una tabla. La fórmula puede calcular un valor o realizar acciones, como modificar datos o trabajar con una conexión.

Los campos del registro que se está procesando actualmente están disponibles dentro de la fórmula. Puede hacer referencia a los campos por su nombre, como con cualquier otro valor. También puede hacer referencia a propiedades de control y a otros valores desde toda la aplicación.

Por ejemplo, podría usar ForAll(CustomerOrders, Office365.SendEmail(Email, "Gracias", "Es un cliente excelente" & FirstName)) para enviar un correo electrónico independiente a todas las direcciones de correo electrónico de la tabla CustomerOrders. El asunto del correo electrónico sería "Gracias" y el cuerpo sería "Es un cliente excelente", seguido por el valor almacenado en el campo FirstName.

Este ejemplo varía con respecto al de Concat en dos aspectos importantes. En primer lugar, se enviará un correo electrónico para cada registro de la tabla CustomerOrders. Por tanto, si hay 50 registros, se enviarán 50 mensajes de correo electrónico diferentes. En el ejemplo de Concat, solo se ha enviado un correo electrónico con las 50 direcciones de correo electrónico en la línea Para:. En segundo lugar, este correo electrónico también hace referencia al campo FirstName de la tabla CustomerOrders. Cuando se usa la función ForAll, están disponibles para usarse todos los campos de todos los registros.

Aspectos que tener en cuenta al usar ForAll

Con ForAll se dispone de mucha eficacia, pero también debe conocer varios aspectos cuando empiece a crear la fórmula.

  • La fórmula puede incluir funciones que realicen acciones, como modificar los registros de un origen de datos con las funciones Patch y Collect.

  • No se puede modificar la tabla a la que se aplica la función ForAll. Esto incluye usar Parche o Recopilar en la tabla.

  • La fórmula puede llamar a métodos en conexiones.

  • Puede realizar varias acciones por registro mediante el operador ;.

  • Al escribir la fórmula, tenga en cuenta que los registros se pueden procesar en cualquier orden y, cuando sea posible, en paralelo. Puede procesar el primer registro de la tabla después del último. Asegúrese de evitar la ordenación de las dependencias. Por este motivo, no puede utilizar las funciones Set, UpdateContext, Clear y ClearCollect dentro de una función ForAll, ya que se podrían usar para almacenar variables que serían susceptibles a este efecto. Puede usar Collect, pero el orden de agregación de los registros no está definido.

  • ForAll no es delegable, lo que significa que es posible que no revise todos sus registros si se usa con datos externos. Es posible que el resultado que obtenga no sea representativo de la situación real. Puede que aparezca una advertencia mientras escribe la fórmula para recordarle esta limitación y para sugerirle un cambio a alternativas delegables siempre que sea posible. ForAll funciona bien con colecciones, pero tenga en cuenta que no es delegable. Para obtener más información, consulte la información general sobre delegación.

La función ForAll tiene muchas más reglas que la mayoría de las funciones de Power Apps. Además, como no puede usar funciones como Set y UpdateContext, en ocasiones tendrá que buscar otro enfoque para la fórmula. A menudo, el motivo por el que se quiere usar Set con ForAll es para realizar el seguimiento del número de registros que se han modificado, o bien para capturar información sobre esos registros. Es posible que obtenga el mismo resultado si usa Patch para actualizar una colección donde se realiza el seguimiento de esos mismos datos.

Para obtener más información sobre el uso y las reglas de la función ForAll, consulte Función ForAll en Power Apps.