Newsgroup: it.comp.lang.visual-basic
Titolo: Null - DB ACCESS - con DAO

Sono quasi certo che mi risponderete di no ma ci provo ugualmente.
Coi DBF e programmi in clipper i campi numerici venivano automaticamnte
impostati a Zero per i record aggiunti se il campo non veniva trattato.
Così pure per i campi stringa inizializzati a "".
Ora mi ritrovo con un  data base ACCESS ricopiato da una serie di DBF.
Già ho sbattuto il naso sul fatto che tutti i campi (sicuramente per mia
inefficenza) mi sono stati impostati come obbligatori e sono quindi
obbligato a trattarli tutti quando faccio delle aggiunte.
Poi ora affronto il problema, per i records già presenti, di un sacco di
valori Null che mi generano errore.
Domanda (o vana speranza):
Non c'è proprio modo, che ne so' qualche impostazione generale, per ricevere
uno 0 o uno "" a seconda del caso invece dell'odioso Null. ?
Prevedo mi risponderete di no e quindi vado oltre.
Con le stringhe ho risolto aggiungendo il famoso & ""
Per i numeri avevo provato a fare qualcosa del genere:
VariabileDouble = NomeFunzione ( RS!NomeCampo)
All'interno della funzione volevo testare se il valore era Null avrei
restituito 0.
Però mi sono piantato perchè non sono riuscito a trovare il modo giusto di
passare l'argomento.
Voi come avete fatto per evitare una struttura come segue:
VariabileDouble = 0
If Not IsNull ( RS!NomeCampo) then
    VariabileDouble = RS!NomeCampo
End If
... che ripetuta 50 volte per ogni tabella è una vera rottura.
Grazie e saluti, Sauro

 VariabileDouble = NomeFunzione ( RS!NomeCampo)
Per le cifre prova (ho provato con una variabile Variant uguagliata a Null,
non con un campo di database a valore Null) con:
variabile=Val(RS!NomeCampo & "")

 End If
allora ho agito in 2 modi : un db "abbastanza statico" l'ho creato e
convertito i null con spazi o 0 con le query di aggiornamento di access cosi
se come hai detti i campi sono ad immissione obbligatoria stai certo che non
ritorverai valori null nel tuo db a meno che' non li inserisca tu da codice
!!!
2° serie di DB che si auto ricreano una volta ogni 3gg e quindi ogni 3gg mi
ritrrovo con valori null ...
ho fatto una semplice func che poi ho allargato e riempito di features...
text1.text = myFormat(valoreIn,valoreOUT di defoult + altre cosucce...)
il cuore della func e' l'utilizzo della IsNull come hai fatto tu in pratica
per esempio la chiamata di sotto mi da una stringavuota e non null che
scoccia ed e' diverso !
Text1.text = myFormat(null)
oppure
Text1.text = myFormat(null,vbnullstring)
vbnullstring lo tengo come valore di default !
Guarda una volta fatta la userai all'infinito ^_^
-- 
<Gigio2K>
Sito Comune
Nokia -> I.T.H.N. -> 
http://www.ithn.it/
VB -> I.C.L.VB -> 
http://www.it-lang-vb.net/

 variabile=Val(RS!NomeCampo & "")
Proverň.
Grazie, Sauro

 Guarda una volta fatta la userai all'infinito ^_^
Per la verità, non ho capito.
Quando ho cercato di fare una funzione come questa:
Public Function SeNullRitornaZero (Campo as RecordSet) as Double
ecc.
Il programma generava un errore nel caso in cui Campo fosse Null.
Potresti postare la tua myFormat per favore?
Grazie e saluti, Sauro

 ... che ripetuta 50 volte per ogni tabella è una vera rottura.
  VariabileDouble = 0 & RS!NomeCampo '* Per i campi numerici
  VariabileStringa = vbNullString & RS!NomeCampo '* Per i campi stringa
Ciao
--------------------------------
Inviato via 
http://usenet.libero.it

 Inviato via 
http://usenet.libero.it
Grazie, Sauro

Ciao, Sauro

 Potresti postare la tua myFormat per favore?
Guarda li ho in office , cmq andando a braccio potrei dirti :
che per fare il tuo basterebbe :
Public Function SeNullRitornaZero(ValoreIn as VARIANT)as Double
    if isnull(valorein) then
        SenullRitornaZero = 0
    else
        SenullRitornaZero = valorein
    endif
end function
cmq per funzioni semplici dovrebbe valere anche il metodo di lupo con :
ret = Rs.campo & vbnullstring
per trasformare i campi nulli in campi vuoti
oppure
Ret= Rs.campo + 0
 _DOVREBBE_ convertirti il null in 0 (Spero)
io ho sviluppato una func che uso molto in varie parti del codice in pratica
e' tipo :
myFormat(ValoreIn,[ValOut def = vbnullstring], [Precedente],[Successivo]
l'ho accrocchiata per far in modo che precedente e successivo vengano prese
solo se il valorein non e' vuoto cioe' quando e' null o Zero o ""
in pratica la uso per creare le query del tipo
"Where X = 1 and y = 2 And ..."  e sia per salvare dati nel db che
visualizzarli tipo :
txtCognome.text = myFormat(data1.recordset[campo])
non e' standard ma e' accrocchiata a modo per 2 programmi simili che sto
portando avanti in ditta tutto qui !
