Entradas

Mostrando las entradas de abril, 2024

Entrada #12 - 22/4/2024 - 9:00am a 4:00pm

Imagen
 Se realizó la capa de presentación, utilizando como base la capa del proyecto anterior. En general no hubieron problemas graves, solamente se realizaron modificaciones en la capa lógica para que funcionara con la de presentación. Aprendimos a utilizar rutas dentro de los URL. Se adjuntan imágenes del resultado de la capa de presentación: Login. Página principal. Ventana modificado. Ventanas movimientos. Fuentes: https://angular.io/guide/router-tutorial (Rutas URL)

Entrada #11 - 21/4/2024 - 12:00md a 3:08pm

Imagen
Se finalizó la capa lógica y se probaron las funciones, en general todo funcionó correctamente. Se tomaron como base las funciones que se realizaron ayer. Lo que agregamos hoy fue: - Login de usuario. - Modificación empleado. - Borrado empleado. - Inserción de movimientos. - Listado de movimientos. Pruebas: Ejecución del login. Ejecución de inserción de movimiento. Ejecución de listado movimientos. Ejecución de la modificación de empleado y prueba de que funcionó. Ejecución del borrado de empleado y prueba de que funcionó. Errores: Hubo un error con el SP de inserción de movimientos (Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.). El error se solucionó agregando un "EsActivo = 1" cuando se pedía el monto actual. Fuentes: https://stackoverflow.com/questions/16053907/subquery-returned-more-than-1-value-this-is-not-permitted-when-the-subquery-foll (Sol. Error).

Entrada #10 - 20/4/2024 - 6:00pm a 9:00pm

Imagen
Se realizó la capa lógica del proyecto, se utilizó como base la del proyecto anterior, por lo que esta fue más rápida y fácil de hacer, solo dio algunos problemas el mapeo desde el API test, donde el JSON llevaba los nombres de los atributos en mayúsculas y en realidad era en minúsculas, fuera de eso todo fue sobre ruedas. Lo que se realizó fue: Insertar y Listar con filtros. Los que quedan se realizan de manera sencilla, ya que se toman como base los que tenemos. Se subieron los cambios a github, nombre del commit es: "Commit inicial" Pruebas: Insertar. Listado con filtro de ID. Listado con filtro de nombre. Fuentes:  Proyecto anterior.  https://docs.oracle.com/javase/8/docs/api/java/sql/Timestamp.html  https://docs.spring.io/spring-framework/reference/web/webmvc/mvc-controller/ann-methods/requestparam.html

Entrada #9 - 19/4/2024 - 3:35pm a 4:15pm

 Se agregó el control de los eventos a unos SP donde habíamos olvidado ponerlo, aparte, se mapea el ID del usuario de acuerdo a su nombre de usuario, en algunos SP olvidamos ponerlo. También se agregó un SP para el login de los usuarios. En general, no hubieron problemas en esta sesión.

Entrada #8 - 15/4/2024 - 5:46pm a 9:05pm

 Terminamos los SP de filtrado/listado e inserción de movimientos. Realizamos pruebas y todo funcionó correctamente. Tomamos los anteriores SP como "Plantillas" por lo que el código y estructura es similar. Realizamos unas modificaciones en el de insertar empleado, se mapeo la FK con INNER JOIN. *Tomamos un descanso para cenar de 8 a 8:50pm Tuvimos un problema con la inserción de movimientos, ya que la FK que tenía de identidad empleado no correspondía con la PK de empleado, la cual es el Id que es clustered, por lo que tuvimos que quitar la relación para que funcionara, ya que de ninguna manera funcionaba sin alterar la especificación. Pero en el resto todo fue perfecto. En general, solo queda comentar y revisar que todo este de acuerdo a lo requerido. La capa lógica la realizaremos como el proyecto anterior, en Spring Boot con Java y el IDE IntelliJ, utilizando un Rest API. Ya con esto la conexión con la pagina web se hace de manera sencilla. Fuentes: https://learn.microsof...

Entrada #7 - 14/4/2024 - 8:40pm a 9:27pm

Terminamos de hacer el CRUD de empleados, solo quedaría el insertar movimientos y los SP para listar. En general no tuvimos problema, ya que tomamos como base el SP de Insertar y lo modificamos. Por lo que fue algo sencillo y rápido de hacer. Mañana revisaremos bien los SP para identificar que puede faltar y una vez hecho esto continuamos con la capa lógica, la cual tomaremos como base el proyecto anterior, por lo que solo debemos agregar un par de cosas, una vez hecho esto iniciamos con la pagina web, la cual, con Angular y Bootstrap facilita mucho la creación. Fuentes: https://learn.microsoft.com/es-es/sql/t-sql/queries/update-transact-sql?view=sql-server-ver16

Entrada #6 - 13/4/2024 - 3:00pm a 6:10pm

Creamos 2 tablas temporales, un para empleados y otra para movimientos. Esto facilita el mapeo de la o las FK cuando se cargan los XML, ya que, guardamos los valores tal y como vienen en el XML y luego usamos un WHILE para iterar sobre la tabla y pasar cada elemento al SP que le corresponda para mapearlo. En general no hubieron problemas al realizarlas, ya que es prácticamente el mismo procedimiento nada mas agregando los SP para mapear FK e insertar. Como se crea una tabla temporal: CREATE TABLE #TempEmpleados ( Id int IDENTITY(1,1) PRIMARY KEY NOT NULL, NombrePuesto varchar(64) NULL, ValorDocumentoIdentidad int NULL, Nombre varchar(64) NULL, FechaContratacion datetime NULL, SaldoVacaciones smallint NULL, EsActivo bit NULL ) Para acceder a esta se hace como cualquier otra dentro de la BD. Fuentes: Clase 14 del curso. https://learn.microsoft.com/en-us/sql/relational-databases/tables/temporal-tables?view=sql-server-ver16

Entrada #5 - 12/4/2024 - 6:40pm a 9:00pm

Imagen
Intentamos realizar la carga de empleados desde el XML usando un SP, el problema era que solo nos cargaba el último. Recordamos que en clase se nos recomendó usar tablas temporales cuando cargabamos las tablas que necesitaban mapear FKs, por lo que nos quedó implementarlo el día de mañana. Realizamos el SP para cargar los empleados, el cuál se basó en el insertar del proyecto anterior, agregando mapeos de las FK, funcionó correctamente con un par de pruebas: Verificamos nuestra lista de Puestos y los valores del Id corresponden también la fecha de contratación.

Entrada #4 - 10/4/2024 - 4:00pm a 5:35pm

Realizamos la carga a algunas clases desde el XML, el código para cargar es: BEGIN DECLARE @XML AS XML SELECT @XML = BulkColumn  FROM OPENROWSET(BULK 'D:\S3\Datos\Datos.xml', SINGLE_BLOB) AS x; -- Insertar los datos del archivo XML en las tablas INSERT INTO dbo.Puesto([Nombre] , [SalarioxHora]) SELECT      Elemento.value('@Nombre' , 'VARCHAR(64)') AS Nombre,      Elemento.value('@SalarioxHora', 'money') AS SalarioxHora FROM @XML.nodes('/Datos/Puestos/Puesto')  AS T(Elemento) -- INSERT INTO dbo.TipoEvento([Id],[Nombre]) SELECT      Elemento.value('@Id' , 'int') AS Id, Elemento.value('@Nombre' , 'VARCHAR(64)') AS Nombre FROM @XML.nodes('/Datos/TiposEvento/TipoEvento')  AS T(Elemento) -- INSERT INTO dbo.TipoMovimiento([Id],[Nombre], [TipoAccion]) SELECT      Elemento.value('@Id' , 'int') AS Id, Elemento.value('@Nombre' , 'VARCHAR(64)') AS N...

Entrada #3 - 9/4/2024 - 7:40pm a 9:15pm

Imagen
En esta sesión creamos las tablas, el diagrama quedó así: También, se llevo a cabo la carga de el archivo XML en RDS, ya lo habíamos probado en una local pero en RDS es diferente y nos dio problemas, porque, por obvias razones este no tiene acceso a nuestro equipo local. Utilizando Amazon S3, que aprendimos a utilizar en la prueba de conceptos, cargamos un XML de prueba, y mediante permisos IAM y roles en AWS, creamos lo necesario para conectar la BD en RDS con el S3, esta lo que hace es descargarlo y guardarlo en su disco local, de esta manera accedemos sin problemas. El código es el siguiente: Nos dio problemas ya que no podíamos usar esta instrucción, se arregló borrando y creando de nuevo la política. Luego cargamos el XML de la memoria local: Solo queda realizar un SP para la carga total del XML. Fuentes utilizadas: https://www.sqlshack.com/integrating-aws-s3-buckets-with-aws-rds-sql-server/ https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-s3-integration.html https://...

Entrada #2 - 3/4/2024 - 8:56pm a 9:56pm

Imagen
Investigamos como tomar el XML de los datos e insertarlos en una tabla, para esto utilizamos una base de datos local para evitar gastar tiempo en la que tenemos en AWS, probamos con la tabla "Puestos", la creamos y buscamos como tomar los XML  e insertarlos. Fuente: https://learn.microsoft.com/en-us/sql/relational-databases/import-export/examples-of-bulk-import-and-export-of-xml-documents-sql-server?view=sql-server-ver16 El código "base" nos quedó así: Esta es la tabla actual: