viernes, 5 de abril de 2024

Entrada 2 - 05/04/24

Hora Inicio: 1:00 p.m

Hora Fin: 3:00 p.m

Horas Trabajadas: 3 horas

Modalidad: Virtual


En el proyecto de Visual Studio se creó una prueba para poder ver el tamaño de las imágenes en los botones de Update, Delete y Consulta.





Una vez hecha esta prueba se decidió cambiar las imágenes a color blanco para que se vieran más e iniciar con la creación del SP para cargar los datos del XML. Teníamos una duda al respecto por lo cual se le realizo una consulta al profesor sobre el SP para cargar el XML

Una vez resuelta esta duda se creó un SP básico el cual es el siguiente:


CREATE PROCEDURE [dbo].[CargarXML]

    -- Parametro de entrada

    @inRutaXML NVARCHAR(500)

AS

DECLARE @Datos xml/*Declaramos la variable Datos como un tipo XML*/

 -- Para cargar el archivo con una variable, CHAR(39) son comillas simples

DECLARE @Comando NVARCHAR(500)= 'SELECT @Datos = D FROM OPENROWSET (BULK '  + CHAR(39) + @inRutaXML + CHAR(39) + ', SINGLE_BLOB) AS Datos(D)' -- comando que va a ejecutar el sql dinamico

DECLARE @Parametros NVARCHAR(500)

SET @Parametros = N'@Datos xml OUTPUT' --parametros del sql dinamico

EXECUTE sp_executesql @Comando, @Parametros, @Datos OUTPUT -- ejecutamos el comando que hicimos dinamicamente

DECLARE @hdoc int /*Creamos hdoc que va a ser un identificador*/

EXEC sp_xml_preparedocument @hdoc OUTPUT, @Datos/*Toma el identificador y a la variable con el documento y las asocia*/

INSERT INTO [dbo].[Puesto]

           ([Nombre] /*Inserta en la tabla Puestos*/

   , [SalarioxHora])

SELECT *

FROM OPENXML (@hdoc, '/Datos/Puestos/Puesto' , 1)/*Lee los contenidos del XML y para eso necesita un identificador,el 

PATH del nodo y el 1 que sirve para retornar solo atributos*/

WITH(/*Dentro del WITH se pone el nombre y el tipo de los atributos a retornar*/

Nombre VARCHAR(64)

, SalarioXHora MONEY

    )

INSERT INTO [dbo].[TipoEvento]

([Id]

, [Nombre])/*Inserta en la tabla Tipo Evento*/

SELECT *

FROM OPENXML (@hdoc, '/Datos/TipoEventos/TipoEvento' , 1)/*Lee los contenidos del XML y para eso necesita un identificador,el PATH del nodo y el 1 que sirve 

para retornar solo atributos*/

WITH(/*Dentro del WITH se pone el nombre y el tipo de los atributos a retornar*/

Nombre VARCHAR(64)

    )

INSERT INTO [dbo].[TipoMovimiento]

           ([Id]

   , [Nombre]

   , [TipoAccion])

SELECT *

FROM OPENXML (@hdoc, '/Datos/TiposMovimientos/TiposMovimiento' , 1)/*Lee los contenidos del XML y para eso necesita un identificador,el PATH del nodo y el 

1 que sirve para retornar solo atributos*/

WITH(/*Dentro del WITH se pone el nombre y el tipo de los atributos a retornar*/

Nombre VARCHAR(64)

, TipoAccion bit

    )

DELETE FROM [dbo].[Empleado]/*Limpia la tabla empleados*/

DBCC CHECKIDENT ('id', RESEED, 1)/*Reinicia el identify*/

INSERT INTO [dbo].[Empleado]

           ([IdPuesto]

           , [ValorDocumentoIdentidad]

           , [Nombre]

           , [FechaContratacion]

           , [SaldoVacaciones]

           , [EsActivo])/*Inserta en la tabla Empleados*/

SELECT *

FROM OPENXML (@hdoc, '/Datos/Empleados/Empleado' , 1)/*Lee los contenidos del XML y para eso necesita un identificador,el PATH del nodo y el 1 que sirve

para retornar solo atributos*/

WITH(/*Dentro del WITH se pone el nombre y el tipo de los atributos a retornar*/

    Puesto INT

, ValorDocumentoIdentidad INT

, Nombre VARCHAR(64)

, FechaContratacion DATE

    )

INSERT INTO [dbo].[Usuario]

           ([id]

           , [Username]

           , [Password])

SELECT *

FROM OPENXML (@hdoc, '/Datos/Usuarios/usuario' , 1)/*Lee los contenidos del XML y para eso necesita un identificador,el PATH del nodo y el 1 que sirve

para retornar solo atributos*/

WITH(/*Dentro del WITH se pone el nombre y el tipo de los atributos a retornar*/

    Id INT

, Nombre VARCHAR(64)

, Pass NVARCHAR(16)

    )

INSERT INTO [dbo].[Movimiento]

           ([IdEmpleado]

   , [IdTipoMovimiento]

           , [Fecha]

   , [Monto]

   , [IdPostByUser]

   , [PostInIP]

   , [PostTime])

SELECT *

FROM OPENXML (@hdoc, '/Datos/Movimientos/movimiento' , 1)/*Lee los contenidos del XML y para eso necesita un identificador,el PATH del nodo y el 1 que sirve

para retornar solo atributos*/

WITH(/*Dentro del WITH se pone el nombre y el tipo de los atributos a retornar*/

    ValorDocId INT

, IdTipoMovimiento INT

, Fecha DATE

, Monto INT

, PostByUser INT

, PostInIP VARCHAR(64)

, PostTime DATETIME

    )

INSERT INTO [dbo].[Error]

           ([Codigo]

   , [Descripcion])

SELECT *

FROM OPENXML (@hdoc, '/Datos/Error/error' , 1)/*Lee los contenidos del XML y para eso necesita un identificador,el PATH del nodo y el 1 que sirve

para retornar solo atributos*/

WITH(/*Dentro del WITH se pone el nombre y el tipo de los atributos a retornar*/

    Codigo INT

, Descripcion VARCHAR(2000)

    )

EXEC sp_xml_removedocument @hdoc/*Remueve el documento XML de la memoria*/



No hay comentarios.:

Publicar un comentario

Entrada 8 - 20/04/24

Hora Inicio: 8 p.m Hora Fin: 10 p.m Horas Trabajadas: 2 horas Modalidad: Virtual Nos reunimos para terminar los últimos detalles del proyect...