Vincoli di integrità

martedì 23 settembre 2008 - 22.16

gommosina Profilo | Junior Member

Salve, ho un problema.
vorrei sapere su un campo tipo "codice fiscale" come faccio a comunicare all'utente che immette i dati
che deve essere per forza di 16 cifre, oppure su un campo data, come posso definire il formato?grazie mille

alx_81 Profilo | Guru

>Salve, ho un problema.
Ciao!

>vorrei sapere su un campo tipo "codice fiscale" come faccio a
>comunicare all'utente che immette i dati
>che deve essere per forza di 16 cifre,
Per fare un controllo formale, puoi spostarti sul lato applicativo (usando ad esempio dei regular expression validator di .net). Se vuoi comunque tenere ben saldo il controllo del dato sul tuo DB, il check sulla lunghezza non basta. Poichè l'utente potrebbe inserire 16 caratteri casuali. Comunque sia, per imporre la lunghezza del tuo valore inserito, puoi fare un vincolo, anche utilizzando il designer:


718x384 30Kb


Ogni qual volta l'utente mette un valore con un numero di caratteri diverso da l'operazione genererà un'eccezione che poi puoi facilmente gestire applicativamente (ad esempio coi classici blocchi Try.. Catch di molti linguaggi di programmazione)
Se vuoi gestire un controllo su db della forma del codice fiscale, devi crearti una funzione che lo calcoli in base agli altri campi, in modo che il valore sia veramente controllato alla perfezione. In tal caso, ti consiglio una funzione CLR, compilata su SQL Server e da utilizzare in una tua stored procedure di inserimento.

>oppure su un campo data,
>come posso definire il formato?
La data in sql server (se stai parlando di quel RDBMS) può essere di due tipi DATETIME e SMALLDATETIME. Le differenze stanno nella precisione e nel range di date disponibili.
Se vuoi ottenere in output, suoi tuoi presentation layer, nei tuoi layout, una data formattata in maniera particolare, puoi usare la funzione CONVERT di SQL Server, oppure, ancora meglio, gestire il formato sul livello applicativo (con i formatter, con il metodo .ToString() di .net, ecc).

La reference a CONVERT è qui:

CAST AND CONVERT
http://technet.microsoft.com/it-it/library/ms187928.aspx



>grazie mille

--

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

gommosina Profilo | Junior Member

ma il mio inserimento avviene tramite caselle di testo in visual basic.

lbenaglia Profilo | Guru

>ma il mio inserimento avviene tramite caselle di testo in visual
>basic.
Allora poni la domanda nell'apposita stanza del forum:
http://www.dotnethell.it/forum/Windows-Forms.aspx o http://www.dotnethell.it/forum/Visual-Studio-6.aspx

Inoltre questo non significa che tu non debba eseguire i controlli formali ANCHE a livello di database!!!

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

alx_81 Profilo | Guru

>ma il mio inserimento avviene tramite caselle di testo in visual basic.
Visual Basic è il tuo layer applicativo..

Devi decidere come muoverti:
- Fare solo controlli applicativi (sconsigliato perchè non rende consistente il dato su db)
- Fare solo controlli su DB (spostando il check sull'errore su database ritardando il feedback)
- Fare entrambi (in modo che se lato applicativo non gestisci un errore, ci pensa il db)

Che RDBMS hai?
Che tipo di applicazione stai scrivendo? Web o Windows?


--

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

gommosina Profilo | Junior Member

web

alx_81 Profilo | Guru

>web
Quindi Visual Basic .Net.
A mio avviso devi fare i controlli sia lato applicativo (RegularExpressionValidator sia lato client che lato server) sia su db (vedi le logiche indicate nei post precedenti)

Qui di seguito alcune reference..

RegularExpressionValidator Control
http://msdn.microsoft.com/en-us/library/eahwtc9e.aspx

Page.IsValid Property
http://msdn.microsoft.com/en-us/library/system.web.ui.page.isvalid.aspx
(per controllare anche lato server)

PS: La prossima volta la domanda sul controllo lato applicativo, postala nella stanza corretta come dice Lorenzo (la stanza più indicata è ASP.Net 2.0 o 1.0/1.1).
Ciao!
--

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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5