10 agosto, 2026

CREAR EN POWER APPS UNA APP PARA DETECTAR SIGNO DEL ZODIÁCO Y PROPIEDADES DEL HORÓSCOPO

Hola a todos!

Aunque la astrología no ha sido algo que me haya llamado especialmente la atención, resulta un área estupenda para crear una APP. Y aprovechando que hace unos días Alicia, mi hija, me preguntó sobre su signo del zodíaco y algunas cosas más, pues le creé una app para que fuese aprendiendo.

Por eso me he puesto manos a la obra y os presente este boceto de app que estoy seguro que os va a gustar.

Para comenzar, lo que debemos hacer es copiar este código y pegarlo en la propiedad OnSelect del botón Buscar:

Set(SignoEncontrado;Blank());;
ClearCollect(
    SignosZodiacales;
    { Signo: "Aries"; InicioMes: 3; InicioDia: 21; FinMes: 4; FinDia: 19; Elemento: "Fuego"; Afines: "Leo, Sagitario, Géminis, Acuario"; Contrarios: "Tauro, Cáncer, Virgo, Capricornio, Piscis, Escorpio, Libra" };
    { Signo: "Tauro"; InicioMes: 4; InicioDia: 20; FinMes: 5; FinDia: 20; Elemento: "Tierra"; Afines: "Virgo, Capricornio, Cáncer, Piscis, Escorpio"; Contrarios: "Aries, Géminis, Libra, Sagitario, Leo, Acuario" };
    { Signo: "Géminis"; InicioMes: 5; InicioDia: 21; FinMes: 6; FinDia: 20; Elemento: "Aire"; Afines: "Libra, Acuario, Aries, Leo"; Contrarios: "Tauro, Escorpio, Capricornio, Piscis, Cáncer, Virgo" };
    { Signo: "Cáncer"; InicioMes: 6; InicioDia: 21; FinMes: 7; FinDia: 22; Elemento: "Agua"; Afines: "Escorpio, Piscis, Tauro, Virgo, Capricornio"; Contrarios: "Aries, Libra, Géminis, Sagitario, Leo, Acuario" };
    { Signo: "Leo"; InicioMes: 7; InicioDia: 23; FinMes: 8; FinDia: 22; Elemento: "Fuego"; Afines: "Aries, Sagitario, Géminis, Libra"; Contrarios: "Tauro, Escorpio, Capricornio, Acuario, Piscis, Virgo" };
    { Signo: "Virgo"; InicioMes: 8; InicioDia: 23; FinMes: 9; FinDia: 22; Elemento: "Tierra"; Afines: "Tauro, Capricornio, Cáncer, Escorpio, Piscis"; Contrarios: "Géminis, Sagitario, Leo, Acuario, Aries, Libra" };
    { Signo: "Libra"; InicioMes: 9; InicioDia: 23; FinMes: 10; FinDia: 22; Elemento: "Aire"; Afines: "Géminis, Acuario, Leo, Sagitario"; Contrarios: "Cáncer, Capricornio, Tauro, Escorpio, Aries, Piscis" };
    { Signo: "Escorpio"; InicioMes: 10; InicioDia: 23; FinMes: 11; FinDia: 21; Elemento: "Agua"; Afines: "Cáncer, Piscis, Tauro, Virgo, Capricornio"; Contrarios: "Géminis, Leo, Libra, Acuario, Sagitario, Aries" };
    { Signo: "Sagitario"; InicioMes: 11; InicioDia: 22; FinMes: 12; FinDia: 21; Elemento: "Fuego"; Afines: "Aries, Leo, Géminis, Acuario"; Contrarios: "Virgo, Piscis, Cáncer, Capricornio, Tauro, Escorpio" };
    { Signo: "Capricornio"; InicioMes: 12; InicioDia: 22; FinMes: 1; FinDia: 19; Elemento: "Tierra"; Afines: "Tauro, Virgo, Escorpio, Piscis, Cáncer"; Contrarios: "Aries, Géminis, Leo, Libra, Sagitario, Acuario" };
    { Signo: "Acuario"; InicioMes: 1; InicioDia: 20; FinMes: 2; FinDia: 18; Elemento: "Aire"; Afines: "Géminis, Libra, Aries, Sagitario"; Contrarios: "Tauro, Escorpio, Cáncer, Virgo, Piscis, Leo" };
    { Signo: "Piscis"; InicioMes: 2; InicioDia: 19; FinMes: 3; FinDia: 20; Elemento: "Agua"; Afines: "Cáncer, Escorpio, Tauro, Capricornio, Virgo"; Contrarios: "Géminis, Leo, Sagitario, Acuario, Aries, Libra" }
);;

If(
    // Controlar fecha vacía
    IsBlank(txtFechaNacimiento.Text); 
    Notify("Fecha vacía. Introduce una fecha válida en formato dd/mm/yyyy."; NotificationType.Error);

    // Longitud de 10 caracteres
    Len(txtFechaNacimiento.Text) <> 10; 
    Notify("La fecha debe tener exactamente 10 caracteres en formato dd/mm/yyyy."; NotificationType.Error);

    // Controlamos resto errores
    IsError(DateValue(txtFechaNacimiento.Text; "es-ES")) || 
    !IsMatch(txtFechaNacimiento.Text; "^(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[0-2])/([0-9]{4})$"); 
    Notify("Formato inválido. Introduce una fecha válida en formato dd/mm/yyyy."; NotificationType.Error);
    Set(
        FechaNacimiento;
        DateValue(txtFechaNacimiento.Text; "es-ES")
    );
    If(
        IsBlank(FechaNacimiento);
        Notify("Fecha inválida. Verifica el formato dd/mm/yyyy."; NotificationType.Error);
        Set(
            SignoEncontrado;
            LookUp(
                SignosZodiacales;
                (Month(FechaNacimiento) = InicioMes && Day(FechaNacimiento) >= InicioDia) ||
                (Month(FechaNacimiento) = FinMes && Day(FechaNacimiento) <= FinDia)
            )
        )
    )
)

Una vez que pulsemos el botón, y que los datos del textInput (txtFechaNacimiento) son correctos. Ya tendremos en nuestra variable SignoEncontrado todos los elementos que vamos a colocar en los diferentes textInput:

SignoEncontrado.Signo
SignoEncontrado.Elemento
SignoEncontrado.Afines
SignoEncontrado.Contrarios

Cada uno de ellos en la propiedad Default de cada objeto.

El resultado es este:

Podríamos crear una tabla en SharePoint para hacer el ejercicio, pero he preferido crear toda la info en una Colección y para luego buscar directamente en la aplicación, sin usar conectores a otros sistemas.

Y esto es todo, espero que sea de utilidad y os haya gustado!!

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