viernes, 22 de enero de 2021

Implementar Bootstrap en nuestro diseño Web

 Cuando vamos a iniciar un proyecto web, una de las primeras cosas que hago es crearme las carpetas necesarias. 

Empiezo con el nombre de la carpeta principal donde va a ir todo el proyecto, imaginemos que le damos el nombre ProyectoRestaurante.

Dentro de esta carpeta tendremos que crearnos las carpetas necesarias, y en principio tenemos que crearnos una carpeta llamada "css" para nuestros archivos de estilos, otra con el nombre "jss" para nuestros archivos de javascript, y otra para las imágenes que la suelo llamar "img".

A continuación vamos implementar Bootstrap que hay dos formas de hacerlo:

- Primera. Nos iremos a la web de Bootstrap y accederemos a https://getbootstrap.com/. Pincharemos en Introduction y bajaremos hasta que nos ponga Starter template, que como el nombre nos indica es la plantilla. A continuación pincharemos en un botón a la derecha que nos pone copy para proceder a la copia de todo el código.

Continuaremos abriendo nuestro editor de código, en mi caso uti


lizo Sublime Text que es gratuito y la verdad que está muy bien, muchas veces se piensa que por ser gratis es peor, en este caso no es así.

Una vez abierto, procederemos a copiar nuestro código y guardaremos el archivo en la carpeta que creamos al principio llamada ProyectoRestaurante, y le daremos el nombre del index.html.

Código Copiado:

<!doctype html>
<html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- Bootstrap CSS -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">

    <title>Hello, world!</title>
  </head>
  <body>
    <h1>Hello, world!</h1>
    <a class="btn btn-primary">Pulsame</a>

    <!-- Optional JavaScript; choose one of the two! -->

    <!-- Option 1: Bootstrap Bundle with Popper -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW" crossorigin="anonymous"></script>

    <!-- Option 2: Separate Popper and Bootstrap JS -->
    <!--
    <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.5.4/dist/umd/popper.min.js" integrity="sha384-q2kxQ16AaE6UbzuKqyBE9/u/KzioAlnx2maXQHiDX9d4/zp8Ok3f+M7DPm+Ib6IU" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.min.js" integrity="sha384-pQQkAEnwaBkjpqZ8RU1fF1AKtTcHJwFl3pblpTlHXybJjHpMYo79HY3hIi4NKxyj" crossorigin="anonymous"></script>
    -->
  </body>
</html>

Y de esta forma ya podemos usar Bootstrap.

A continuación vamos a probar si funciona bootstrap, para ello crearemos un enlace, debajo del <h1>Hello, world!</h1>:

<a class="btn btn-primary">Pulsame</a>

Y tendremos que ver como el enlace es un botón que es de color azul, que esto nos lo da las clases de bootstrap introducidas.

La segunda forma la veremos en la próxima entrada.

martes, 12 de enero de 2021

¿Qué es Bootstrap?

 ¿Qúe es Bootstrap?

Bootstrap, es un framework originalmente creado por Twitter, que permite crear interfaces web con CSS y JavaScript, cuya particularidad es la de adaptar la interfaz del sitio web al tamaño del dispositivo en que se visualice.

El beneficio de usar responsive design en un sitio web, es principalmente que el sitio web se adapta automáticamente al dispositivo desde donde se acceda. Con esto queremos decir, que nuestra web se adaptará al dispositivo que estemos utilizando, es decir, un téminal móvil, una table, un portátil, un ordenardor...

Si usamos este framework para poder desarrollar nuestras páginas web no necesitamos crear sitos específicos para dispositivos y, así, limitar el uso a desterminados dispositivos que nos limitarían el uso.

¿Para qué podemos utilizarlo?

Este framework lo usaremos para el diseño de nuestra pagina web, principalmente visual y funcional. Que los diseños deben empezar en los dispositivos más pequeños y desde ahí hasta llegar a pantallas XL.

¿Cómo funciona?

Bootstrap está constituido por una serie de archivos CSS y JavaScript responsables de asignar características específicas a los elementos de la página.

Para asignarle una característica a un elemento, simplemente debemos informar la clase correspondiente en la propiedad “class” del elemento que será estilizado, eso si debemos saber las clases que existen, que de todas maneras están en la web de Bootstrap 4.

Dependiendo del editor de código que usemos, nos puede facilitar el uso de Bootstrap, ya que por ejemplo Sublime Text, posee un paquete para instalar, y en el caso de Bootstrap 4 posee uno llamado: 

Bootstrap 4x Autocomplete

Este paquete nos ayudará muchisimo en saber las clase que existen en Bootstrap.

¿Cúal es la página web de Bootstrap para poder tener toda la información? 

https://getbootstrap.com/

En esta web podemos conocer todo el framework.

https://getbootstrap.com/

sábado, 26 de diciembre de 2020

Bando Municipal del Ayuntamiento de Almonte para las Navidades

 En la web  del Ayuntamiento de Almonte podemos encontrar el Bando Municipal publicado para estas navidades.





Por supuesto hay que resaltar las medidas previstas por la Junta de Andalucía por el Covid. El Bando nos dice exactamente:

1.- Las mascarillas son de uso obligatorio para todas las personas desde seis años en adelante que se encuentren en la vía pública (incluidas las terrazas), en los espacios al aire libre y en cualquier espacio cerrado de uso público o que se encuentre abierto al público (bares, cafeterías, restaurantes y establecimientos de ocio y esparcimiento), aunque pueda garantizarse la distancia interpersonal de seguridad de 1,5 metros.

2.- Así mismo, las mascarilla es de uso obligatorio en los medios de transporte públicos y privados complementarios de viajeros en vehículos de hasta nueve plazas si los ocupantes de los vehículos de turismo no conviven en el mismo domicilio. 
Del mismo modo, las personas que utilicen carruajes, caballos u otro equino como medio de transporte estarán de igual modo obligados al uso de mascarilla.

3.- La mascarilla deberá mantenerse puesta en todo momento en el que no sea incompatible con la actividad que se realiza, incluso sentados en la mesa, mientras no se consuma.

* Las terrazas son consideradas vía pública y, por lo tanto, la mascarilla será de uso obligatorio.
* Se recomienda el uso de la mascarilla en los espacios abiertos o cerrados privados (viviendas, casas de Hermandades, etc), cuando existan reuniones o una posible confluencia de personas no convivientes, aun cuando pueda garantizarse la distancia de seguridad.

4.- Se debe mantener una distancia social de dos metros siempre que sea posible.

5.- Se debe mantener una correcta ventilación de todos los espacios en los que se encuentren personas para evitar elevar la carga viral en el entorno. Esto es, mantener abiertas puertas y ventanas de todos los espacios cerrados mientras haya agrupación de personas, así como con posterioridad a esta.

También hay que resaltar el comienzo, por parte del ayuntamiento, para tomar medidas contra la clandestinidad del uso de las viviendas de la Aldea con fines comerciales como casas rurales, alojamientos turísticos u otros fines similares. El Bando nos dice exactamente:

Se hace especial mención a la prohibición de hacer uso de las Casas Hermandades diferente al fin contemplado en el PGOU. De igual modo, queda expresamente prohibido destinar viviendas particulares con fines comerciales como casas rurales, alojamientos turísticos u otros fines similares.

El resto de medidas consideradas por el Ayuntamiento de Almonte las tenéis en el propio Bando Municipal.


martes, 22 de diciembre de 2020

Séptima Parte Crud - Botón Actualizar

 Continuamos con la siguiente entrada al Blog con el objeto de insertar un botón para actualizar un registro con los datos introducidos en el formulario. Por supuesto, lo que haremos será copiar nuestro botón, y le insertaremos el icono que más nos guste para este botón.

Primero, tenemos que tener en cuenta que solamente podemos buscar por el id. Una vez que hemos encontrado el registro, podremos variar todos los datos menos el Id, y una vez modificado el apartado, le daremos al botón Actualizar.

Crearemos una macro llamada actualizar y se la asignaremos a nuestro botón.

Sub Actualizar()

With BBDD

'recuperando el codigo actualizar

'recuperamos las variables

    Dim Id As Long

    Dim Fecha As Date

    Dim Tipo, Musculo, Ejercicios, Repeticiones, Peso As String

    Dim Series As Integer

     'capturamos los datos obtenidos de la busqueda

    Id = Formulario.Cells(3, 3)

    Fecha = Formulario.Cells(5, 3)

    Tipo = Formulario.Cells(7, 3)

    Musculo = Formulario.Cells(9, 3)

    Ejercicios = Formulario.Cells(11, 3)

    Series = Formulario.Cells(13, 3)

    Repeticiones = Formulario.Cells(15, 3)

    Peso = Formulario.Cells(17, 3)

   'buscamos la linea

   Dim fila, filamax As Long

   'calculamos la ultima fila ingresada

   filamax = .UsedRange.Rows.Count 'nos da como resultado 8 la última fila con datos de la bbdd

    

   For fila = 2 To filamax

        If (.Cells(fila, 1) = Id) Then

            If Fecha = Empty Then

                MsgBox "El campo Fecha no puede estar vacio"

            ElseIf Tipo = "" Then

                MsgBox "El campo Tipo no puede estar vacio"

            ElseIf Musculo = "" Then

                MsgBox "El campo Músculo no puede estar vacio"

            ElseIf Ejercicios = "" Then

                MsgBox "El campo Ejercicios no puede estar vacio"

            ElseIf Series = 0 Then

                MsgBox "El campo series no puede estar vacio"

            ElseIf Repeticiones = "" Then

                MsgBox "El campo Repeticiones no puede estar vacio"

            Else

            .Cells(fila, 2) = Fecha

            .Cells(fila, 3) = UCase(MonthName(Month(Fecha), False))

            .Cells(fila, 4) = Year(Fecha)

            .Cells(fila, 5) = UCase(Tipo)

            .Cells(fila, 6) = UCase(Musculo)

            .Cells(fila, 7) = UCase(Ejercicios)

            .Cells(fila, 8) = Series

            .Cells(fila, 9) = Repeticiones

            .Cells(fila, 10) = Peso

            'mensaje todo correcto

            MsgBox "Registro Actualizado"

            'limpiar

            limpiar

            End If

        End If

   Next fila

 End With

End Sub

En principio comenzaremos crean una serie de variables que necesitaremos para capturar los datos que hemos obtenido en la búsqueda y cargarlos en las variables creadas.

Hemos vuelto a crear dos variables una fila y la otra filamax, que lo que hace el caso de filamax es calcularnos la última fila con datos, y la variable fila es para recorrer todas las filas.

En la parte siguiente creamos un ciclo donde nos encontrará en la hoja de la base de datos el valor que nos consta en la variable Id, para que posteriormente donde coincida el valor de Id nos actualice el resto de columnas con los datos modificados en las celdas correspondientes.

Todo esto viene de bbdd.Cells(fila, 1) = Id, donde coincida actualizará con los datos que existen en el formulario con las columnas siguientes.

Por supuesto, hemos creado una validación por si vaciamos algún campo por error, para que no nos actulice el registro.


lunes, 7 de diciembre de 2020

¿Qué es Power Query?

 Power Query es una de las herramienta más poderosas que posee Microsoft Excel.

Power Query es una tecnología de conexión de datos que permite detectar, conectar, combinar y refinar orígenes de datos para satisfacer sus necesidades de análisis. Las características de Power Query están disponibles en Excel y Power BI Desktop.

Con Power Query se pueden realizar conexiones con distintos tipos de archivos y por supuesto darle forma a todos los datos y posteriormente añadirlo a nuestra hoja de cálculo mediante tablas, tablas dinamicas, gráficos dinámicos o solamente conexiones para posteriormente realizar las acciones que queramos realizar.

¿Desde que versión Microsoft Excel la incluye?

Power Query está disponible como una descarga para Excel 2013 y 2010. 

Hay versiones las más modernas que no hace falta hacer nada para poder usar la herramienta, pero en los caso de versiones más antiguas tenemos que realizar una activación para poder utilizar dicho complemento.

Si no ves la solapa puedes activarla siguiendo los siguientes pasos:

  • Click en la pestaña “Archivo”,
  • En el menú, click en “Opciones”.
  • Click en “Complementos”.
  • Busca “Administrar” en la parte inferior del diálogo y selecciona “Complementos COM” en la lista desplegable.
  • Click en “Ir”
  • Selecciona “Microsoft Power Query para Excel” y click en “Aceptar”.

En la versión de Excel 2016 en cambio, Power Query está incluido dentro de la solapa “Datos”.

¿De qué tipo de archivos podemos obtener datos?

En principio debemos saber que podermos conectarnos con multitud de archivos como otros documentos excel, dede archivos de texto/CSV, archivos XML, desde Json, etc...

También desde numerosas base de datos, desde tablas de excel que estén en nuestro documento, de rango de celdas.

Una buena utilidad es conectarse a una carpeta, por ejemplo si en ella tenemos los datos del mes de enero de un año cualquiera, realizamos una conexión con dicho archivo y posteriormente introducimos otros archivos en la misma carpeta se nos actualizará las conexiones y obtendremos datos de distintos archivos.




Una vez que nos hemos conectado y hemos obtenido una consulta, podemos mejorar nuestros datos de manera ágil y sencilla…

Mediante su sistema de gestión por pasos podremos evitarnos las complejas fórmulas que realizamos en Excel para obtener un único dato y hacerlo poco a poco.

¿Qué podemos hacer para transformar nuestros datos en Power Query?

Podemos quitar columnas que no utilizamos
Cambiar el tipo de dato que no queremos
Obtener datos de otras tablas e insertarlos en nuestra consulta
Crear columnas calculadas condicionales
Crear fórmulas con los datos de nuestras columnas o con datos de otras tablas o variables.
Etc, etc, etc.
Con Power Query puedes analizar tus datos de manera muy sencilla. Puedes realizar agregaciones, uniones, sumas, contar… básicamente cualquier operación que haríamos con tablas dinámicas pero sin usarlas.

sábado, 5 de diciembre de 2020

Sexta Parte del Crud Botón Agregar

 Continuamos con la siguiente entrada al Blog con el objeto de insertar un botón para agregar un registro con los datos introducidos en el formulario. Por supuesto, lo que haremos será copiar nuestro botón, y le insertaremos el icono que más nos guste para este botón.

Realizaremos la macro Agregar  y posteriormente se la asignaremos a nuestro botón.

Esta es la macro Agregar

With BBDD

    'recuperando variable de los datos

    Dim Id As Long

    Dim Fecha As Date

    Dim Tipo, Musculo, Ejercicio, Repeticiones, Peso As String

    Dim Serie As Integer

        'lo escrito en los espacios lo almacenamos en variables

    Fecha = Formulario.Cells(5, 3)

    Tipo = Formulario.Cells(7, 3)

    Musculo = Formulario.Cells(9, 3)

    Ejercicio = Formulario.Cells(11, 3)

    Serie = Formulario.Cells(13, 3)

    Repeticiones = Formulario.Cells(15, 3)

    Peso = Formulario.Cells(17, 3)

    'calculamos la ultima fila para poder ingresar el registro

    Dim fila, filamax As Long

    filamax = .UsedRange.Rows.Count

    'obtenemos el codigo nuevo que es uno mas que el anterior

       Id = .Cells(filamax, 1) + 1

    'MsgBox Id

'grabar la fila nueva

    'vamos a realizar una validación

    If Fecha = Empty Then

        MsgBox "El campo Fecha no puede estar vacio"

    ElseIf Tipo = "" Then

        MsgBox "El campo Tipo no puede estar vacio"

    ElseIf Musculo = "" Then

        MsgBox "El campo Músculo no puede estar vacio"

    ElseIf Ejercicio = "" Then

        MsgBox "El campo Ejercicio no puede estar vacio"

    ElseIf Serie = 0 Then

        MsgBox "El campo Serie no puede estar vacio"

    ElseIf Repeticiones = "" Then

        MsgBox "El campo Repeticiones no puede estar vacio"

    Else

        .Cells(filamax + 1, 1) = Id

        .Cells(filamax + 1, 2) = Fecha

        .Cells(filamax + 1, 3) = UCase(MonthName(Month(Fecha), False))

        .Cells(filamax + 1, 4) = Year(Fecha)

        .Cells(filamax + 1, 5) = UCase(Tipo)

        .Cells(filamax + 1, 6) = UCase(Musculo)

        .Cells(filamax + 1, 7) = UCase(Ejercicio)

        .Cells(filamax + 1, 8) = Serie

        .Cells(filamax + 1, 9) = Repeticiones

        .Cells(filamax + 1, 10) = Peso

        MsgBox ("Registro Completado")

        'limpiamos los campos

        limpiar

 End If

End With

End Sub 


Macro limpiar:

Sub limpiar()

With Formulario

    .Cells(3, 3) = "" 'Codigo

    .Cells(5, 3) = "" 'fecha

    .Cells(7, 3) = "" 'Tipo

    .Cells(9, 3) = "" 'Musculo

    .Cells(11, 3) = "" 'Ejercicio

    .Cells(13, 3) = "" 'Series

    .Cells(15, 3) = "" 'Repeticiones

    .Cells(17, 3) = "" 'Peso

    'nos posicionamos

    .Cells(5, 3).Select 'fecha

End With

End Sub

En principio comenzaremos crean una serie de variables que necesitaremos para agregar nuestro  registro. Posteriormente le asignaremos el valor a cada variable de lo introducido en cada celda de nuestra hoja formulario.

La primera que hemos utilizado es el caso de :

Fecha = Formulario.Cells(5, 3).

Esto lo que hace es que la variable Fecha será igual a lo introducido en la hoja formulario, exactamente en nuestra celda de fila 5 y columna C. Y el resto igual.

En la segunda parte de la macro lo que hos hace es que la variable filamax nos calcula la ultima fila con datos y a partir de ahí le asignamos el valor a la variable Id el número siguiente al introducido en la última fila de la columna A.

Seguidamente lo que vamos a inscribir el nuevo registro, pero para ello realizaremos primero una validación, por si nos falta algún dato que no hayamos introducido. En el caso de que hayamos rellenado todos los campos nos introducirá el registro en la base de datos y nos mostrará un mensaje de Registro Completado, y posteriormente nos limpiará los registros, que esto lo tenemos en una nueva macro llamada limpiar.

La macro limpiar lo único que hace es que una vez realizado el registro nos limpia los campos de la hoja formulario y se posiciona en la celda de la fecha.


sábado, 28 de noviembre de 2020

Quinta parte del Crud. Código para el botón Buscar

 Continuamos con el código que debe tener el Botón Buscar, para ello crearemos una macro.

Antes de nada como no tenemos ningún módulo donde irán todas nuestras macros, lo primero que debemos ir a la pestaña Programador, y pulsaremos en el botón que se encuentra más a la izquierda, que pone Visual Basic, posteriormente en la ventana que nos sale pulsaremos con el botón derecho de nuestro ratón sobre nuestro archivo, e insertaremos un un módulo.

Ahora vamos a cambiarle el nombre y pondremos Mimodulo, cada uno puede ponerle el nombre que quiera.





Continuaremos en MiModulo e insertaremos una macro que llamaremos Buscar. Esto lo hacemos escribiendo en la parte de la derecha en blanco 

Sub Buscar(), al pulsar los paréntesis y posteriormente el botón Intro nos saldrá en la parte de abajo end sub, quedando de la forma de la próxima fotografía.



En la parte interior de la macro que hemos llamado Buscar introduciremos el siguiente código.







Código del Botón Buscar:

Sub Buscar()

With BBDD

    'recuperando codigo articulo

    'variable que almacena el codigo del articulo

    Dim Id As Long

      'obtenemos lo introducido el formulario principal, el codigo

    Id = Formulario.Cells(3, 3)

     'Vamos a buscar en la hoja inventario

    Dim fila, filamax As Long

    'calculamos la fila máxima con datos de la hoja2

    filamax = .UsedRange.Rows.Count

    'continuamos con un bucle

    For fila = 2 To filamax

      If (Application.WorksheetFunction.CountIf(.Columns(1), Id)) >= 1 Then

            'si encuentra el valor del codigo

            'funcion BuscarV

            Formulario.Cells(5, 3) = Application.WorksheetFunction.VLookup(Id, .Range("A:J"), 2, 0)

            Formulario.Cells(7, 3) = Application.WorksheetFunction.VLookup(Id, .Range("A:J"), 5, 0)

            Formulario.Cells(9, 3) = Application.WorksheetFunction.VLookup(Id, .Range("A:J"), 6, 0)

            Formulario.Cells(11, 3) = Application.WorksheetFunction.VLookup(Id, .Range("A:J"), 7, 0)

            Formulario.Cells(13, 3) = Application.WorksheetFunction.VLookup(Id, .Range("A:J"), 8, 0)

            Formulario.Cells(15, 3) = Application.WorksheetFunction.VLookup(Id, .Range("A:J"), 9, 0)

            Formulario.Cells(17, 3) = Application.WorksheetFunction.VLookup(Id, .Range("A:J"), 10, 0)

     Else

       MsgBox "El campo Código esta vacio o un número no encontrado, introduce el Código a buscar"

             Formulario.Cells(5, 3) = ""

             Formulario.Cells(7, 3) = ""

             Formulario.Cells(9, 3) = ""

             Formulario.Cells(11, 3) = ""

             Formulario.Cells(13, 3) = ""

             Formulario.Cells(15, 3) = ""

             Formulario.Cells(17, 3) = ""

            Exit Sub

      End If

    Next fila

    'posicionar en celda codigo

    Formulario.Cells(3, 3).Select

End With

End Sub

Una vez escrito el código, pasaremos asignarle dicha macro a nuestro botón. En la hoja hemos BBDD, hemos introducido unos registros que posteriormente eliminaremos, solamente será para comprobar que funciona la macro buscar. 

Asignaremos esta macro a nuestro botón pulsando con el ratón derecho en nuestro botón














Pulsaremos sobre Asignar Macro y nos saldrá la siguiente pantalla


Aquí elegiremos nuestra macro Buscar y pulsaremos en el botón Aceptar.











Este código lo que hace es que introducimos en la celda (3,3) de la hoja formulario, que es el Id del formulario, un número y nos obtiene mediante la función BuscarV el resto de datos introducidos en la misma fila.

Esta linea filamax = .UsedRange.Rows.Count nos calcula la última fila con datos, por eso el bucle empieza a buscar en la fila 2 hasta la última línea y si encuentra el datos nos lo muestra en el formulario. La búsqueda es por el Id.

En el caso de que no encuentre el Id nos dará un mensaje de que no has introducido un número o el mismo no existe, y limpiará todos los campos del formulario, menos el Id introducido.

En el caso de que os salda un número en la parte de la fecha, es por el motivo de que dicho campo debe tener el formato fecha.