jueves, 31 de octubre de 2019

Resolucion de problemas anteriores y algunos triggers


Este día resolví lo de XMLAntes y XMLDespues que podían ser vacíos y lo hice haciendo que los campos de XMLAntes y XMLDespues puedan contener nulos ya que no o no existe o simplemente no encontré ninguna forma de crear un XML que fuera vacío, por lo que los XML vacíos son en realidad nulos.

Además realice algunos triggers algunos trigger y pare allí ya que en esta semana estoy hasta la cebolla de trabajos.

A continuación un poco del código que se programó:

CREATE TRIGGER  [dbo].[COInsertados] ON [dbo].[CuentaObjeto]
   AFTER INSERT
AS
BEGIN
                -- SET NOCOUNT ON added to prevent extra result sets from
                -- interfering with SELECT statements.
                SET NOCOUNT ON;

                               --Variables para buscar id de otros elementos
    declare @TipoEvento nvarchar(100) = N'Insertar CO';
                declare @Numero_de_Cuenta nvarchar(50);                                                  --Numero cuenta para buscar el idUsuario
                              
                               --Elementos para el nuevo elemento
                declare @idUsuario int;    --El id del usuario
                declare @Fecha date = GETDATE();
                declare @idTipoEvento int;   --El id del tipo evento
                declare @IP int = 0;
                declare @XMLAntes xml;
                declare @XMLDespues xml;

                Select @Numero_de_Cuenta = NewCO.Numero_Cuenta,                        --Determina NumeroCuenta y idTipoEvento
                                               @idTipoEvento = TE.id                
                from inserted NewCO, TipoEvento TE
                where TE.nombre = @TipoEvento;

                Select @idUsuario = CA.idCliente                           --Id del usuario
                from CuentaAhorro CA
                where CA.Numero_Cuenta = @Numero_de_Cuenta; 

               
                declare @TablaXml TABLE (  --Tabla variable para sacar XML del evento
                               id int NOT NULL,
                               idCuenta int NOT NULL,
                               Saldo money NOT NULL,
                               Fecha_Inicio date NOT NULL,
                               Fecha_Final date NOT NULL,
                               Monto_Ahorro money NOT NULL,
                               Numero_Cuenta nvarchar(50) NOT NULL
                )

                insert into @TablaXml  --Insercion del Evento en tabla variable
                select newCo.id, newCo.idCuenta, newCo.Saldo, newCo.Fecha_Inicio,
                                               newCo.Fecha_Final, newCo.Monto_Ahorro, newCo.Numero_Cuenta
                from inserted newCo

                set @XMLDespues = (Select * from @TablaXml as TablaXml for xml Auto, ELEMENTS XSINIL);  --XML del Evento

                insert into Evento (idTipoEvento, idUser, _IP, Fecha, XMLAntes, XMLDespues)  --Insercion final al evento
                values(@idTipoEvento, @idUsuario, @IP, @Fecha, @XMLAntes, @XMLDespues);

END

Este día solo invertí el proyecto como 1,5 horas.
Tarde tanto porque al principio estaba haciendo malísimo la tabla que se usa para crear el XML

No hay comentarios:

Publicar un comentario