create table CalendApertura( NumGG int not null constraint PK_CalendApertura primary key, T1 int not null, T2 int not null, T3 int not null, oraInizio int, oraFine int ) go set xact_abort on go begin transaction go INSERT INTO dbo.CalendApertura VALUES (1, 8, 8, 8, 0, 24) INSERT INTO dbo.CalendApertura VALUES (2, 8, 8, 8, 0, 24) INSERT INTO dbo.CalendApertura VALUES (3, 8, 8, 8, 0, 24) INSERT INTO dbo.CalendApertura VALUES (4, 8, 8, 8, 0, 24) INSERT INTO dbo.CalendApertura VALUES (5, 8, 8, 8, 0, 24) INSERT INTO dbo.CalendApertura VALUES (6, 8, 0, 0, 0, 14) INSERT INTO dbo.CalendApertura VALUES (7, 0, 0, 8, 22, 24) go commit transaction go set xact_abort on go begin transaction go create table DatiProduzione( IdxConferma int not null identity constraint PK_DatiProduzione primary key, IdxODL int not null, DataOraApp datetime not null, DataRif datetime not null, TurnoRif int, CodArticolo nvarchar(50), IdxMacchina nvarchar(50) not null, TCAssegnato decimal(18,8), MatrOpr int, MatrApp int not null, DataOraFrom datetime, DataOraTo datetime, TotPzProd int, Tempo decimal(18,8), ClasseTempo nvarchar(50) ) go exec sp_addextendedproperty 'MS_Description', 'matricola dell''operatore che ha lavorato sulla macchina', 'SCHEMA', 'dbo', 'TABLE', 'DatiProduzione', 'COLUMN', 'MatrOpr' go exec sp_addextendedproperty 'MS_Description', 'matricola dell''approvatore del record', 'SCHEMA', 'dbo', 'TABLE', 'DatiProduzione', 'COLUMN', 'MatrApp' go exec sp_addextendedproperty 'MS_Description', 'pezzi prodotti in ciclo', 'SCHEMA', 'dbo', 'TABLE', 'DatiProduzione', 'COLUMN', 'TotPzProd' go exec sp_addextendedproperty 'MS_Description', 'TCAssegnato x num pezzi prodotti', 'SCHEMA', 'dbo', 'TABLE', 'DatiProduzione', 'COLUMN', 'Tempo' go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /************************************* * STORED PROCEDURE stp_DatiConf_conferma * conferma la produzione per la macchina indicata * * modif.: S.E.L. * il: 2011.03.30 **************************************/ alter PROCEDURE stp_DatiConf_conferma ( @idxODL INT, @idxMacchina NVARCHAR(50), @MatrApp INT, @dataFrom DATETIME, @dataTo DATETIME, @turno INT, @idxStato INT, @pezziConf INT ) AS BEGIN TRAN -- calcolo valori DECLARE @CodArticolo NVARCHAR(50) SET @CodArticolo = ISNULL((SELECT ISNULL(CodArticolo,'') FROM ODL WHERE IdxODL = @idxODL), '') DECLARE @TCAss DECIMAL(18,8) SET @TCAss = ISNULL((SELECT ISNULL(TCAssegnato, 1) FROM ODL WHERE IdxODL = @idxODL), 1) -- versione semplificata: approva tutto x data e turno INIZIALE del periodo indicato INSERT INTO DatiConfermati(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp, DataOraFrom, DataOraTo, IdxStato, TotPzProd, TempoProdotto) VALUES (@idxODL, GETDATE(), @dataFrom, @turno, @CodArticolo, @idxMacchina, @TCAss, @MatrApp, @MatrApp, @dataFrom, @dataTo, @idxStato, @pezziConf, @pezziConf*@TCAss) COMMIT TRAN RETURN go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /************************************* * STORED PROCEDURE stp_DatiProd_insAllPeriodo * calcola il tempo da diario di bordo x una macchina dato periodo e inserisce in tabella dati prod INSIEME ai pezzi prodotti * * modif.: S.E.L. * il: 2011.06.06 **************************************/ create PROCEDURE stp_DatiProd_insAllPeriodo ( @IdxMacchina NVARCHAR(50), @dataFrom DATETIME, @dataTo DATETIME, @dataRif DATETIME, @turnoRif INT, @MatrApp INT ) AS BEGIN TRAN -- calcolo i pz prod da confermare per l'intero periodo DECLARE @pzProd AS INT SET @pzProd = ( SELECT ISNULL(SUM(PzProd),0) FROM TempiCicloRilevati WHERE IdxMacchina = @idxMacchina AND DataOraRif BETWEEN @dataFrom AND @dataTo ) -- calcolo l'ODL, l'articolo ed il TCiclo... DECLARE @idxODL INT SET @idxODL = ( SELECT ISNULL(IdxODL, 0) FROM ODL WHERE (@dataFrom BETWEEN DataInizio AND ISNULL(DataFine, DATEADD(d, 1, GETDATE()))) AND NOT (DataInizio IS NULL) ) DECLARE @CodArticolo NVARCHAR(50) SET @CodArticolo = ISNULL((SELECT ISNULL(CodArticolo,'') FROM ODL WHERE IdxODL = @idxODL), '') DECLARE @TCAss DECIMAL(18,8) SET @TCAss = ISNULL((SELECT ISNULL(TCAssegnato, 1) FROM ODL WHERE IdxODL = @idxODL), 1) -- dichiaro le ore che calcolo man mano... DECLARE @totOre DECIMAL(18,8) DECLARE @ClasseTempo NVARCHAR(50) -- variabili x ricerca gg festivi o aperture/chiusure ND programmate DECLARE @chiusura INT DECLARE @apertura INT DECLARE @ggSett INT -- verifico se sia giorno di chiusura, in tal caso carico 8 h in T_OFF_ND SET @chiusura = ( SELECT COUNT(*) FROM CalendFesteFerie WHERE data = @dataRif ) -- verifico che da apertura sia un periodo valido e non di fermo programmato IF(@chiusura = 0) BEGIN -- controllo a seconda della data e turno a che gg di settimana e turno corrisponde... SET DATEFIRST 1; -- setto al lunedì inizio settimana SET @ggSett = DATEPART(dw, @dataFrom ) -- calcolo giorno SET @apertura = ( SELECT CASE @turnoRif WHEN 1 THEN T1 WHEN 2 THEN T2 ELSE T3 END FROM CalendApertura WHERE NumGG = @ggSett ) -- cerco ore apertura... SET @chiusura = ( SELECT CASE @apertura WHEN 8 THEN 0 ELSE 1 END ) -- e se sia turno valido (8h) o vuoto (0h) nel qual caso chiusura > 0 END -- se c'è chiusura per turno singolo o per giorno intero... IF(@chiusura > 0) BEGIN SET @ClasseTempo = 'T_OFF_ND' SET @totOre = 8 INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp, DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo) VALUES (@idxODL, GETDATE(), @dataRif, @turnoRif, @CodArticolo, @IdxMacchina, @TCAss, @MatrApp, @MatrApp, @dataFrom, @dataTo, @pzProd, @totOre, @ClasseTempo) END ELSE -- normale dichiarazione BEGIN -- inserisco i dati di SOLO tempo prodotto e pz prodotti SET @ClasseTempo = 'T_AutoRun' SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo) IF(@totOre > 0) BEGIN INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp, DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo) VALUES (@idxODL, GETDATE(), @dataRif, @turnoRif, @CodArticolo, @IdxMacchina, @TCAss, @MatrApp, @MatrApp, @dataFrom, @dataTo, @pzProd, @totOre, @ClasseTempo) END -- inserisco gli altri tempi, pezzi prod ZERO!!! SET @ClasseTempo = 'T_Microfermo' SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo) IF(@totOre > 0) BEGIN INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp, DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo) VALUES (@idxODL, GETDATE(), @dataRif, @turnoRif, @CodArticolo, @IdxMacchina, @TCAss, @MatrApp, @MatrApp, @dataFrom, @dataTo, 0, @totOre, @ClasseTempo) END SET @ClasseTempo = 'T_FermoGiallo' SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo) IF(@totOre > 0) BEGIN INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp, DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo) VALUES (@idxODL, GETDATE(), @dataRif, @turnoRif, @CodArticolo, @IdxMacchina, @TCAss, @MatrApp, @MatrApp, @dataFrom, @dataTo, 0, @totOre, @ClasseTempo) END SET @ClasseTempo = 'T_FermoRosso' SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo) IF(@totOre > 0) BEGIN INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp, DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo) VALUES (@idxODL, GETDATE(), @dataRif, @turnoRif, @CodArticolo, @IdxMacchina, @TCAss, @MatrApp, @MatrApp, @dataFrom, @dataTo, 0, @totOre, @ClasseTempo) END SET @ClasseTempo = 'T_OFF' SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo) IF(@totOre > 0) BEGIN INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp, DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo) VALUES (@idxODL, GETDATE(), @dataRif, @turnoRif, @CodArticolo, @IdxMacchina, @TCAss, @MatrApp, @MatrApp, @dataFrom, @dataTo, 0, @totOre, @ClasseTempo) END END COMMIT TRAN RETURN go /************************************* * STORED PROCEDURE stp_DatiProd_insert * dichiara i dati x la machcina indicata x tab DatiProduzione * * modif.: S.E.L. * il: 2011.06.06 **************************************/ create PROCEDURE stp_DatiProd_insert ( @idxODL INT, @idxMacchina NVARCHAR(50), @MatrApp INT, @dataFrom DATETIME, @dataTo DATETIME, @turno INT, @pezziConf INT, @Tempo DECIMAL(18,8), @ClasseTempo NVARCHAR(50) ) AS BEGIN TRAN -- calcolo variabili DECLARE @CodArticolo NVARCHAR(50) SET @CodArticolo = ISNULL((SELECT ISNULL(CodArticolo,'') FROM ODL WHERE IdxODL = @idxODL), '') DECLARE @TCAss DECIMAL(18,8) SET @TCAss = ISNULL((SELECT ISNULL(TCAssegnato, 1) FROM ODL WHERE IdxODL = @idxODL), 1) -- versione semplificata: approva tutto x data e turno INIZIALE del periodo indicato INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp, DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo) VALUES (@idxODL, GETDATE(), @dataFrom, @turno, @CodArticolo, @idxMacchina, @TCAss, @MatrApp, @MatrApp, @dataFrom, @dataTo, @pezziConf, @Tempo, @ClasseTempo) COMMIT TRAN RETURN go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /************************************* * Function f_calcolaTempoClasse_ByInterv * calcola il totale del tempo di una classe fermata per un intervallo date * * modif.: S.E.L. * il: 2011.06.07 **************************************/ create FUNCTION f_calcolaTempoClasse_ByInterv ( @IdxMacchina NVARCHAR(50), @dataFrom DATETIME, @dataTo DATETIME, @classeTempo NVARCHAR(50) ) RETURNS DECIMAL(18,8) AS BEGIN -- dichiaro out DECLARE @totOre AS DECIMAL(18,8) DECLARE @incl AS DECIMAL(18,8) DECLARE @start AS DECIMAL(18,8) DECLARE @end AS DECIMAL(18,8) DECLARE @full AS DECIMAL(18,8) -- inizio calcolando il tempo degli eventi totalmente inclusi nell'intervallo SET @incl = (SELECT CAST(ISNULL(SUM(ddb.DurataMinuti),0) AS DECIMAL(18,8)) / 60 AS Tempo FROM DiarioDiBordo ddb INNER JOIN AnagraficaStati a ON ddb.IdxStato = a.IdxStato WHERE (ddb.IdxMacchina = @IdxMacchina) AND (ddb.InizioStato BETWEEN @dataFrom AND @dataTo) AND (ddb.FineStato BETWEEN @dataFrom AND @dataTo) AND a.ClasseTempo = @classeTempo) -- ora sommo gli eventi sui bordi: inizio... SET @start = (SELECT CAST(ISNULL(DATEDIFF(n, @dataFrom, CASE WHEN ddb.FineStato < @dataTo THEN ddb.FineStato ELSE @dataTo END) ,0) AS DECIMAL(18,8)) / 60 AS Tempo FROM DiarioDiBordo ddb INNER JOIN AnagraficaStati a ON ddb.IdxStato = a.IdxStato WHERE (ddb.IdxMacchina = @IdxMacchina) AND (ddb.InizioStato < @dataFrom) AND (ddb.FineStato BETWEEN @dataFrom AND @dataTo) AND a.ClasseTempo = @classeTempo) -- ...e fine... SET @end = (SELECT CAST(ISNULL(DATEDIFF(n, CASE WHEN ddb.InizioStato < @dataFrom THEN @dataFrom ELSE ddb.InizioStato END, @dataTo) ,0) AS DECIMAL(18,8)) / 60 AS Tempo FROM DiarioDiBordo ddb INNER JOIN AnagraficaStati a ON ddb.IdxStato = a.IdxStato WHERE (ddb.IdxMacchina = @IdxMacchina) AND (ddb.InizioStato BETWEEN @dataFrom AND @dataTo) AND (ddb.FineStato > @dataTo) AND a.ClasseTempo = @classeTempo) -- ...e pure eventi totalmente overlapping... SET @full = (SELECT CAST(ISNULL(DATEDIFF(n, @dataFrom, @dataTo) ,0) AS DECIMAL(18,8)) / 60 AS Tempo FROM DiarioDiBordo ddb INNER JOIN AnagraficaStati a ON ddb.IdxStato = a.IdxStato WHERE (ddb.IdxMacchina = @IdxMacchina) AND (ddb.InizioStato < @dataFrom) AND (ddb.FineStato > @dataTo) AND a.ClasseTempo = @classeTempo) -- sommo! SET @totOre = (ISNULL(@incl,0) + ISNULL(@start,0) + ISNULL(@end,0) + ISNULL(@full,0)) RETURN @totOre END go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /************************************* * STORED PROCEDURE stp_PzProd_getByMacchinaPeriodo * recupera per la macchina indicata i pezzi prodotti nel periodo * * modif.: S.E.L. * il: 2011.06.06 **************************************/ create PROCEDURE stp_PzProd_getByMacchinaPeriodo ( @idxMacchina NVARCHAR(50), @startProd DATETIME, @endProd DATETIME ) AS BEGIN TRAN SELECT @idxMacchina as idxMacchina, ISNULL(SUM(PzProd),0) as pezziNonConfermati, @startProd AS DataFrom, @endProd AS DataTo FROM TempiCicloRilevati WHERE IdxMacchina = @idxMacchina AND DataOraRif BETWEEN @startProd AND @endProd COMMIT TRAN RETURN go /************************************* * STORED PROCEDURE stp_TempoByIdxMaccPeriodClass * calcola il tempo da diario di bordo x una macchian dato periodo e tipo classe stati * * modif.: S.E.L. * il: 2011.06.06 **************************************/ create PROCEDURE stp_TempoByIdxMaccPeriodClass ( @IdxMacchina NVARCHAR(50), @DataFrom DATETIME, @DataTo DATETIME, @ClasseTempo NVARCHAR(50) ) AS SELECT CAST(ISNULL(SUM(ddb.DurataMinuti),0) AS DECIMAL(18,8)) / 60 AS ore FROM DiarioDiBordo ddb INNER JOIN AnagraficaStati a ON ddb.IdxStato = a.IdxStato WHERE (a.ClasseTempo = @ClasseTempo) AND (ddb.IdxMacchina = @IdxMacchina) AND (ddb.InizioStato >= @DataFrom) AND (ddb.FineStato <= @DataTo) RETURN go commit go set xact_abort on go begin transaction go UPDATE dbo.AnagraficaStati SET ClasseTempo=N'T_Microfermo' WHERE IdxStato=1 UPDATE dbo.AnagraficaStati SET ClasseTempo=N'T_FermoGiallo' WHERE IdxStato=2 UPDATE dbo.AnagraficaStati SET ClasseTempo=N'T_FermoGiallo' WHERE IdxStato=3 UPDATE dbo.AnagraficaStati SET ClasseTempo=N'T_FermoRosso' WHERE IdxStato=4 UPDATE dbo.AnagraficaStati SET ClasseTempo=N'T_FermoRosso' WHERE IdxStato=5 UPDATE dbo.AnagraficaStati SET ClasseTempo=N'T_Microfermo' WHERE IdxStato=6 UPDATE dbo.AnagraficaStati SET ClasseTempo=N'T_FermoRosso' WHERE IdxStato=7 UPDATE dbo.AnagraficaStati SET ClasseTempo=N'T_FermoRosso' WHERE IdxStato=8 UPDATE dbo.AnagraficaStati SET ClasseTempo=N'T_FermoRosso' WHERE IdxStato=9 UPDATE dbo.AnagraficaStati SET ClasseTempo=N'T_FermoGiallo' WHERE IdxStato=10 UPDATE dbo.AnagraficaStati SET ClasseTempo=N'T_Microfermo' WHERE IdxStato=12 UPDATE dbo.AnagraficaStati SET ClasseTempo=N'T_FermoRosso' WHERE IdxStato=15 UPDATE dbo.AnagraficaStati SET ClasseTempo=N'T_FermoRosso' WHERE IdxStato=23 UPDATE dbo.AnagraficaStati SET ClasseTempo=N'T_FermoGiallo' WHERE IdxStato=24 UPDATE dbo.AnagraficaStati SET ClasseTempo=N'T_FermoGiallo' WHERE IdxStato=25 INSERT INTO dbo.AnagraficaStati VALUES (26, N'Non Disponibile', N'S', 1, N'T_OFF_ND') go commit transaction go set xact_abort on go begin transaction go INSERT INTO dbo.AnagClassiTempo VALUES (N'T_Microfermo', N'Microfermate') INSERT INTO dbo.AnagClassiTempo VALUES (N'T_OFF', N'Macchina spenta') INSERT INTO dbo.AnagClassiTempo VALUES (N'T_OFF_ND', N'Macchina in tempo Non Disponibile') INSERT INTO dbo.AnagClassiTempo VALUES (N'T_FermoGiallo', N'Macchina in Automatico, ferma per attrezzaggi o fermi a ciclo') INSERT INTO dbo.AnagClassiTempo VALUES (N'T_FermoRosso', N'Macchina Ferma in RUN') go commit transaction go set xact_abort on go begin transaction go DELETE FROM dbo.AnagClassiTempo WHERE ClasseTempo=N'T_Auto' DELETE FROM dbo.AnagClassiTempo WHERE ClasseTempo=N'T_Fermo' DELETE FROM dbo.AnagClassiTempo WHERE ClasseTempo=N'T_ND' go commit transaction go set xact_abort on go begin transaction go INSERT INTO dbo.CalendFesteFerie VALUES ('2011-04-25 00:00:00.000', N'festa della liberazione') INSERT INTO dbo.CalendFesteFerie VALUES ('2011-05-01 00:00:00.000', N'festa dei lavoratori') INSERT INTO dbo.CalendFesteFerie VALUES ('2011-06-02 00:00:00.000', N'festa della repubblica') go commit transaction go set xact_abort on go begin transaction go set ANSI_NULLS on go /************************************* * Function f_calcolaTempoStato_ByInterv * calcola il totale del tempo di uno stato per un intervallo date * * modif.: S.E.L. * il: 2011.06.23 **************************************/ create FUNCTION f_calcolaTempoStato_ByInterv ( @IdxMacchina NVARCHAR(50), @dataFrom DATETIME, @dataTo DATETIME, @IdxStato INT ) RETURNS DECIMAL(18,8) AS BEGIN -- dichiaro out DECLARE @totOre AS DECIMAL(18,8) DECLARE @incl AS DECIMAL(18,8) DECLARE @start AS DECIMAL(18,8) DECLARE @end AS DECIMAL(18,8) DECLARE @full AS DECIMAL(18,8) -- inizio calcolando il tempo degli eventi totalmente inclusi nell'intervallo SET @incl = (SELECT CAST(ISNULL(SUM(ddb.DurataMinuti),0) AS DECIMAL(18,8)) / 60 AS Tempo FROM DiarioDiBordo ddb WHERE (ddb.IdxMacchina = @IdxMacchina) AND (ddb.InizioStato BETWEEN @dataFrom AND @dataTo) AND (ddb.FineStato BETWEEN @dataFrom AND @dataTo) AND IdxStato = @IdxStato) -- ora sommo gli eventi sui bordi: inizio... SET @start = (SELECT CAST(ISNULL(DATEDIFF(n, @dataFrom, CASE WHEN ddb.FineStato < @dataTo THEN ddb.FineStato ELSE @dataTo END) ,0) AS DECIMAL(18,8)) / 60 AS Tempo FROM DiarioDiBordo ddb WHERE (ddb.IdxMacchina = @IdxMacchina) AND (ddb.InizioStato < @dataFrom) AND (ddb.FineStato BETWEEN @dataFrom AND @dataTo) AND IdxStato = @IdxStato) -- ...e fine... SET @end = (SELECT CAST(ISNULL(DATEDIFF(n, CASE WHEN ddb.InizioStato < @dataFrom THEN @dataFrom ELSE ddb.InizioStato END, @dataTo) ,0) AS DECIMAL(18,8)) / 60 AS Tempo FROM DiarioDiBordo ddb WHERE (ddb.IdxMacchina = @IdxMacchina) AND (ddb.InizioStato BETWEEN @dataFrom AND @dataTo) AND (ddb.FineStato > @dataTo) AND IdxStato = @IdxStato) -- ...e pure eventi totalmente overlapping... SET @full = (SELECT CAST(ISNULL(DATEDIFF(n, @dataFrom, @dataTo) ,0) AS DECIMAL(18,8)) / 60 AS Tempo FROM DiarioDiBordo ddb WHERE (ddb.IdxMacchina = @IdxMacchina) AND (ddb.InizioStato < @dataFrom) AND (ddb.FineStato > @dataTo) AND IdxStato = @IdxStato) -- sommo! SET @totOre = (ISNULL(@incl,0) + ISNULL(@start,0) + ISNULL(@end,0) + ISNULL(@full,0)) RETURN @totOre END go commit go set xact_abort on go begin transaction go alter table DatiProduzione add Causale nvarchar(50) go set ANSI_NULLS on go /************************************* * STORED PROCEDURE stp_DatiProd_insAllPeriodo * calcola il tempo da diario di bordo x una macchina dato periodo e inserisce in tabella dati prod INSIEME ai pezzi prodotti * * modif.: S.E.L. * il: 2011.06.06 **************************************/ alter PROCEDURE stp_DatiProd_insAllPeriodo ( @IdxMacchina NVARCHAR(50), @dataFrom DATETIME, @dataTo DATETIME, @dataRif DATETIME, @turnoRif INT, @MatrApp INT ) AS BEGIN TRAN -- calcolo i pz prod da confermare per l'intero periodo DECLARE @pzProd AS INT SET @pzProd = ( SELECT ISNULL(SUM(PzProd),0) FROM TempiCicloRilevati WHERE IdxMacchina = @idxMacchina AND DataOraRif BETWEEN @dataFrom AND @dataTo ) -- calcolo l'ODL, l'articolo ed il TCiclo... DECLARE @idxODL INT SET @idxODL = ( SELECT ISNULL(IdxODL, 0) FROM ODL WHERE (@dataFrom BETWEEN DataInizio AND ISNULL(DataFine, DATEADD(d, 1, GETDATE()))) AND NOT (DataInizio IS NULL) ) DECLARE @CodArticolo NVARCHAR(50) SET @CodArticolo = ISNULL((SELECT ISNULL(CodArticolo,'') FROM ODL WHERE IdxODL = @idxODL), '') DECLARE @TCAss DECIMAL(18,8) SET @TCAss = ISNULL((SELECT ISNULL(TCAssegnato, 1) FROM ODL WHERE IdxODL = @idxODL), 1) -- dichiaro le ore che calcolo man mano... DECLARE @totOre DECIMAL(18,8) DECLARE @ClasseTempo NVARCHAR(50) -- variabili x ricerca gg festivi o aperture/chiusure ND programmate DECLARE @chiusura INT DECLARE @apertura INT DECLARE @ggSett INT -- verifico se sia giorno di chiusura, in tal caso carico 8 h in T_OFF_ND SET @chiusura = ( SELECT COUNT(*) FROM CalendFesteFerie WHERE data = @dataRif ) -- verifico che da apertura sia un periodo valido e non di fermo programmato IF(@chiusura = 0) BEGIN -- controllo a seconda della data e turno a che gg di settimana e turno corrisponde... SET DATEFIRST 1; -- setto al lunedì inizio settimana SET @ggSett = DATEPART(dw, @dataFrom ) -- calcolo giorno SET @apertura = ( SELECT CASE @turnoRif WHEN 1 THEN T1 WHEN 2 THEN T2 ELSE T3 END FROM CalendApertura WHERE NumGG = @ggSett ) -- cerco ore apertura... SET @chiusura = ( SELECT CASE @apertura WHEN 8 THEN 0 ELSE 1 END ) -- e se sia turno valido (8h) o vuoto (0h) nel qual caso chiusura > 0 END -- se c'è chiusura per turno singolo o per giorno intero... IF(@chiusura > 0) BEGIN SET @ClasseTempo = 'T_OFF_ND' SET @totOre = 8 INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp, DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo, Causale) VALUES (@idxODL, GETDATE(), @dataRif, @turnoRif, @CodArticolo, @IdxMacchina, @TCAss, @MatrApp, @MatrApp, @dataFrom, @dataTo, @pzProd, @totOre, @ClasseTempo, @ClasseTempo) END ELSE -- normale dichiarazione BEGIN -- inserisco i dati di SOLO tempo prodotto e pz prodotti SET @ClasseTempo = 'T_AutoRun' SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo) IF(@totOre > 0) BEGIN INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp, DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo, Causale) VALUES (@idxODL, GETDATE(), @dataRif, @turnoRif, @CodArticolo, @IdxMacchina, @TCAss, @MatrApp, @MatrApp, @dataFrom, @dataTo, @pzProd, @totOre, @ClasseTempo, @ClasseTempo) END -- inserisco gli altri tempi, pezzi prod ZERO!!! SET @ClasseTempo = 'T_Microfermo' SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo) IF(@totOre > 0) BEGIN -- scrivo tutti gli eventi della classe EXEC stp_DatiProd_insClasseTempo @IdxMacchina, @dataFrom, @dataTo, @dataRif, @turnoRif, @MatrApp, @idxODL, @CodArticolo, @TCAss, @ClasseTempo END SET @ClasseTempo = 'T_FermoGiallo' SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo) IF(@totOre > 0) BEGIN -- scrivo tutti gli eventi della classe EXEC stp_DatiProd_insClasseTempo @IdxMacchina, @dataFrom, @dataTo, @dataRif, @turnoRif, @MatrApp, @idxODL, @CodArticolo, @TCAss, @ClasseTempo END SET @ClasseTempo = 'T_FermoRosso' SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo) IF(@totOre > 0) BEGIN -- scrivo tutti gli eventi della classe EXEC stp_DatiProd_insClasseTempo @IdxMacchina, @dataFrom, @dataTo, @dataRif, @turnoRif, @MatrApp, @idxODL, @CodArticolo, @TCAss, @ClasseTempo END SET @ClasseTempo = 'T_OFF' SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo) IF(@totOre > 0) BEGIN -- scrivo tutti gli eventi della classe EXEC stp_DatiProd_insClasseTempo @IdxMacchina, @dataFrom, @dataTo, @dataRif, @turnoRif, @MatrApp, @idxODL, @CodArticolo, @TCAss, @ClasseTempo END END COMMIT TRAN RETURN go /************************************* * STORED PROCEDURE stp_DatiProd_insert * dichiara i dati x la machcina indicata x tab DatiProduzione * * modif.: S.E.L. * il: 2011.06.06 **************************************/ alter PROCEDURE stp_DatiProd_insert ( @idxODL INT, @idxMacchina NVARCHAR(50), @MatrApp INT, @dataFrom DATETIME, @dataTo DATETIME, @turno INT, @pezziConf INT, @Tempo DECIMAL(18,8), @ClasseTempo NVARCHAR(50) ) AS BEGIN TRAN -- calcolo variabili DECLARE @CodArticolo NVARCHAR(50) SET @CodArticolo = ISNULL((SELECT ISNULL(CodArticolo,'') FROM ODL WHERE IdxODL = @idxODL), '') DECLARE @TCAss DECIMAL(18,8) SET @TCAss = ISNULL((SELECT ISNULL(TCAssegnato, 1) FROM ODL WHERE IdxODL = @idxODL), 1) -- versione semplificata: approva tutto x data e turno INIZIALE del periodo indicato INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp, DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo, Causale) VALUES (@idxODL, GETDATE(), @dataFrom, @turno, @CodArticolo, @idxMacchina, @TCAss, @MatrApp, @MatrApp, @dataFrom, @dataTo, @pezziConf, @Tempo, @ClasseTempo, @ClasseTempo) COMMIT TRAN RETURN go /************************************* * STORED PROCEDURE stp_DatiProd_insClasseTempo * inserisce i tempi di tutte le SIONGOLE causali rilevate per un intervallo di tempo ed una data classe tempo * * modif.: S.E.L. * il: 2011.06.23 **************************************/ create PROCEDURE stp_DatiProd_insClasseTempo ( @IdxMacchina NVARCHAR(50), @dataFrom DATETIME, @dataTo DATETIME, @dataRif DATETIME, @turnoRif INT, @MatrApp INT, @idxODL INT, @CodArticolo NVARCHAR(50), @TCAss DECIMAL(18,8), @ClasseTempo NVARCHAR(50) ) AS -- creo tab elenco delle fermate raggruppate x classe tempo WITH cte_stati AS( SELECT DISTINCT ddb.IdxStato, Descrizione as Causale FROM DiarioDiBordo AS ddb INNER JOIN AnagraficaStati AS a ON ddb.IdxStato = a.IdxStato WHERE (ddb.InizioStato BETWEEN @dataFrom AND @dataTo) AND (a.ClasseTempo = @classeTempo) AND (IdxMacchina = @IdxMacchina) ) --...e lo inserisco! INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp, DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo, Causale) ( SELECT @idxODL, GETDATE(), @dataRif, @turnoRif, @CodArticolo, @IdxMacchina, @TCAss, @MatrApp, @MatrApp, @dataFrom, @dataTo, 0, dbo.f_calcolaTempoStato_ByInterv(@IdxMacchina,@dataFrom, @dataTo, IdxStato), @ClasseTempo, Causale FROM cte_stati ) RETURN go commit go set xact_abort on go begin transaction go alter table AnagraficaStati add ShowArticolo bit go set ANSI_NULLS on go /************************************* * STORED PROCEDURE stp_DatiProd_insClasseTempo * inserisce i tempi di tutte le SIONGOLE causali rilevate per un intervallo di tempo ed una data classe tempo * * modif.: S.E.L. * il: 2011.06.23 **************************************/ alter PROCEDURE stp_DatiProd_insClasseTempo ( @IdxMacchina NVARCHAR(50), @dataFrom DATETIME, @dataTo DATETIME, @dataRif DATETIME, @turnoRif INT, @MatrApp INT, @idxODL INT, @CodArticolo NVARCHAR(50), @TCAss DECIMAL(18,8), @ClasseTempo NVARCHAR(50) ) AS -- creo tab elenco delle fermate raggruppate x classe tempo WITH cte_stati AS( SELECT DISTINCT ddb.IdxStato, Descrizione as Causale, a.ShowArticolo FROM DiarioDiBordo AS ddb INNER JOIN AnagraficaStati AS a ON ddb.IdxStato = a.IdxStato WHERE (ddb.InizioStato BETWEEN @dataFrom AND @dataTo) AND (a.ClasseTempo = @classeTempo) AND (IdxMacchina = @IdxMacchina) ) --...e lo inserisco! INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp, DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo, Causale) ( SELECT @idxODL, GETDATE(), @dataRif, @turnoRif, CASE ShowArticolo WHEN 1 THEN @CodArticolo ELSE '' END AS CodArticolo, @IdxMacchina, @TCAss, @MatrApp, @MatrApp, @dataFrom, @dataTo, 0, dbo.f_calcolaTempoStato_ByInterv(@IdxMacchina,@dataFrom, @dataTo, IdxStato), @ClasseTempo, Causale FROM cte_stati ) RETURN go commit go set xact_abort on go begin transaction go UPDATE dbo.AnagraficaStati SET ShowArticolo=0 WHERE IdxStato=1 UPDATE dbo.AnagraficaStati SET ShowArticolo=1 WHERE IdxStato=2 UPDATE dbo.AnagraficaStati SET ShowArticolo=1 WHERE IdxStato=3 UPDATE dbo.AnagraficaStati SET ShowArticolo=0 WHERE IdxStato=4 UPDATE dbo.AnagraficaStati SET ShowArticolo=0 WHERE IdxStato=5 UPDATE dbo.AnagraficaStati SET ShowArticolo=1 WHERE IdxStato=6 UPDATE dbo.AnagraficaStati SET ShowArticolo=0 WHERE IdxStato=7 UPDATE dbo.AnagraficaStati SET ShowArticolo=0 WHERE IdxStato=8 UPDATE dbo.AnagraficaStati SET ShowArticolo=0 WHERE IdxStato=9 UPDATE dbo.AnagraficaStati SET ShowArticolo=1 WHERE IdxStato=10 UPDATE dbo.AnagraficaStati SET ShowArticolo=0 WHERE IdxStato=11 UPDATE dbo.AnagraficaStati SET ShowArticolo=1 WHERE IdxStato=12 UPDATE dbo.AnagraficaStati SET ShowArticolo=1 WHERE IdxStato=13 UPDATE dbo.AnagraficaStati SET ShowArticolo=1 WHERE IdxStato=14 UPDATE dbo.AnagraficaStati SET ShowArticolo=0 WHERE IdxStato=15 UPDATE dbo.AnagraficaStati SET ShowArticolo=0 WHERE IdxStato=23 UPDATE dbo.AnagraficaStati SET ShowArticolo=1 WHERE IdxStato=24 UPDATE dbo.AnagraficaStati SET ShowArticolo=1 WHERE IdxStato=25 UPDATE dbo.AnagraficaStati SET ShowArticolo=0 WHERE IdxStato=26 go commit transaction go set xact_abort on go begin transaction go set ANSI_NULLS on go /************************************* * STORED PROCEDURE stp_DatiProd_insClasseTempo * inserisce i tempi di tutte le SIONGOLE causali rilevate per un intervallo di tempo ed una data classe tempo * * modif.: S.E.L. * il: 2011.06.23 **************************************/ alter PROCEDURE stp_DatiProd_insClasseTempo ( @IdxMacchina NVARCHAR(50), @dataFrom DATETIME, @dataTo DATETIME, @dataRif DATETIME, @turnoRif INT, @MatrApp INT, @idxODL INT, @CodArticolo NVARCHAR(50), @TCAss DECIMAL(18,8), @ClasseTempo NVARCHAR(50) ) AS -- creo tab elenco delle fermate raggruppate x classe tempo WITH cte_stati AS( SELECT DISTINCT ddb.IdxStato, Descrizione as Causale, a.ShowArticolo FROM DiarioDiBordo AS ddb INNER JOIN AnagraficaStati AS a ON ddb.IdxStato = a.IdxStato WHERE (ddb.InizioStato BETWEEN @dataFrom AND @dataTo) AND (a.ClasseTempo = @classeTempo) AND (IdxMacchina = @IdxMacchina) ) --...e lo inserisco! INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp, DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo, Causale) ( SELECT @idxODL, GETDATE(), @dataRif, @turnoRif, CASE ShowArticolo WHEN 1 THEN @CodArticolo ELSE '' END AS CodArticolo, @IdxMacchina, @TCAss, @MatrApp, @MatrApp, @dataFrom, @dataTo, 0, dbo.f_calcolaTempoStato_ByInterv(@IdxMacchina,@dataFrom, @dataTo, IdxStato), @ClasseTempo, Causale FROM cte_stati ) RETURN go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /************************************* * STORED PROCEDURE stp_DatiProd_insClasseTempo * inserisce i tempi di tutte le SIONGOLE causali rilevate per un intervallo di tempo ed una data classe tempo * * modif.: S.E.L. * il: 2011.06.23 **************************************/ alter PROCEDURE stp_DatiProd_insClasseTempo ( @IdxMacchina NVARCHAR(50), @dataFrom DATETIME, @dataTo DATETIME, @dataRif DATETIME, @turnoRif INT, @MatrApp INT, @idxODL INT, @CodArticolo NVARCHAR(50), @TCAss DECIMAL(18,8), @ClasseTempo NVARCHAR(50) ) AS -- creo tab elenco delle fermate raggruppate x classe tempo WITH cte_stati AS( SELECT DISTINCT ddb.IdxStato, Descrizione as Causale, a.ShowArticolo FROM DiarioDiBordo AS ddb INNER JOIN AnagraficaStati AS a ON ddb.IdxStato = a.IdxStato WHERE (ddb.InizioStato BETWEEN @dataFrom AND @dataTo) AND (a.ClasseTempo = @classeTempo) AND (IdxMacchina = @IdxMacchina) ) --...e lo inserisco! INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp, DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo, Causale) ( SELECT @idxODL, GETDATE(), @dataRif, @turnoRif, CASE ShowArticolo WHEN 1 THEN @CodArticolo ELSE '' END AS CodArticolo, @IdxMacchina, CASE ShowArticolo WHEN 1 THEN @TCAss ELSE 0 END AS TCAss, @MatrApp, @MatrApp, @dataFrom, @dataTo, 0, dbo.f_calcolaTempoStato_ByInterv(@IdxMacchina,@dataFrom, @dataTo, IdxStato), @ClasseTempo, Causale FROM cte_stati ) RETURN go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /************************************* * STORED PROCEDURE stp_DatiProd_insAllPeriodo * calcola il tempo da diario di bordo x una macchina dato periodo e inserisce in tabella dati prod INSIEME ai pezzi prodotti * * modif.: S.E.L. * il: 2011.06.06 **************************************/ alter PROCEDURE stp_DatiProd_insAllPeriodo ( @IdxMacchina NVARCHAR(50), @dataFrom DATETIME, @dataTo DATETIME, @dataRif DATETIME, @turnoRif INT, @MatrApp INT ) AS BEGIN TRAN -- calcolo i pz prod da confermare per l'intero periodo DECLARE @pzProd AS INT SET @pzProd = ( SELECT ISNULL(SUM(PzProd),0) FROM TempiCicloRilevati WHERE IdxMacchina = @idxMacchina AND DataOraRif BETWEEN @dataFrom AND @dataTo ) -- calcolo l'ODL, l'articolo ed il TCiclo... DECLARE @idxODL INT SET @idxODL = ( SELECT ISNULL(IdxODL, 0) FROM ODL WHERE (@dataFrom BETWEEN DataInizio AND ISNULL(DataFine, DATEADD(d, 1, GETDATE()))) AND NOT (DataInizio IS NULL) ) DECLARE @CodArticolo NVARCHAR(50) SET @CodArticolo = ISNULL((SELECT ISNULL(CodArticolo,'') FROM ODL WHERE IdxODL = @idxODL), '') DECLARE @TCAss DECIMAL(18,8) SET @TCAss = ISNULL((SELECT ISNULL(TCAssegnato, 1) FROM ODL WHERE IdxODL = @idxODL), 1) -- dichiaro le ore che calcolo man mano... DECLARE @totOre DECIMAL(18,8) DECLARE @ClasseTempo NVARCHAR(50) -- variabili x ricerca gg festivi o aperture/chiusure ND programmate DECLARE @chiusura INT DECLARE @apertura INT DECLARE @ggSett INT -- verifico se sia giorno di chiusura, in tal caso carico 8 h in T_OFF_ND SET @chiusura = ( SELECT COUNT(*) FROM CalendFesteFerie WHERE data = @dataRif ) -- verifico che da apertura sia un periodo valido e non di fermo programmato IF(@chiusura = 0) BEGIN -- controllo a seconda della data e turno a che gg di settimana e turno corrisponde... SET DATEFIRST 1; -- setto al lunedì inizio settimana SET @ggSett = DATEPART(dw, @dataFrom ) -- calcolo giorno SET @apertura = ( SELECT CASE @turnoRif WHEN 1 THEN T1 WHEN 2 THEN T2 ELSE T3 END FROM CalendApertura WHERE NumGG = @ggSett ) -- cerco ore apertura... SET @chiusura = ( SELECT CASE @apertura WHEN 8 THEN 0 ELSE 1 END ) -- e se sia turno valido (8h) o vuoto (0h) nel qual caso chiusura > 0 END -- se c'è chiusura per turno singolo o per giorno intero... IF(@chiusura > 0) BEGIN SET @ClasseTempo = 'T_OFF_ND' SET @totOre = 8 INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp, DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo, Causale) VALUES (@idxODL, GETDATE(), @dataRif, @turnoRif, '', @IdxMacchina, 0, @MatrApp, @MatrApp, -- non metto ne tempo ne cod articolo... @dataFrom, @dataTo, @pzProd, @totOre, @ClasseTempo, @ClasseTempo) END ELSE -- normale dichiarazione BEGIN -- inserisco i dati di SOLO tempo prodotto e pz prodotti SET @ClasseTempo = 'T_AutoRun' SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo) IF(@totOre > 0) BEGIN INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp, DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo, Causale) VALUES (@idxODL, GETDATE(), @dataRif, @turnoRif, @CodArticolo, @IdxMacchina, @TCAss, @MatrApp, @MatrApp, @dataFrom, @dataTo, @pzProd, @totOre, @ClasseTempo, @ClasseTempo) END -- inserisco gli altri tempi, pezzi prod ZERO!!! SET @ClasseTempo = 'T_Microfermo' SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo) IF(@totOre > 0) BEGIN -- scrivo tutti gli eventi della classe EXEC stp_DatiProd_insClasseTempo @IdxMacchina, @dataFrom, @dataTo, @dataRif, @turnoRif, @MatrApp, @idxODL, @CodArticolo, @TCAss, @ClasseTempo END SET @ClasseTempo = 'T_FermoGiallo' SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo) IF(@totOre > 0) BEGIN -- scrivo tutti gli eventi della classe EXEC stp_DatiProd_insClasseTempo @IdxMacchina, @dataFrom, @dataTo, @dataRif, @turnoRif, @MatrApp, @idxODL, @CodArticolo, @TCAss, @ClasseTempo END SET @ClasseTempo = 'T_FermoRosso' SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo) IF(@totOre > 0) BEGIN -- scrivo tutti gli eventi della classe EXEC stp_DatiProd_insClasseTempo @IdxMacchina, @dataFrom, @dataTo, @dataRif, @turnoRif, @MatrApp, @idxODL, @CodArticolo, @TCAss, @ClasseTempo END SET @ClasseTempo = 'T_OFF' SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo) IF(@totOre > 0) BEGIN -- scrivo tutti gli eventi della classe EXEC stp_DatiProd_insClasseTempo @IdxMacchina, @dataFrom, @dataTo, @dataRif, @turnoRif, @MatrApp, @idxODL, @CodArticolo, @TCAss, @ClasseTempo END END COMMIT TRAN RETURN go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /************************************* * STORED PROCEDURE stp_DatiConf_getByPeriodo * * recupera i dati confermati x un periodo, ordinati in data DESC * * modif.: S.E.L. * il: 2011.07.04 **************************************/ create PROCEDURE stp_DatiConf_getByPeriodo ( @dataFrom DATETIME, @dataTo DATETIME ) AS SELECT * FROM DatiConfermati WHERE (DataRif >= @dataFrom AND DataRif <= @dataTo) ORDER BY DataRif DESC RETURN go /************************************* * STORED PROCEDURE stp_DatiProd_getByMacchPeriodo * * recupera i dati confermati x una macchina e periodo, ordinati in data DESC * * modif.: S.E.L. * il: 2011.07.04 **************************************/ create PROCEDURE stp_DatiProd_getByMacchPeriodo ( @idxMacchina NVARCHAR(50), @dataFrom DATETIME, @dataTo DATETIME ) AS SELECT * FROM DatiProduzione WHERE IdxMacchina = @idxMacchina AND (DataRif >= @dataFrom AND DataRif <= @dataTo) ORDER BY DataRif DESC RETURN go /************************************* * STORED PROCEDURE stp_DatiProd_getByPeriodo * * recupera i dati confermati x un periodo, ordinati in data DESC * * modif.: S.E.L. * il: 2011.07.04 **************************************/ create PROCEDURE stp_DatiProd_getByPeriodo ( @dataFrom DATETIME, @dataTo DATETIME ) AS SELECT * FROM DatiProduzione WHERE (DataRif >= @dataFrom AND DataRif <= @dataTo) ORDER BY DataRif DESC RETURN go commit go -- registro versione... INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(300, GETDATE()) GO