Entrada 2 (Scripts)

# Bitácora de Sesión

Fecha: 15/04/2026

Inicio: [5:00] | Fin: [6:40] || Total: [1 hora y 40]

Presentes: Matías Benavides Sandoval =

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

¿QUÉ HICIMOS HOY?

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Se revisó la especificación del proyecto y el XML de carga de datos.

Se crearon y organizaron scripts de carga inicial para Puesto, TipoEvento, TipoMovimiento, Usuario, Empleado y Movimiento.

Se cargó la tabla Error con sus códigos y descripciones.

Se invesitgo el como tenia qeu hacer los scripts cuando era hora de conectar dos tablas y traer cosas de una tabla a otra

Se validó el orden correcto de ejecución de los scripts en SSMS. (Por errores que se dieron mas tarde)

 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

PROBLEMAS ENCONTRADOS Y CÓMO SE RESOLVIERON

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Al ejecutar CargarEmpleado.sql apareció 0 filas afectadas porque no se había cargado antes la tabla Puesto.

"(0 filas afectadas)"

Al ejecutar CargarMovimiento.sql ocurrió el mismo problema porque no se había cargado antes la tabla TipoMovimiento.

Se resolvió confirmando el orden correcto de carga: primero catálogos, luego usuarios, después empleados y al final movimientos.

 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

DUDAS Y DIVERGENCIAS DE CRITERIO

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Se aclaró que la tabla Error es el catálogo de errores funcionales y DBError es para errores técnicos de base de datos.

Se aclaró que el XML no necesariamente se lee en tiempo de ejecución, sino que sirve como base para generar scripts de carga.

La diferencia entre VALUES y SELECT cuando se necesitan ids de otras tablas.

Se tenia que hacer un Parser? Honestamente no se, ya le pregunte el profe

 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

AVANCE DEL CÓDIGO

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Quedaron listos los scripts de carga para Error, Puesto, TipoEvento, TipoMovimiento, Usuario, Empleado y Movimiento.

Como ejemplo tenemos:

USE VacacionesDB;
GO

INSERT dbo.Movimiento (idEmpleado, idTipoMovimiento, Fecha, Monto, NuevoSaldo, idPostByUser, PostInIP, PostTime)
SELECT e.id, t.id, '2024-01-18', 2, 0.00, u.id, '42.142.119.153', '2024-01-18 18:47:14'
FROM Empleado e, TipoMovimiento t, Usuario u
WHERE e.ValorDocumentoIdentidad = '7517662' AND t.Nombre = 'Venta de vacaciones' AND u.Username = 'hardingmicheal';

INSERT dbo.Movimiento (idEmpleado, idTipoMovimiento, Fecha, Monto, NuevoSaldo, idPostByUser, PostInIP, PostTime)
SELECT e.id, t.id, '2024-10-31', 1, 0.00, u.id, '156.92.82.57', '2024-10-31 12:43:18'
FROM Empleado e, TipoMovimiento t, Usuario u
WHERE e.ValorDocumentoIdentidad = '6993943' AND t.Nombre = 'Bono vacacional' AND u.Username = 'mgarrison';

INSERT dbo.Movimiento (idEmpleado, idTipoMovimiento, Fecha, Monto, NuevoSaldo, idPostByUser, PostInIP, PostTime)
SELECT e.id, t.id, '2024-11-22', 7, 0.00, u.id, '218.213.110.232', '2024-11-22 00:23:53'
FROM Empleado e, TipoMovimiento t, Usuario u
WHERE e.ValorDocumentoIdentidad = '8326328' AND t.Nombre = 'Venta de vacaciones' AND u.Username = 'andersondeborah';

INSERT dbo.Movimiento (idEmpleado, idTipoMovimiento, Fecha, Monto, NuevoSaldo, idPostByUser, PostInIP, PostTime)
SELECT e.id, t.id, '2024-07-03', 3, 0.00, u.id, '143.42.131.166', '2024-07-03 17:07:39'
FROM Empleado e, TipoMovimiento t, Usuario u
WHERE e.ValorDocumentoIdentidad = '4510358' AND t.Nombre = 'Reversion de Credito' AND u.Username = 'hardingmicheal';

INSERT dbo.Movimiento (idEmpleado, idTipoMovimiento, Fecha, Monto, NuevoSaldo, idPostByUser, PostInIP, PostTime)
SELECT e.id, t.id, '2024-12-07', 8, 0.00, u.id, '155.44.100.105', '2024-12-07 15:44:30'
FROM Empleado e, TipoMovimiento t, Usuario u
WHERE e.ValorDocumentoIdentidad = '8403646' AND t.Nombre = 'Reversion de Credito' AND u.Username = 'zkelly';

INSERT dbo.Movimiento (idEmpleado, idTipoMovimiento, Fecha, Monto, NuevoSaldo, idPostByUser, PostInIP, PostTime)
SELECT e.id, t.id, '2024-11-26', 10, 0.00, u.id, '141.163.255.56', '2024-11-26 09:33:41'
FROM Empleado e, TipoMovimiento t, Usuario u
WHERE e.ValorDocumentoIdentidad = '8326328' AND t.Nombre = 'Venta de vacaciones' AND u.Username = 'hardingmicheal';

INSERT dbo.Movimiento (idEmpleado, idTipoMovimiento, Fecha, Monto, NuevoSaldo, idPostByUser, PostInIP, PostTime)
SELECT e.id, t.id, '2024-11-20', 6, 0.00, u.id, '4.176.52.1', '2024-11-20 23:31:41'
FROM Empleado e, TipoMovimiento t, Usuario u
WHERE e.ValorDocumentoIdentidad = '6993943' AND t.Nombre = 'Disfrute de vacaciones' AND u.Username = 'hardingmicheal';

INSERT dbo.Movimiento (idEmpleado, idTipoMovimiento, Fecha, Monto, NuevoSaldo, idPostByUser, PostInIP, PostTime)
SELECT e.id, t.id, '2024-10-30', 10, 0.00, u.id, '220.164.108.231', '2024-10-30 03:55:57'
FROM Empleado e, TipoMovimiento t, Usuario u
WHERE e.ValorDocumentoIdentidad = '2918773' AND t.Nombre = 'Disfrute de vacaciones' AND u.Username = 'zkelly';

INSERT dbo.Movimiento (idEmpleado, idTipoMovimiento, Fecha, Monto, NuevoSaldo, idPostByUser, PostInIP, PostTime)
SELECT e.id, t.id, '2024-06-13', 2, 0.00, u.id, '135.223.57.22', '2024-06-13 13:28:39'
FROM Empleado e, TipoMovimiento t, Usuario u
WHERE e.ValorDocumentoIdentidad = '2161775' AND t.Nombre = 'Reversion Debito' AND u.Username = 'hardingmicheal';

INSERT dbo.Movimiento (idEmpleado, idTipoMovimiento, Fecha, Monto, NuevoSaldo, idPostByUser, PostInIP, PostTime)
SELECT e.id, t.id, '2024-01-01', 6, 0.00, u.id, '150.250.94.62', '2024-01-01 05:17:10'
FROM Empleado e, TipoMovimiento t, Usuario u
WHERE e.ValorDocumentoIdentidad = '8403646' AND t.Nombre = 'Bono vacacional' AND u.Username = 'zkelly';

INSERT dbo.Movimiento (idEmpleado, idTipoMovimiento, Fecha, Monto, NuevoSaldo, idPostByUser, PostInIP, PostTime)
SELECT e.id, t.id, '2024-07-12', 6, 0.00, u.id, '218.191.123.15', '2024-07-12 09:10:16'
FROM Empleado e, TipoMovimiento t, Usuario u
WHERE e.ValorDocumentoIdentidad = '2918773' AND t.Nombre = 'Venta de vacaciones' AND u.Username = 'hardingmicheal';

INSERT dbo.Movimiento (idEmpleado, idTipoMovimiento, Fecha, Monto, NuevoSaldo, idPostByUser, PostInIP, PostTime)
SELECT e.id, t.id, '2024-12-27', 14, 0.00, u.id, '136.103.23.170', '2024-12-27 12:59:03'
FROM Empleado e, TipoMovimiento t, Usuario u
WHERE e.ValorDocumentoIdentidad = '5095109' AND t.Nombre = 'Reversion de Credito' AND u.Username = 'hardingmicheal';

INSERT dbo.Movimiento (idEmpleado, idTipoMovimiento, Fecha, Monto, NuevoSaldo, idPostByUser, PostInIP, PostTime)
SELECT e.id, t.id, '2024-04-08', 1, 0.00, u.id, '158.48.100.86', '2024-04-08 01:24:38'
FROM Empleado e, TipoMovimiento t, Usuario u
WHERE e.ValorDocumentoIdentidad = '6993943' AND t.Nombre = 'Venta de vacaciones' AND u.Username = 'jgonzalez';

INSERT dbo.Movimiento (idEmpleado, idTipoMovimiento, Fecha, Monto, NuevoSaldo, idPostByUser, PostInIP, PostTime)
SELECT e.id, t.id, '2024-08-25', 8, 0.00, u.id, '204.0.219.231', '2024-08-25 16:24:07'
FROM Empleado e, TipoMovimiento t, Usuario u
WHERE e.ValorDocumentoIdentidad = '8403646' AND t.Nombre = 'Bono vacacional' AND u.Username = 'jgonzalez';

INSERT dbo.Movimiento (idEmpleado, idTipoMovimiento, Fecha, Monto, NuevoSaldo, idPostByUser, PostInIP, PostTime)
SELECT e.id, t.id, '2024-03-07', 7, 0.00, u.id, '208.0.4.33', '2024-03-07 08:19:28'
FROM Empleado e, TipoMovimiento t, Usuario u
WHERE e.ValorDocumentoIdentidad = '5095109' AND t.Nombre = 'Bono vacacional' AND u.Username = 'andersondeborah';

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

MORALEJAS / BUENAS PRÁCTICAS

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Primero deben cargarse los catálogos que otros scripts dependen de ellos.

Cuando un INSERT usa datos de otra tabla, conviene validar el id con SELECT en lugar de escribirlo a mano.

Antes de ampliar datos, es mejor probar la funcionalidad con una carga mínima y controlada.

 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

PRÓXIMA SESIÓN: ¿QUÉ SIGUE?

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Seguir con la parte pendiente de procedimientos almacenados y validaciones de negocio.

Después revisar la actualización del saldo de vacaciones y la lógica de bitácora y errores.

ver que contesta el profe, y si es que toca, pues hacer un parser para el XML

 


Comentarios

Entradas más populares de este blog

Entrada 16 (Controlador de movimientos)

Entrada 20 (Lógica de insertarMovimientos, conectarla y probarla)

Entrada 21 (Análisis de resultados)