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
Vincoli di integrità
martedì 23 settembre 2008 - 22.16
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
gommosina
Profilo
| Junior Member
82
messaggi | Data Invio:
mar 23 set 2008 - 22:16
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
8.814
messaggi | Data Invio:
mar 23 set 2008 - 22:40
>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
82
messaggi | Data Invio:
mar 23 set 2008 - 22:48
ma il mio inserimento avviene tramite caselle di testo in visual basic.
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mar 23 set 2008 - 22:51
>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
8.814
messaggi | Data Invio:
mar 23 set 2008 - 22:56
>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
82
messaggi | Data Invio:
mar 23 set 2008 - 22:58
web
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 23 set 2008 - 23:03
>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
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 !