create table ListValues( TableName nvarchar(50) not null, FieldName nvarchar(50) not null, value nvarchar(10) not null, label nvarchar(50), ordinal int constraint DF_ListValues_ordinal default ((0)), constraint PK_ListValues_1 primary key(TableName,FieldName,value) ); go set xact_abort on go begin transaction go INSERT INTO dbo.ListValues VALUES (N'*', N'PageSize', N'10', N'10', 1) INSERT INTO dbo.ListValues VALUES (N'*', N'PageSize', N'15', N'15', 2) INSERT INTO dbo.ListValues VALUES (N'*', N'PageSize', N'20', N'20', 3) INSERT INTO dbo.ListValues VALUES (N'*', N'PageSize', N'35', N'35', 4) INSERT INTO dbo.ListValues VALUES (N'*', N'PageSize', N'50', N'50', 5) go commit transaction go set xact_abort on; go begin transaction; go set ANSI_NULLS on; go /*---------------------------------- * Trigger su insert/update * * Aggiorna giustificativi nella tab TimbratureExpl * * creato da: S.E. Locatelli - 2012.12.04 * ultima modifica: *----------------------------------*/ alter TRIGGER trg_giustUpdateTimbr ON Giustificativi FOR INSERT, UPDATE AS -- controllo se rescord esista altrimenti lo creo!!! DECLARE @trovate INT = 0 DECLARE @idxDipendente INT DECLARE @dataRif DATETIME SET @trovate = ISNULL( ( SELECT COUNT(*) FROM TimbratureExpl te INNER JOIN inserted g ON te.idxDipendente = g.idxDipendente AND te.dataLav = g.dataLav) ,0) IF(@trovate = 0) BEGIN SELECT @idxDipendente = idxDipendente, @dataRif=dataLav FROM inserted EXEC stp_ricalcolaTimbratureExpl @idxDipendente, @dataRif END -- CONTROLLO SE IL RECORD NON SIA BLOCCATO con where nell'update -- prendo tutte le "vecchie" righe (deleted) e x le giornate relative TOLGO i minuti dei giustificativi UPDATE TimbratureExpl SET minMal = CASE WHEN g.codGiust='MAL' THEN 0 ELSE minMal END, minFer = CASE WHEN g.codGiust='FER' THEN 0 ELSE minFer END, minFest = CASE WHEN g.codGiust='FEST' THEN 0 ELSE minFest END, minPerm = CASE WHEN g.codGiust='PERM' THEN 0 ELSE minPerm END FROM TimbratureExpl te INNER JOIN deleted g ON te.idxDipendente = g.idxDipendente AND te.dataLav = g.dataLav WHERE te.block = 0 -- prendo le "nuove" righe (inserted) e x le giornate relative AGGIUNGO i minuti dei giustificativi UPDATE TimbratureExpl SET minMal = CASE WHEN g.codGiust='MAL' THEN g.minuti ELSE minMal END, minFer = CASE WHEN g.codGiust='FER' THEN g.minuti ELSE minFer END, minFest = CASE WHEN g.codGiust='FEST' THEN g.minuti ELSE minFest END, minPerm = CASE WHEN g.codGiust='PERM' THEN g.minuti ELSE minPerm END FROM TimbratureExpl te INNER JOIN inserted g ON te.idxDipendente = g.idxDipendente AND te.dataLav = g.dataLav WHERE te.block = 0 go /*---------------------------------- * Trigger su delete * * Aggiorna giustificativi nella tab TimbratureExpl * * creato da: S.E. Locatelli - 2012.12.04 * ultima modifica: *----------------------------------*/ alter TRIGGER trg_giustDelUpdTimbr ON Giustificativi FOR DELETE AS -- controllo se rescord esista altrimenti lo creo!!! DECLARE @trovate INT = 0 DECLARE @idxDipendente INT DECLARE @dataRif DATETIME -- CONTROLLO SE IL RECORD NON SIA BLOCCATO in update con where -- prendo tutte le "vecchie" righe (deleted) e x le giornate relative TOLGO i minuti dei giustificativi UPDATE TimbratureExpl SET minMal = CASE WHEN g.codGiust='MAL' THEN 0 ELSE minMal END, minFer = CASE WHEN g.codGiust='FER' THEN 0 ELSE minFer END, minFest = CASE WHEN g.codGiust='FEST' THEN 0 ELSE minFest END, minPerm = CASE WHEN g.codGiust='PERM' THEN 0 ELSE minPerm END FROM TimbratureExpl te INNER JOIN deleted g ON te.idxDipendente = g.idxDipendente AND te.dataLav = g.dataLav WHERE te.block = 0 go commit; go set xact_abort on; go begin transaction; go set ANSI_NULLS on; go create VIEW v_selPageSize AS SELECT TOP (100) PERCENT value, label, ordinal FROM dbo.ListValues WHERE (TableName = N'*') AND (FieldName = N'PageSize') go exec sp_addextendedproperty 'MS_DiagramPane1', '[0E232FF0-B466-11cf-A24F-00AA00A3EFFF, 1.00] Begin DesignProperties = Begin PaneConfigurations = Begin PaneConfiguration = 0 NumPanes = 4 Configuration = "(H (1[40] 4[20] 2[20] 3) )" End Begin PaneConfiguration = 1 NumPanes = 3 Configuration = "(H (1 [50] 4 [25] 3))" End Begin PaneConfiguration = 2 NumPanes = 3 Configuration = "(H (1 [50] 2 [25] 3))" End Begin PaneConfiguration = 3 NumPanes = 3 Configuration = "(H (4 [30] 2 [40] 3))" End Begin PaneConfiguration = 4 NumPanes = 2 Configuration = "(H (1 [56] 3))" End Begin PaneConfiguration = 5 NumPanes = 2 Configuration = "(H (2 [66] 3))" End Begin PaneConfiguration = 6 NumPanes = 2 Configuration = "(H (4 [50] 3))" End Begin PaneConfiguration = 7 NumPanes = 1 Configuration = "(V (3))" End Begin PaneConfiguration = 8 NumPanes = 3 Configuration = "(H (1[56] 4[18] 2) )" End Begin PaneConfiguration = 9 NumPanes = 2 Configuration = "(H (1 [75] 4))" End Begin PaneConfiguration = 10 NumPanes = 2 Configuration = "(H (1[66] 2) )" End Begin PaneConfiguration = 11 NumPanes = 2 Configuration = "(H (4 [60] 2))" End Begin PaneConfiguration = 12 NumPanes = 1 Configuration = "(H (1) )" End Begin PaneConfiguration = 13 NumPanes = 1 Configuration = "(V (4))" End Begin PaneConfiguration = 14 NumPanes = 1 Configuration = "(V (2))" End ActivePaneConfig = 0 End Begin DiagramPane = Begin Origin = Top = 0 Left = 0 End Begin Tables = Begin Table = "ListValues" Begin Extent = Top = 6 Left = 38 Bottom = 187 Right = 208 End DisplayFlags = 280 TopColumn = 0 End End End Begin SQLPane = End Begin DataPane = Begin ParameterDefaults = "" End Begin ColumnWidths = 9 Width = 284 Width = 1500 Width = 1500 Width = 1500 Width = 1500 Width = 1500 Width = 1500 Width = 1500 Width = 1500 End End Begin CriteriaPane = Begin ColumnWidths = 11 Column = 1440 Alias = 900 Table = 1170 Output = 720 Append = 1400 NewValue = 1170 SortType = 1350 SortOrder = 1410 GroupBy = 1350 Filter = 1350 Or = 1350 Or = 1350 Or = 1350 End End End ', 'SCHEMA', 'dbo', 'VIEW', 'v_selPageSize'; go exec sp_addextendedproperty 'MS_DiagramPaneCount', 1, 'SCHEMA', 'dbo', 'VIEW', 'v_selPageSize'; go commit; go -- registro versione... INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(325, GETDATE()) GO SELECT * FROM LogUpdateDb ORDER BY Versione DESC