Discussione:
Data 01-01-1900
(troppo vecchio per rispondere)
Claudio Di Flumeri
2004-02-16 10:30:30 UTC
Permalink
Ho un form di dati (in VB.NET) nel quale c'è una casella di testo che dovrà
contenere una data. Il problema è questo: se come data inserisco 01/01/1900,
nel database SQL viene salvato il valore NULL! Il campo nel DB è di tipo
smalldatetime. Da quello che ho capito, 01-01-1900 corrisponde al valore
NULL per quel tipo, d'altronde se cerco di inserire la data direttamente
nella tabella con Enterprise Manager ci riesco. La scrittura nel DB avviene
tramite una stored procedure alla quale passo la data come parametro: in che
formato la devo specificare in modo che quella particolare data venga in
effetti salvata?
Fabiana Minardi
2004-02-16 12:45:05 UTC
Permalink
Post by Claudio Di Flumeri
Ho un form di dati (in VB.NET) nel quale c'è una casella di testo che dovrà
contenere una data. Il problema è questo: se come data inserisco 01/01/1900,
nel database SQL viene salvato il valore NULL! Il campo nel DB è di tipo
smalldatetime. Da quello che ho capito, 01-01-1900 corrisponde al valore
NULL per quel tipo,
[cut]

In realtà credo che al massimo dovrebbe corrispondere a zero, non a
Null. Null è quando non è specificato nessun dato.
Cerca qualche altro problema che ci può essere nel tuo codice. Prova a
definire in VB una variabile di tipo parametro, e col passo-passo
assicurati di averle assegnato un valore corretto.
Verifica che il type del parametro sia corretto.
Post by Claudio Di Flumeri
La scrittura nel DB avviene
tramite una stored procedure alla quale passo la data come
parametro: in che
Post by Claudio Di Flumeri
formato la devo specificare in modo che quella particolare data venga in
effetti salvata?
Prova il formato aaaammdd, o il mm/dd/yyyy, ma ci sarebbe tutto un
discorso da fare sui formati data....

Se non riesci ancora, chiedi al ng dotnet.vb

Ciao!
David
2004-02-16 13:42:04 UTC
Permalink
Post by Claudio Di Flumeri
Ho un form di dati (in VB.NET) nel quale c'è una casella di testo che dovrà
contenere una data. Il problema è questo: se come data inserisco 01/01/1900,
nel database SQL viene salvato il valore NULL! Il campo nel DB è di tipo
smalldatetime.
Ciao Claudio,
se fai una ricerca in questo ng, sull'argomento 'data e ora' troverai un
sacco di post, visto che prima o poi tutti si scontrano con questo problema!
Mi pare alquanto strano che il valore salvato sia NULL... io ho fatto delle
prove e se definisco un campo come "smalldatetime" e poi passo un valore non
valido, mi viene rifiutato l'inserimento.
Il valore NULL, che significa "nessun valore è stato definito", dipende
forse dal fatto che la tua sp non passa alcun valore al database. Perché?
Forse perché il valore che la sp dovrebbe restituire non è valido per il
campo smalldatetime, e quindi non viene restituito alcun valore. Ma
bisognerebbe vedere il codice della sp e i valori che gli sono passati in
entrata...
Post by Claudio Di Flumeri
Da quello che ho capito, 01-01-1900 corrisponde al valore
NULL per quel tipo
No, come per gli altri RDBMS, il valore NULL è un valore particolare che non
ha nulla a che vedere con qualsiasi altro valore inserito. Il valore NULL
sta per mancanza di valori inseriti, e non va confuso con il valore 'zero' o
'spazi vuoti', che sono invece valori significativi.

Se inserisci una qualsiasi data, il tuo valore può essere inserito oppure
rifiutato, in quanto non valido come smalldatetime. Se viene rifiutato, puoi
trovarti di fronte a queste possibilità:
1) se hai un valore di default, viene inserito tale valore;
2) se non hai un valore di default, resta NULL;
3) se non hai un valore di default e hai impostato il campo come NOT NULL,
l'inserimento del record ti viene rifiutato in quanto devi specificare anche
un valore valido per il campo data.
Post by Claudio Di Flumeri
d'altronde se cerco di inserire la data direttamente
nella tabella con Enterprise Manager ci riesco.
E' quindi evidente che il problema sta nel modo in cui la data viene passata
a SQL Server.
Ricontrolla la sp e verifica come passa il valore in uscita.
Post by Claudio Di Flumeri
La scrittura nel DB avviene
tramite una stored procedure alla quale passo la data come parametro: in che
formato la devo specificare in modo che quella particolare data venga in
effetti salvata?
Dai un'occhiata a questo link
http://italy.mvps.org/MVPs/lbenaglia/LorenzoBenaglia-Tip-FormatoDate.htm



Ciao

David

Loading...