Newsgroup: it.comp.appl.access
Titolo: Null o Empty

Alcuni testi dicono che empty è una variabile non inizializzata altri lo 
dicono del Null.
Comunque Empty non è  Null nè zero nè una stringa lunghezza zero ( ""). Null 
è quando il valore è mancante o sconosciuto.
Mi potreste aiutare ad avere una definizione più netta? In sostanza qual'è 
la differenza?
Grazie a tutti. 

 wrote in message 
news:46003116$0$811$4faf...@reader5.news.tin.it...

Secondo me la differenza nemmeno la conosce il team che ha
sviluppato Access.
Anche perché le definizioni non sono uguali se considerate con
riferimento a una variabile, un controllo di form, un campo di
tabella, un'espressione SQL e forse anche a qualcos'altro che
ora mi sfugge.
Da una parte funziona con IsNull() dall'altra con Is Null, da
un'altra ancora con  =Null.
Io vado un po' a tasto e a sperimentazione e ormai mi sbaglio
di rado pur dovendo ammettere che non conosco
l'esatta definizione.
Vediamo se qualcun altro ha più chiare le idee.
Bruno 

 ha scritto nel messaggio 
news:46003116$0$811$4faf...@reader5.news.tin.it...

Empty si applica a variabili di tipo variant (Dim Pippo as variant) che non 
sono state inizializzate (come per esempio queste: Pippo = True; Pippo = 
123; Pippo = Date()). Nel caso in cui la variabile non è inizializzata come 
gli esempi tra parentesi, la variabile restituisce 0 (zero) e non Null o "". 
Come vedi c'è molta differenza.
Per sapere se una variabile è stata inizializzata si può ricorrere alla 
funzioane IsEmpty che, nel caso la variabile sia stata inizializzata, 
restituisce True.
"Null" indica "dati mancanti" oppure "dati sconosciuti" in un campo.
Bisogna però aggiungere che una variabile di tipo variant può restituire un 
valore Null ma questo avviene se si attribuisce un valore Null alla 
variabile in modo esplicito o come conseguenza di una operazione che 
restituisce Null.
Per fare un esempio se la variabile Pippo è stata dichiarata come Variant e 
poi scrivi Pippo = 1234 vuol dire che la variabile è stata inizializzata e 
non potrà mai restituire Empty (0); se poi scrivi che Pippo = #01/04/2007# e 
questo lo fai dopo altre operazioni e dopo aver già scritto che Pippo = 
1234, allora Pippo restituisce Null perchè la variabile non contiene dati 
validi, infatti avevi già detto che Pippo era = 1234. Se però dopo le 
operazioni scrivi che Pippo è =  4321, allora tutto funziona perchè avrai 
riassegnato alla variabile un valore dello stesso tipo di dati.
Spero sia più chiaro.
Ciao, Carlo 

 validi, infatti avevi giŕ detto che Pippo era = 1234.
Ma dai?
non ci credo, mo devo fare una prova.
ma č giusto Pippo = #01/04/2007# o intendevi Pippo = "#01/04/2007#"  ?
Antonio


Si tratta solo di esempi per far capire la differenza.
Global Pippo As Long
Public Sub ImpostaPippoEmpy()
Pippo = Empty
End Sub
Dopo questo Pippo restituisce 0 (zero)
?IsNull(Pippo) restituisce False
Questo dimostra che una variabile empty non è null
Public Sub ImpostaPippo()
Pippo = 1234
End Sub
Dopo questo restituisce 1234
Public Sub ProvaPippo()
On Error GoTo errore
Pippo = "Testo"
errore:
MsgBox Err.Number & " " & Err.Description
End Sub
Dopo questo va in errore per tipo di dati non corrispondenti.
Ora va un po' meglio!
Ciao, Carlo

 Dopo questo va in errore per tipo di dati non corrispondenti.
Beh, adesso hai parlato di variabile dichiarata long.
Prima dicevi che se era una variant e prima gli dai un numero, poi una data
ti da errore.
E questo non mi tornava
Antonio


Cosě giusto per ricordare...
"Variant" č  un tipo di dati che puň contenere qualsiasi tipo di dati a 
eccezione dei dati String a lunghezza fissa e, ovviamente, i tipi definiti 
dall'utente.
In variant ci sta bene pure l'empty e il null...
Dim Pippo
La domanda del post verteva sulla differenza tra Empty e Null.
In effetti ho usato un esempio barbino perchč Access trasforma comunque una 
data in long e se scrivo
clng(#01/01/2007#) restituisce 39083, appunto un long.
...il tutto era ovviamente un esempio per farmi capire o meglio far capire 
la differenza tra Empty e Null.
Ciao, Carlo 


Ok, adesso mi tornava.
Sai, se uno come te dice qualcosa che non torna, non ti viene da pensare "ma
che cazzarola dice", piuttosto pensi "mi sa che mi sono perso qualcosa..."
Antonio
P.S.
Va bene la cena pagata... :-P


...con immenso piacere.
Ciao, Carlo