(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Cómo validar formularios en Power Apps: paso a paso

João Barros 14 de July de 2026 5 min de lectura

Validar formularios en Power Apps evita que lleguen registros incompletos o mal formateados a la fuente de datos. Con el control Form, la propiedad Required de los DataCards y unas cuantas fórmulas de Power Fx puedes bloquear el botón Guardar hasta que los datos sean correctos y mostrar mensajes de error claros. El ejemplo siguiente usa un formulario sencillo de contactos con Nombre, Email y Edad.

Requisitos previos

  • Acceso a Power Apps Studio (make.powerapps.com) con una licencia válida.
  • Una fuente de datos con los campos Nome, Email e Idade (Dataverse, SharePoint o Excel).
  • Nociones básicas de Power Fx: las fórmulas se escriben en las propiedades de los controles.
  • Una Canvas App en blanco, formato tableta o teléfono.

Paso 1: Añadir el formulario y conectar la fuente de datos

En la Canvas App, elige Insert > Edit form. En el panel derecho, define la fuente de datos y los campos a mostrar. Después configura las propiedades principales del formulario:

// Propiedad DataSource de Form1
Contactos

// Propiedad DefaultMode de Form1 (registro nuevo)
FormMode.New

En este momento el formulario ya guarda, pero acepta cualquier cosa. Eso es lo que vamos a corregir.

Paso 2: Marcar los campos obligatorios

Selecciona el DataCard del campo Nombre y pon su propiedad Required en true. Power Apps marca el campo con un asterisco y lo incluye en su validación interna. Repite lo mismo con el Email.

// Propiedad Required de DataCard_Nome
true

Es la validación más barata que existe: no escribes ninguna lógica y ya obtienes Form1.Valid, que se mantiene en false mientras haya un campo obligatorio vacío.

Paso 3: Validar el formato del email con IsMatch

Un campo obligatorio no basta: "abc" es texto relleno, pero no es un email. La función IsMatch compara el texto con un patrón, y Power Fx ya incluye el patrón Match.Email. Añade una Label dentro del DataCard del Email y escribe en su propiedad Text:

If(
    IsBlank( DataCardValue_Email.Text ),
    "El email es obligatorio.",
    Not( IsMatch( DataCardValue_Email.Text, Match.Email ) ),
    "Formato de email no válido. Ejemplo: nombre@empresa.es",
    ""
)

Un If con varios pares condición/resultado funciona como un switch: devuelve el primer mensaje cuya condición es verdadera y una cadena vacía si todo está bien. Pon la propiedad Color de la Label en Color.Red.

Paso 4: Validar un rango numérico

Para la Edad solo queremos números entre 18 y 120. Crea otra Label de error con esta fórmula:

If(
    IsBlank( DataCardValue_Idade.Text ),
    "La edad es obligatoria.",
    Not( IsNumeric( Value( DataCardValue_Idade.Text ) ) ),
    "La edad debe ser un número.",
    Or(
        Value( DataCardValue_Idade.Text ) < 18,
        Value( DataCardValue_Idade.Text ) > 120
    ),
    "La edad debe estar entre 18 y 120.",
    ""
)

Fíjate en Value(): el texto de un cuadro siempre es una cadena, y comparar una cadena con un número da error. Convertir primero es el paso que la mayoría olvida.

Paso 5: Bloquear el botón Guardar

La mejor validación es la que impide el error. En la propiedad DisplayMode del botón Guardar, combina la validación nativa del formulario con tus reglas personalizadas:

If(
    And(
        Form1.Valid,
        IsMatch( DataCardValue_Email.Text, Match.Email ),
        Value( DataCardValue_Idade.Text ) >= 18,
        Value( DataCardValue_Idade.Text ) <= 120
    ),
    DisplayMode.Edit,
    DisplayMode.Disabled
)

Paso 6: Guardar y dar feedback

En el OnSelect del botón llama a SubmitForm. El feedback vive en las propiedades del propio formulario, que saben si la escritura salió bien:

// OnSelect del botón Guardar
SubmitForm( Form1 )

// OnSuccess de Form1
Notify( "Contacto guardado correctamente.", NotificationType.Success );
ResetForm( Form1 )

// OnFailure de Form1
Notify( "No se pudo guardar: " & Form1.Error, NotificationType.Error )

OnFailure captura el error que devuelve la fuente de datos (permisos, clave duplicada, una columna obligatoria del lado del servidor). Sin él, un guardado fallido es silencioso.

Verificar el resultado

Pulsa F5 para previsualizar la app y prueba tres escenarios:

  1. Formulario vacío: el botón Guardar aparece en gris y no responde.
  2. Email "abc" y edad 12: aparecen los mensajes en rojo y el botón sigue bloqueado.
  3. Datos válidos: el botón se activa, el registro se guarda y aparece la notificación verde.

Confirma además el registro en la fuente de datos. Si el botón nunca se activa, comprueba que los nombres de los controles en la fórmula (DataCardValue_Email, por ejemplo) coinciden con los nombres reales del árbol de controles: es el error más habitual.

Conclusión

Con Required, IsMatch, Form1.Valid y un botón condicional consigues una validación completa sin una sola línea de código fuera de Power Fx. El siguiente paso natural es llevar las reglas de negocio más pesadas a Dataverse (columnas obligatorias y business rules), para que se cumplan aunque los datos entren por otro canal. ¿Cuál de tus validaciones actuales sobreviviría si alguien escribiera directamente en la tabla sin pasar por la app?