Files
Samuele E. Locatelli 2b1479f315 spostamento update SQL
2018-05-03 15:06:47 +02:00

258 lines
6.3 KiB
Transact-SQL

set xact_abort on
go
begin transaction
go
drop table TempiCicloRilevati
go
create table TempiCicloRilevati(
IdxMacchina nvarchar(50) not null,
CodArticolo nvarchar(50) not null,
DataOraRif datetime not null,
TCMedio decimal(18,8) not null constraint DF_TempiCicloRilevati_TempoMedio default (1),
PzProd int not null constraint DF_TempiCicloRilevati_PzProd default (1),
constraint PK_TempiCicloRilevati primary key(IdxMacchina,CodArticolo,DataOraRif)
)
go
alter table TempiCicloRilevati add
constraint FK_TempiCicloRilevati_Macchine foreign key(IdxMacchina) references Macchine(IdxMacchina) on update cascade
go
drop table TempiCicloTeorici
go
create table TempiCicloTeorici(
IdxMacchina nvarchar(50) not null,
CodArticolo nvarchar(50) not null,
DataOraFrom datetime not null,
DataOraTo datetime,
TCAssegnato decimal(18,8) not null constraint DF_TempiCicloTeorici_TempoMedio default (1),
constraint PK_TempiCicloTeorici primary key(IdxMacchina,CodArticolo,DataOraFrom)
)
go
alter table TempiCicloTeorici add
constraint FK_TempiCicloTeorici_Macchine foreign key(IdxMacchina) references Macchine(IdxMacchina) on update cascade
go
commit
go
set xact_abort on
go
begin transaction
go
INSERT INTO dbo.AnagraficaEventi
VALUES (20, N'Contapezzi')
go
commit transaction
go
set xact_abort on
go
begin transaction
go
alter table Kanban add
CodArticolo nvarchar(50)
go
set ANSI_NULLS on
go
commit
go
set xact_abort on
go
begin transaction
go
alter table AnagraficaEventi add
TabAzione nvarchar(50) constraint DF_AnagraficaEventi_TabAzione default (''),
Azione nvarchar(50) constraint DF_AnagraficaEventi_Azione default ('')
go
update AnagraficaEventi set TabAzione='',Azione=''
go
set ANSI_NULLS on
go
create TRIGGER trg_doActions
ON EventList
FOR INSERT
AS
/* dichiarazione variabili */
DECLARE @IdxTipo INT
DECLARE @TabAzione NVARCHAR(50)
DECLARE @Azione NVARCHAR(50)
DECLARE @IdxMacchina NVARCHAR(50)
DECLARE @MatricolaKanban NVARCHAR(50)
DECLARE @CodArticolo NVARCHAR(50)
DECLARE @TCMedio DECIMAL(18,8)
DECLARE @DataOra DATETIME
DECLARE @DataOraPrec DATETIME
/* recupero valori dell'INSERT */
SET @IdxTipo = ( SELECT i.IdxTipo FROM inserted i )
SET @IdxMacchina = ( SELECT i.IdxMacchina FROM inserted i )
/* recupero altri valori */
SET @TabAzione = ( SELECT ISNULL(TabAzione,'') FROM AnagraficaEventi WHERE IdxTipo = @IdxTipo )
SET @Azione = ( SELECT ISNULL(Azione,'') FROM AnagraficaEventi WHERE IdxTipo = @IdxTipo )
/* controllo se l'evento richieda azioni successive */
IF(@TabAzione <> '' AND @Azione <> '')
BEGIN
/* azioni richieste: seconda dei casi eseguo... */
IF(@TabAzione = 'TempiCicloRilevati' AND @Azione = 'Insert')
BEGIN
/* calcolo valori */
SET @DataOra = ( SELECT i.InizioStato FROM inserted i )
SET @MatricolaKanban = ( SELECT i.MatricolaKanban FROM inserted i )
SET @CodArticolo = ( SELECT CodArticolo FROM Kanban WHERE MatricolaKanban = @MatricolaKanban )
/* calcolo tempo tra gli ultimi 2 eventi "contapezzi" */
SET @DataOraPrec = ( SELECT ISNULL((SELECT Top 1 InizioStato FROM EventList WHERE IdxMacchina = @IdxMacchina AND IdxTipo = @IdxTipo AND InizioStato < @DataOra ORDER BY InizioStato DESC), @DataOra ) )
/* è in millisecondi, divido per 60'000.00 x avere minuti centesimali*/
SET @TCMedio = ( SELECT (DATEDIFF(ms, @DataOraPrec, @DataOra) / 60000.00 ) )
/* inserisco riga di tempo ciclo */
INSERT INTO TempiCicloRilevati
VALUES(@IdxMacchina, @CodArticolo, @DataOra, @TCMedio, 1)
END
END
go
commit
go
set xact_abort on
go
begin transaction
go
UPDATE dbo.AnagraficaEventi SET
TabAzione=N'TempiCicloRilevati', Azione=N'Insert'
WHERE IdxTipo=20
go
commit transaction
go
set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
alter TRIGGER trg_doActions
ON EventList
FOR INSERT
AS
/* dichiarazione variabili */
DECLARE @IdxTipo INT
DECLARE @TabAzione NVARCHAR(50)
DECLARE @Azione NVARCHAR(50)
DECLARE @IdxMacchina NVARCHAR(50)
DECLARE @MatricolaKanban NVARCHAR(50)
DECLARE @CodArticolo NVARCHAR(50)
DECLARE @TCMedio DECIMAL(18,8)
DECLARE @DataOra DATETIME
DECLARE @DataOraPrec DATETIME
DECLARE @NumPz INT
/* recupero valori dell'INSERT */
SET @IdxTipo = ( SELECT i.IdxTipo FROM inserted i )
SET @IdxMacchina = ( SELECT i.IdxMacchina FROM inserted i )
/* recupero altri valori */
SET @TabAzione = ( SELECT ISNULL(TabAzione,'') FROM AnagraficaEventi WHERE IdxTipo = @IdxTipo )
SET @Azione = ( SELECT ISNULL(Azione,'') FROM AnagraficaEventi WHERE IdxTipo = @IdxTipo )
/* controllo se l'evento richieda azioni successive */
IF(@TabAzione <> '' AND @Azione <> '')
BEGIN
/* azioni richieste: seconda dei casi eseguo... */
IF(@TabAzione = 'TempiCicloRilevati' AND @Azione = 'Insert')
BEGIN
/* calcolo valori */
SET @DataOra = ( SELECT i.InizioStato FROM inserted i )
SET @MatricolaKanban = ( SELECT i.MatricolaKanban FROM inserted i )
SET @NumPz = ( SELECT CASE WHEN (ISNUMERIC(value)=1) THEN value ELSE 1 END FROM inserted i )
SET @CodArticolo = ( SELECT CodArticolo FROM Kanban WHERE MatricolaKanban = @MatricolaKanban )
/* calcolo tempo tra gli ultimi 2 eventi "contapezzi" */
SET @DataOraPrec = ( SELECT ISNULL((SELECT Top 1 InizioStato FROM EventList WHERE IdxMacchina = @IdxMacchina AND IdxTipo = @IdxTipo AND InizioStato < @DataOra ORDER BY InizioStato DESC), @DataOra ) )
/* è in millisecondi, divido per 60'000.00 x avere minuti centesimali*/
SET @TCMedio = ( SELECT (DATEDIFF(ms, @DataOraPrec, @DataOra) / 60000.00 ) )
/* inserisco riga di tempo ciclo */
INSERT INTO TempiCicloRilevati
VALUES(@IdxMacchina, @CodArticolo, @DataOra, @TCMedio, @NumPz)
END
END
go
commit
go
set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
/*************************************
* STORED PROCEDURE stp_TC_getByMacchinaPeriodo
* recupera tempi ciclo x machcian e periodo
*
* modif.: S.E.L. - 2010.12.15
**************************************/
create PROCEDURE stp_TC_getByMacchinaPeriodo
(
@IdxMacchina NVARCHAR(50),
@Inizio DATETIME,
@Fine DATETIME
)
AS
SELECT * FROM TempiCicloRilevati
WHERE IdxMacchina = @IdxMacchina AND
(DataOraRif >= @Inizio) AND (DataOraRif <= @Fine)
RETURN
go
commit
go
-- registro versione...
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(25, GETDATE())
GO