Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Aiuto per campi data
mercoledì 22 aprile 2009 - 23.10
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
minucci
Profilo
| Newbie
8
messaggi | Data Invio:
mer 22 apr 2009 - 23:10
Devo preparare un trigger in sql che mi controlla la data in questo modo :
devo recuperare delle ore di lavoro fino al 31.12.2010, come posso far capire attraverso il codice tsql che il periodo di scadenze di queste ore è valido
fino al 31.12.2010. considerate che nel 2010 la validità delle ore dovrà essere fruita fino al 31.12.2011. Help me Grazie
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mer 22 apr 2009 - 23:13
>Devo preparare un trigger in sql che mi controlla la data in
>questo modo :
Ciao Giuseppe,
Puoi postare un esempio completo con la struttura della tabella (CREATE TABLE), alcune righe di prova (INSERT INTO), la logica ed il tipo di trigger che vorresti creare ed il risultato desiderato?
>Help me Grazie
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
minucci
Profilo
| Newbie
8
messaggi | Data Invio:
mer 22 apr 2009 - 23:28
1015_Ripara Ore di Recupero T_CREDI
Ti invio il listato Grazie
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mer 22 apr 2009 - 23:30
>Ti invio il listato Grazie
Non riesco a scaricarlo.
Postalo in formato testo
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
minucci
Profilo
| Newbie
8
messaggi | Data Invio:
mer 22 apr 2009 - 23:35
Questo è il listato come vedi posso agire sui giorni ma mi occorre cortesemente una regola che calcoli queste ore da recuperare fino alla data 31.12.2010 questo per l'anno 2009 poi nel 2010 sarà fino al 31.12.2011. Grazie
CREATE TRIGGER T_CREDITO_RECUPERI_INSERT_TRIG ON [dbo].[T_COD_CREDITO_ORE_PERSONALE]
FOR INSERT
AS
DECLARE @nDataFine AS INT
DECLARE @AppoData AS DateTime
SELECT @nDataFine=nDataInizioCredito FROM T_COD_CREDITO_ORE_PERSONALE
WHERE IdCodCreditoOre IN (SELECT IdCodCreditoOre FROM INSERTED)
EXEC SP_NUMBER_TO_DATE @nDataFine , @AppoData OUTPUT
SET @AppoData=DATEADD(DAY , 365 , @AppoData)
EXEC F_DATE_TO_NUMBER @nDataFine OUTPUT, @AppoData
UPDATE T_COD_CREDITO_ORE_PERSONALE SET nDataFineCredito=@nDataFine
WHERE IdCodCreditoOre IN (SELECT IdCodCreditoOre FROM INSERTED)
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mer 22 apr 2009 - 23:40
>Questo è il listato
Non mi sembra di averti chiesto il codice T-SQL del trigger: "Puoi postare un esempio completo con la struttura della tabella (CREATE TABLE), alcune righe di prova (INSERT INTO), la logica ed il tipo di trigger che vorresti creare ed il risultato desiderato?"
>come vedi posso agire sui giorni
Che significa "puoi agire"?
> SELECT @nDataFine=nDataInizioCredito FROM T_COD_CREDITO_ORE_PERSONALE
> WHERE IdCodCreditoOre IN (SELECT IdCodCreditoOre FROM INSERTED)
E se INSERTED contenesse 327896592348652349876 righe? Valorizzaresti la variabile locale @nDataFine con il valore della colonna nDataInizioCredito relativo all'ultima riga!
> EXEC SP_NUMBER_TO_DATE @nDataFine , @AppoData OUTPUT
Che fa questa sp?
> EXEC F_DATE_TO_NUMBER @nDataFine OUTPUT, @AppoData
Che fa questa sp?
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
minucci
Profilo
| Newbie
8
messaggi | Data Invio:
ven 24 apr 2009 - 09:30
1015_Ripara Ore di Recupero T_CREDI
Ti allego il file che mi hai richiesto in modo dettagliato. Grazie in anticipo
Ti allego poi il TRIGGER che già ti avevo postato :
CREATE TRIGGER T_CREDITO_RECUPERI_INSERT_TRIG ON [dbo].[T_COD_CREDITO_ORE_PERSONALE]
FOR INSERT
AS
DECLARE @nDataFine AS INT
DECLARE @AppoData AS DateTime
SELECT @nDataFine=nDataInizioCredito FROM T_COD_CREDITO_ORE_PERSONALE
WHERE IdCodCreditoOre IN (SELECT IdCodCreditoOre FROM INSERTED)
EXEC SP_NUMBER_TO_DATE @nDataFine , @AppoData OUTPUT
SET @AppoData=DATEADD(DAY , 90 , @AppoData)
EXEC F_DATE_TO_NUMBER @nDataFine OUTPUT, @AppoData
UPDATE T_COD_CREDITO_ORE_PERSONALE SET nDataFineCredito=@nDataFine
WHERE IdCodCreditoOre IN (SELECT IdCodCreditoOre FROM INSERTED)
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
In io riesco solo a cambiare i giorni ma la nuova regola adesso è che queste ore possono essere recuperate
fino al 31.12. dell’anno successivo.
La regola che non riesco a far applicare sarebbe che le ore di recupero possono essere fatte entro il il 31/12 dell’anno successivo Ti invio questa immagine nel quale io vorrei far uscire al campo valide al la data 31.12.2010. Il prossimo anno naturalmente quando seleziono aggiungere con una data es. 24/04/2010, dovrebbe mettermi valide al 31/12/2011.
642x336
21Kb
Questa tabella e la T_COD_CREDITO_ORE_PERSONALE, che si popola dalla maschera sopra con la data settata Valido dal.
586x140
28Kb
Questa tabella e la T_COD_RECUPERI_FATTI, si popola una volta che viene scalato il servizio giornaliero con la dicitura RECUPERO ORE
551x63
12Kb
Ti allego il listato della SP F_DATE_TO_NUMBER
CREATE PROCEDURE F_DATE_TO_NUMBER
@nDate AS INT OUTPUT,
@dDate AS DateTime
AS
DECLARE @sDate AS NVarchar(50)
SET @sDate = LTRIM(STR(YEAR(@dDate)))
SET @sDate =@sDate + RIGHT( '0' + LTRIM(STR(MONTH(@dDate))),2)
SET @sDate =@sDate + RIGHT('0' + LTRIM(STR(DAY(@dDate))),2)
SET @nDate=CAST(@sDate AS INT)
GO
Inoltre ti allego il listato della SP_NUMBER_TO_DATE
CREATE PROCEDURE SP_NUMBER_TO_DATE
@nData AS INT,
@dDataOut AS DateTime OUTPUT
AS
DECLARE @sAppoData AS NVarChar (8)
SET @sAppoData = CAST(@nData AS NVarChar(8))
SET @dDataOut = CONVERT(DateTime , SUBSTRING(@sAppoData,7,2) + '/' + SUBSTRING(@sAppoData,5,2) + '/' + SUBSTRING(@sAppoData,1,4) ,103 )
GO
Ti allego anche il listato della SP_RECUPERO_ORE
CREATE PROCEDURE SP_RECUPERO_ORE
AS
DECLARE @dAppoData AS DateTime
DECLARE @nData AS INT
SET @dAppoData=GETDATE()
EXEC SP_DATE_TO_NUMBER @dAppoData, @nData OUTPUT
EXEC SP_CHECK_RIPOSI_DEL_GIORNO @nData
GO
Grazie Ciao
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !