Gestione inserimento valori partendo da dataInizio e dataFine

domenica 03 febbraio 2008 - 16.17

squilibrio Profilo | Expert

Ciao a tutti, in una stored procedure inserisco un elemento in agenda

INSERT INTO Agenda (IDCollaboratore, startDate, endDate, title)
VALUES (@IDCollaboratore,@DataDa,@DataA,@DescrizioneFase)

questo funziona perfettamente se startDate = endDate ... ovvero se è lo stesso giorno

come posso fare in modo che se startDate < endDate mi vengano creati X differenti appuntamenti, uno per ogni giorno compreso tra starDate e endDate??


Grazie

alx_81 Profilo | Guru

>Ciao a tutti,
Ciao!

>come posso fare in modo che se startDate < endDate mi vengano
>creati X differenti appuntamenti, uno per ogni giorno compreso
>tra starDate e endDate??
Puoi avere due approcci, uno, lasciando l'inserimento così come ce lo proponi ed eseguendo un ciclo lato applicazione (diciamo dal business layer) oppure puoi decidere di effettuare un ciclo direttamente sulla stored procedure. Per il secondo caso eccoti un esempio:
USE tempdb; GO -- Creo la tabella Agenda (fittizia) CREATE TABLE Agenda ( id int identity(1,1) , descrizione varchar(20) NOT NULL , data smalldatetime NOT NULL , constraint pk_agenda primary key clustered ( id ) ) DECLARE @DaData smalldatetime , @AData smalldatetime SET @DaData = '20080101' SET @AData = '20080110' -- ciclo per la data WHILE @DaData <= @AData BEGIN INSERT INTO Agenda (descrizione, data) VALUES ('prova', @DaData) -- con la dateadd aggiungo un giorno SET @DaData = DATEADD(day,1,@DaData) END -- risultati SELECT * FROM Agenda /* id descrizione data ----------- -------------------- ----------------------- 1 prova 2008-01-01 00:00:00 2 prova 2008-01-02 00:00:00 3 prova 2008-01-03 00:00:00 4 prova 2008-01-04 00:00:00 5 prova 2008-01-05 00:00:00 6 prova 2008-01-06 00:00:00 7 prova 2008-01-07 00:00:00 8 prova 2008-01-08 00:00:00 9 prova 2008-01-09 00:00:00 10 prova 2008-01-10 00:00:00 */ -- pulizia --DROP TABLE Agenda

Personalmente preferisco demandare al business layer un'operazione come questa. Ma dipende anche dalle tue esigenze. All'interno dell'esempio ho utilizzato la funzione DATEADD, che puoi trovare sui BOL all'indirizzo http://msdn2.microsoft.com/en-us/library/ms186819.aspx

>
>Grazie
di nulla!
Alx81 =)

http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5