Insert con un max di 10 righe.

lunedì 17 agosto 2009 - 15.29

86Marco Profilo | Expert

Salve,
per la scuola per la quale lavoro mi è stato chiesto di implementare una piccola piattaforma per poter fare iscrivere gli studenti a delle sessioni d'esame.
Avrei già una mezza idea su come impostare il tutto ma vorrei una vostra esperta osservazione.

La piattaforma prevede una scheda di iscrizione che compilerà l'utente e un controllo calendar che gestisce le date direttamente pescate dal database condiviso.

L'unica cosa che chiedo è questa:
mi è stato detto che le ogni sessione d'esame può avere al max 10 iscritti, ciò significa che dovrei implementare una procedura per far si che il database non accetti altre iscrizioni se in quella data sono già 10 prenotazioni effettuate.

Sapete dirmi come poter gestire al meglio il tutto e soprattutto questa ultima parte?
Grazie mille.

alx_81 Profilo | Guru

>Salve,
Ciao!

>L'unica cosa che chiedo è questa:
>mi è stato detto che le ogni sessione d'esame può avere al max
>10 iscritti, ciò significa che dovrei implementare una procedura
>per far si che il database non accetti altre iscrizioni se in
>quella data sono già 10 prenotazioni effettuate.
>Sapete dirmi come poter gestire al meglio il tutto e soprattutto
>questa ultima parte?
Puoi seguire due strade a mio avviso:

1 - segnare un contatore per ogni esame e quindi avere una tabellina in cui il contatore incrementa ad ogni inserimento (ed eventualmente decrementa ad ogni cancellazione). In questo modo, prima di inserire controllerai il contatore che non abbia superato il tuo valore di limite iscritti.

2 - se i dati sono pochi, raggruppare per esame e contare il numero degli utenti iscritti. Se il conteggio supera il limite, ritorni un errore.

In ogni modo devi gestire la cosa programmaticamente. Se hai SQL Server una semplice Stored Procedure risolve il tuo problema, sia seguendo il primo che il secondo metodo.

>Grazie mille.
di nulla!
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

86Marco Profilo | Expert

non sono tanto bravo a scrivere stored procedure.. saresti in grado di darmi un aiuto per la creazione.
Sei veramente molto gentile.
grazie

alx_81 Profilo | Guru

>non sono tanto bravo a scrivere stored procedure.. saresti in
>grado di darmi un aiuto per la creazione.
>Sei veramente molto gentile.
Eccoti un esempio con una tabella Iscrizioni di prova, in cui troverai l'utente e l'esame.
Se non capisci qualcosa scrivi pure

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

>grazie
di nulla!
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

86Marco Profilo | Expert

Ciao, vorrei se possibile, delucidazioni su alcuni specifici passaggi.

1)COn questo setto la variabile ErrorNumber a 1 ma x quale motivo? cioè se a cosa mi servirebbe?
SET @ErrorNumber = 1


2) Con questo?
DECLARE @Errore int
SET @Errore = 0
-- esempio esame 1, 10 utenti

3) Con questo cosa faccio :D ?
EXEC dbo.proc_IscriviControlla 1, 1, @Errore OUTPUT
SELECT @Errore as Errore
EXEC dbo.proc_IscriviControlla 2, 1, @Errore OUTPUT
SELECT @Errore as Errore
EXEC dbo.proc_IscriviControlla 3, 1, @Errore OUTPUT
SELECT @Errore as Errore
EXEC dbo.proc_IscriviControlla 4, 1, @Errore OUTPUT
SELECT @Errore as Errore
EXEC dbo.proc_IscriviControlla 5, 1, @Errore OUTPUT
SELECT @Errore as Errore
EXEC dbo.proc_IscriviControlla 6, 1, @Errore OUTPUT
SELECT @Errore as Errore
EXEC dbo.proc_IscriviControlla 7, 1, @Errore OUTPUT
SELECT @Errore as Errore
EXEC dbo.proc_IscriviControlla 8, 1, @Errore OUTPUT
SELECT @Errore as Errore
EXEC dbo.proc_IscriviControlla 9, 1, @Errore OUTPUT
SELECT @Errore as Errore
EXEC dbo.proc_IscriviControlla 10, 1, @Errore OUTPUT
SELECT @Errore as Errore
-- dopo il decimo, errore = 1
EXEC dbo.proc_IscriviControlla 11, 1, @Errore OUTPUT
SELECT @Errore as Errore
GO

Nel momento in cui mi viene restituito un errore a schermo cosa mi comparirebbe?

Grazie mille.

alx_81 Profilo | Guru

>1)COn questo setto la variabile ErrorNumber a 1 ma x quale motivo?
>cioè se a cosa mi servirebbe?
è fondamentale per catturare l'errore da un'eventuale applicazione che scrivi. Ad esempio, usando ADO.Net con C# potresti dover controllare se hai ottenuto un errore per dare il messaggio "Numero massimo di iscrizioni superato per questo esame". Come puoi ben capire è molto importante.

2) e 3) sono l'esempio simulato. Imposto l'errore di partenza a 0 e poi faccio 11 chiamate, come se fossi un insieme di 11 utenti che chiamano la stored procedure.

>Nel momento in cui mi viene restituito un errore a schermo cosa mi comparirebbe?
Vedi la risposta al punto uno. Il parametro di output va interrogato lato applicativo. Se non vale 0, gestisci l'errore coi messaggi che vuoi.
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

86Marco Profilo | Expert

chiaro, anche se quella parte relative alla 11 chiamate nn ho ancora capito bene a che serve. mi sembra pero di capire che non è vitale o no??

alx_81 Profilo | Guru

>chiaro, anche se quella parte relative alla 11 chiamate nn ho
>ancora capito bene a che serve. mi sembra pero di capire che
>non è vitale o no??
Ti ripeto, è la simulazione di 11 utenti che si connettono al tuo applicativo oppure è la simulazione di un operatore che iscrive 11 utenti.
Serviva per farti vedere che chiamando 11 volte la procedura l'errore non lo avevi fino all'ultimo step (l'undicesimo).

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

86Marco Profilo | Expert

ahhh sisi perfetto.
Ora ho capito
Scusami ma le cose volevo capirle meglio :)
Grazieee

alx_81 Profilo | Guru

>Scusami ma le cose volevo capirle meglio :)
no problem, se ritieni che ti abbia aiutato, accetta il post così chiudiamo il thread.


--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
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