Newsgroup: it.comp.lang.visual-basic
Titolo: Campo nullo

C'č qualche anima pia che mi spiega come inserire un valore nullo in un
campo, sia esso data, string, memo ecc.
"Uso ADO"
grazie
VV

 "Uso ADO"
Presumo che tu usi quindi un recordset ADO...
Cautelati che:
1- Il database accetti il campo nullo...
2- Il recordset non sia read-only...
Then
recordsetname.fields(fieldname) = null
                Ciao
                    Allanon

recordsetname.fields(fieldname) = null
Ho il medesimo problema. Cosi' funziona senz'altro, ma a questo punto mi
pare si debba rinunciare ad avere caselle di testo direttamente legate a
campi. Io ho la necessita' di attribuire un valore nullo a campi numerici,
nel caso in cui, nella corispondente casella di testo della maschera di
immissione, sia stata messa una stringa vuota. Se lo lascio fare
automaticamente da VisualBasic mi da un errore di conversione di tipo.
Ho provato anche pasticciare con la proprieta' DataFormat.NullValue, che
sembrerebbe fatta apposta per questo scopo, ma in fase di progetto mi dice
"Proprieta' DataFormat non supportata per la fonte dei dati (DataSource)",
e in esecuzione sembra ignorare completamente la proprieta', pur non
dandomi errore quando le assegno un valore.
Capisco, naturalmente, che posso assegnare direttamente un valore nulla al
campo del recordset (il database sottostante, Access, accetta valori
nulli), ma in questo modo perdo (o sono costretto a duplicare) il
meccanismo di assegnazione automatica dei controlli legati a dati. Mi pare
quanto mai seccante.
Avevo pensato anche di tagliare la testa al toro e utilizzare, come si
faceva una volta in dBIII, un campo carattere, ma spererei che oggi, 6
luglio 2001, ci fosse qualche sistema un po' piu' pratico.
Ciao.

quanto mai seccante.
Probabilmente e' questione di abitudini, pero' :
1. controlli associati:
bisogna aprire la finestra delle proprieta' di ogni controllo per specificare il campo 
cui associarlo, e tutte le rogne relative a conversioni di formato (nulli, booleani, date, numeri,
ecc.); l' uso di Find & Replace sul codice non sempre e' efficace in questi casi;
2. controlli non associati:
ci si deve scrivere due piccole banali sub (una per leggere e l' altra per scrivere) 
in cui vengono copiati  i valori tra i controlli ed il recordset, operando tutte le
conversioni del caso; Find & Replace sul codice funziona sempre;
Con la soluzione 2 i problemi tendono a zero.
ciao, hal

Con la soluzione 2 i problemi tendono a zero.
Non so che cosa intendi con "Find & Replace", ma per il resto credo di
essere d'accordo con te. Il problema pero` e` che il codice su cui devo
intervenire non e` mio, c'e` una quantita` di maschere tutte create
dinamicamente, e dovrei innanzi tutto capirci qualcosa per individuare dove
esattamente mettere le due piccole banali sub e come scriverle.
Speravo semplicemente che ci fosse una soluzione 3 che mi potesse evitare
tutto questo (trascuriamo, perche' evidentemente non pertinente, il fatto
che altri ambienti di sviluppo hanno risolto il problema del trasferimento
dei dati tra database e applicazione in modi assai piu` razionali che non
VisualBasic; tanto io questo ho e con questo devo lavorare).
Ciao.

tanto io questo ho e con questo devo lavorare).
idem ;-)
ciao, hal