10 agosto, 2026

CONTROLAR DUPLICADOS EN SHAREPOINT ANTES DE GUARDAR DESDE POWER APPS

Hola a todos!

En este post me gustaría tratar el tema de los duplicados y como controlarlos cuando hacemos una herramienta y nos disponemos a guardar información pero queremos aseguirarnos que no volvemos a grabar el mismo usuario, objeto, ID, etc.

Vamos a crear una mini aplicación para poder ilustrarlo:

Es un formulario muy básico con el que vamos a ir registrando los comentarios de una serie de empleados, y que, no pueden ser repetidos. Es ID es ID EMPLEADO.

Cuando pulsamos el botón para guardar la información nuestro botón, como mínimo debe tener este código:

If(
    IsBlank(Trim(txtID.Text));

    Notify(
        "Debes indicar el ID del empleado";
        NotificationType.Warning
    );

    !IsBlank(
        LookUp(
            EJEMPLO_ALERTA_DUPLICADO;
            ID_EMPLEADO = Trim(txtID.Text)
        )
    );

    Notify(
        "El empleado " & txtID.Text & " ya existe en la lista de SharePoint";
        NotificationType.Error
    )
)


En este código lo que estamos controlando es que el campo en el que indicamos el ID del empleado no esté en blanco, y sino esté en blanco hacemos un LookUp en la lista de SharePoint entre el nombre del campo en la lista ID_EMPLEADO y el dato en nuestra aplicación Trim(txtID.Text) eliminando los espacios.

Y notificaremos tanto que el Id está vació o que el ID que intento grabar ya existe en la base de datos.

Pero claro, si queremos añadir algo más, tendríamos que controlar que los campos de fecha y comentario tengan información y no se nos queden campos vacíos en el registro.

Aquí os dejaría el ejemplo completo:

If(
    IsBlank(Trim(txtID.Text)) ||
    IsBlank(dpFecha.SelectedDate) ||
    IsBlank(Trim(txtComentario.Text));

    Notify(
        "Debes completar el ID, la fecha y el comentario";
        NotificationType.Warning
    );

    !IsBlank(
        LookUp(
            EJEMPLO_ALERTA_DUPLICADO;
            ID_EMPLEADO = Trim(txtID.Text)
        )
    );

    Notify(
        "El empleado " & txtID.Text & " ya existe en la lista de SharePoint";
        NotificationType.Error
    );

    Patch(
        EJEMPLO_ALERTA_DUPLICADO;
        {
            ID_EMPLEADO: Trim(txtID.Text);
            FECHA: dpFecha.SelectedDate;
            COMENTARIO: Trim(txtComentario.Text)
        }
    );;

    Notify(
        "Empleado añadido correctamente";
        NotificationType.Success
    );;

    Reset(txtID);;
    Reset(dpFecha);;
    Reset(txtComentario)
)

Analizando cada parte:

Primero valida que los campos obligatorios tengan información:

IsBlank(Trim(txtID.Text)) ||
IsBlank(dpFecha.SelectedDate) ||
IsBlank(Trim(txtComentario.Text))

Si el ID, la fecha o el comentario están vacíos, muestra una notificación indicando que deben completarse y no continúa con el guardado.

Después comprueba si el empleado ya existe en la lista de SharePoint:

LookUp(
    EJEMPLO_ALERTA_DUPLICADO;
    ID_EMPLEADO = Trim(txtID.Text)
)

LookUp busca un registro cuyo ID_EMPLEADO coincida con el valor introducido. Si encuentra uno, !IsBlank(...) devuelve verdadero y se muestra el mensaje:

El empleado ya existe en la lista de SharePoint.

De esta forma se evita crear un registro duplicado.

Si los campos están informados y el ID no existe, se ejecuta el Patch:

Patch(
    EJEMPLO_ALERTA_DUPLICADO;
    {
        ID_EMPLEADO: Trim(txtID.Text);
        FECHA: dpFecha.SelectedDate;
        COMENTARIO: Trim(txtComentario.Text)
    }
)

Este bloque guarda en SharePoint los valores introducidos en los tres controles.

Una vez creado correctamente el registro, se muestra una notificación de éxito:

Notify(
    "Empleado añadido correctamente";
    NotificationType.Success
)

Y finalmente se limpian los controles con:

Reset(txtID);;
Reset(dpFecha);;
Reset(txtComentario)

Y esto es todo!

En el siguiente post, y para no cargar con contenido excesivo este, hablaremos de cómo podemos crear un botón para modificar los registros, en caso de haberlos grabado con datos erróneos.

De momento, creo que con esta explicación tenéis información suficiente para replicar esta aplicación y también para mejorarla.



Comparte este post

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies