Newsgroup: it.comp.lang.visual-basic
Titolo: Campi vuoti

mi trovo in difficoltà. Devo effettuare un controllo nel form load su tutti
i record perche mi dà un'errore se i record del database sono vuoti.Ho la
connessione ODBC.Chi mi aiutA ?

 wrote in message
x%6pa.43560$LB6.9...@news1.tin.it...

Devi controllare se sono null (isnull(campo)), se si allora muovi spazio
nella txtbox altrimenti il valore letto.
Chiedevi questo giusto?
ciao
Cap.

 Si ti ringrazio infinitamente.
potresti scendere un'attimino nei dettagli

 potresti scendere un'attimino nei dettagli
il quoooting !!!!!
cosa vuol dire "nei dettagli"? capellone è stato dettagliatissimo!

 ha scritto nel messaggio
news:vk7pa.43639$LB6.9...@news1.tin.it...


 la connessione ODBC.Chi mi aiutA ?
  Per i campi testo usa :
   Text1.text = vbNullString & rs(<tuocampo>)
  per quelli numerici :
 
    Text1.Text = 0 & rs(<tuocampo>)
Ciao
--------------------------------
Inviato via 
http://usenet.libero.it

     Text1.Text = 0 & rs(<tuocampo>)
Prego....???!!!
Quante trasformazioni implicite sono qui contemplate, con quella "&"?

 Quante trasformazioni implicite sono qui contemplate, con quella "&"?
  Parli di ottimizzazione? Sei andato fuori tema, il post non chiedeva questo!


   Parli di ottimizzazione? Sei andato fuori tema, il post non chiedeva
questo!
Non ho parlato di ottimizzazioni, ma di trasformazioni implicite. Errate,
per giunta.
Tu sei un robot, dai, dimmi che sei un robot!

 Tu sei un robot, dai, dimmi che sei un robot!
  11111111111111111111111111111111


 ha scritto nel messaggio
news:b83a16$5pdcj$1...@ID-174464.news.dfncis.de...


 bye bye
Ho cercato di essere preciso e sintatticamente corretto, pur senza essere
scortese, mi pare.

 togliere!
Prima ho detto con precisione cosa non mi piace, e non č lo 0

 Prima ho detto con precisione [cut]
Sabato ho intavolato una seria discussione con un muretto in cemento dietro
casa.
Ciao
Alberto

 dietro casa.
E' capitato anche a me. Quando gli ho detto "Ahò, ma allora
sei de coccio", mi ha risposto: "No, è che ho una volontà granitica".
Bye, G.

 sei de coccio", mi ha risposto: "No, è che ho una volontà granitica".
  Immagino ti riferissi a Lupo perchè io con te non ho mai avuto il piacere di
uno "scambio" di idee.
 Se non fosse così allora rammentami il post.
Ciao


  Se non fosse così allora rammentami il post.
Ok, aggiudicato: è di granitico coccio.

 Ok, aggiudicato: è di granitico coccio.
  Lupo ma che vuoi? Io sto Paperino non so manco so da dove viene fuori e cmq
semettela di spalleggiarvi a vicenda che siete patetici e ridicoli.
Tu hai postato per il solo piacere di iniziare una polemica e basta, tanto
che ancora stiamo aspettando il tuo suggerimento all'argomento del post.
Tu che fai tanto il "precisino" ( e non capisco a che titolo ) illumina
questo NG con le tue mirabolanti trovate da programmatore incallito e
smaliziato.
Fai crescere la mia mente da imbecille ( come tu stesso, da maleducato quale
sei, mi hai definito ).


 sei, mi hai definito ).
Ma lo vedi che non ti metti mai in discussione?!
Io ho discusso di VB, con tutti gli elementi per parlarne tecnicamente.
Tu non hai speso un solo istante per chiederti se avevo torto o ragione.
Questo è un NG e a più d'uno piace partecipare per essere d'aiuto, oltre che
imparare, sempre. Una cosa del genere andava, secondo me, sottolineata per
evitare che il lettore meno esperto possa considerarla per buona. Che poi
"funzioni" lo stesso (grazie alla tolleranza di VB), è un altro discorso
che, però, non cambia di una virgola la questione.

 che, però, non cambia di una virgola la questione.
  No, tu non vuoi essere d'aiuto, ti piace sentirti "superiore" con i poverini
che sono agli inizi con la programmazione.
Quando non ti riesce inizi con sterili polemiche e morali informatiche che
lasciano il tempo che trovano.
Ma questa è la mia opinione ( educata ) su di te ed è puramente personale.
Rimango in attesa di delucidazione riguardo
  Text1.Text = 0 & 123
Perchè questo è il succo del post e se è vero che partecipi per essere
d'aiuto spega a colui che ha iniziato il post ( poverino si sentirà pure in
colpa... ) perchè il mio suggerimento ( SUGGERIMENTO, non SOLUZIONE ) è
scorretto in maniera sintetica e analitica come si addice ad un vero ed
esperto programmatore.


*nk6310i* ha scritto delle cose:
Guarda, per la questione tecnica basta aprire la guida, Indice e impostare
&, Invio e cliccare su & (operatore) poi leggere la prima riga. Per il resto
mi son proprio stufato.


  Ero certo che avresti risposto cosi!
  Cmq io non leggo solo le prime righe ( fonte MSDN online )
 & Operator
  Used to force string concatenation of two expressions. ( piu avanti la
definizio di espressione )
Syntax
  result = expression1 & expression2
  The & operator syntax has these parts:
  Part Description
 
  result Required; any String or Variant variable.
  expression1 Required; any expression.
  expression2 Required; any expression.
 Any expression???? Ma alla Microsoft lo sanno che tu non sei d'accordo
Lupo??? Peccato che io non abbia iniziato a frequentare questo NG quando
lavoravo per Microsoft Italia altrimenti ti avrei segnalato...
Remarks
If an expression is not a string, it is converted to a String variant. The
data type of result is String if both expressions are string expressions;
otherwise, result is a String variant. If both expressions are Null, result
is Null. However, if only one expression is Null, that expression is treated
as a zero-length string ("") when concatenated with the other expression.
Any expression that is Empty is also treated as a zero-length string.
expression
A combination of keywords, operators, variables, and constants that yields a
string, number, or object. An expression can be used to perform a
calculation, manipulate characters, or test data.
In ogni caso dal momento che la mia soluzione non č corretta, credo che tu
debba postare la tua altrimenti, confermi la mia ipotesi che il tuo
intervento si stato spinto solo dal piacere di iniziare una polemica inutile
( tanto che Enrico lo ha capito subito ).
 Cmq devo ringraziati perchč ogni volta che leggo un tuo intervento capisco
sempre di piů quali sono gli errori da evitare...
Senza rancore.


     Text1.Text = 0 & rs(<tuocampo>)
meglio text1.text = 0 + rs(<tuocampo>)
altrimenti con un valore di <tuocampo> = 100 avrei "0100" nella text
anziche' "100" non credi ?
-- 
<Gigio2K>
Sito Comune
Nokia -> I.T.H.N. -> 
http://www.ithn.it/
VB -> I.C.L.VB -> 
http://www.it-lang-vb.net/

 Senza rancore.
Puoi starne certo. Il mio sacchetto rosso ha una croce in meno.

 Ma l'han capito anche i niubbi: 0 + rs!tuocampo
 
 Sono certo che tu stia scherzando, altrimenti è inutile continuare!
 Solo che un niubbo potrebbe crederci seriamente non è bello quello che hai
scritto.
 Ti ricordo che il suggerimento era :
  Text1.text = 0 & rs(<tuocampo>) ' <--- suggerimento


  Se non fosse così allora rammentami il post.
No, in effetti nel mio archivio non ci sei, tranne nel post di ieri sul
quoting a "lemure del madagascar". :-)
Bye, G.

   Text1.text = 0 & rs(<tuocampo>) ' <--- suggerimento
Tuocampo e' numerico  p.e. = 123
cosa ci va a finire in Text1.text ?
Per me ci finisce la stringa "0123" con il + ci sarebbe finito "123" non
credi ? Non voglio entrare in nessuna polemica ma qui se passa un niubbo
rischiate di stravolgergli l'esistenza, prima di usare un "+" o una "&" ci
ripensera' 3000 volte ^_^

 ripensera' 3000 volte ^_^
 Vero, però il post iniziale chiedeva un suggerimento su come trattare i
campi NULL e
  Text1.Text = 0 + rs(<tuocampo>)
 da errore mentre
    Text1.Text = 0 & rs(<tuocampo>)
 no!
Per il problema dello 0 davanti o addirittura per i campi negativi, il
problema si risolverebbe con
   Text1.Text = vbNullString & rs(<tuocampo>)
ma questo era già stato detto nel momento in cui Lupo ha sollevato problemi
riguardo :
 1) l'uso della dicitura <tuocampo> ( per altro da me giustificate )
 2) l'uso della soluzione "Text1.Text = 0 & rs(<tuocampo>)" obiezione tra
l'altro sollevata non tanto per il problema dello 0 o dei numeri negativi ma
per :
Testuali parole di Lupo
  <<Prego....???!!!
   Quante trasformazioni implicite sono qui contemplate, con quella "&"?>>
 
 Il mio era solo un suggerimento che andava adattato contestualmente all'uso
che se ne doveva fare, se ad esempio il campo poteva contenere solo numeri
positivi allora
 Text1.Text = 0 & rs(<tuocampo>)
poteva anche andare bene, lo 0 davanti non cambia significato al numero e
può essere sempre tolto con una val() o con una right$ ad esempio o come si
vuole.
Ciao


 > sempre di più quali sono gli errori da evitare...


 ha scritto nel messaggio
news:b865ne$6huti$1...@ID-191593.news.dfncis.de...


 c) non hai caricato la "Ironia.dll".
  Nooo, quella è sempre in "memoria" te lo assicuro, in pratica fa parte del
"Kernel"
  ;-)
 
Ho chiesto il chiarimento perchè con molta probabilità Alberto si riferiva a
me con il suo post.


 anziche' "100" non credi ?
  No, perchè se il campo e NULL da errore !


    Text1.Text = vbNullString & rs(<tuocampo>)
gia' quindi 0 & ... devi ammettere che e' na schifezza ^_^
quindi per ora tengo valida vbnullstring & camponull, tanto nell'esempio si
converte sempre inplicitamente il valore in una stringa quindi se e' un
campo numerico e' meglio averlo vuoto (vbnullstring) che con lo 0 perenne
davanti !


   No, perchè se il campo e NULL da errore !
Azz vero , ho sbagliato , pero' che strano , perche' se a "nulla" posso
aggiungerci una stringavuota non posso Sommarci uno 0?
0 + null dovrebbe dare 0 e non null ... ma forse e' da intendere come 0 +
"qualcosa che non esiste" e in matematica da errore !!!


 0
Vero anche questo (per correttezza, scriviamola come originariamente
proposta: 0 & null, senza 0 fra virgolette, dunque, anche se il concetto di
base non cambia molto), ma se al posto di "Null" si torna al valore di un
campo numerico (potenzialmente pari a Null) non ha alcun senso: Si chiede a
VB (in modo assolutamente coerente con la guida): accodami a 0 un altro
valore. Accodami (insisto!) non sommami. Quel che ne nasce, infatti, è una
_stringa_ (o una Variant String), non un _numero_ coerente con la tipologia
(numerica) del campo.
Mi astengo dal sottolineare cosa produca in Text1.text: 0 & 123 oppure 0
& -1.23
Bene.
Vero che 0 + rs!tuocampo non risolve il problema del Null quando il campo
debba essere assegnato alla proprietà Text di un TextBox (ma chi l'ha mai
scritto/chiesto?), ma variabile_variant=0+rs!campo non genera errore (ho
detto variabile_variant!).
Certo, variabile_variant vale ancora Null se rs!campo vale Null.
La mia "mini" verifica (evidentemente insufficiente) era su un Format, che,
paradossalmente, pare essere anche la soluzione.
Si provi a fare Text1.Text = Format ( 0 + rs!campo), con qualsiasi valore di
rs!campo, Null compreso. Per semplicità si faccia:
variabile_variant = quel che si vuole (ma col . come separatore interi
decimali, Null e Empty compresi)
Text1.Text = Format ( 0 + variabile_variant)
Si noterà (lo 0 + presenta solo una minima differenza in caso di Empty,
quindi si può omettere) che chi ha scritto la Format ha posto più cura nella
valutazione del dato di input di quanto hanno fatto quelli che hanno scritto
la Str, CStr o la semplice soluzione di minime espressioni algebriche,
ovviamente numeriche.
Conclusione? Partendo dal presupposto che rs!campo sia numerico:
Io ho sbagliato proponendo Text1.Text = 0 + rs!campo che provoca errore se
rs!campo vale Null. L'errore è stato quello di non provare su un Text1.Text
(perchè, lo ribadisco anch'io,  giusto per estrema precisione, nessuno
l'aveva chiesto).
Altri hanno sbagliato (di più, di meno? A posteri l'ardua sentenza...)
proponendo Text1.Text = 0 & rs!campo perchè è vero che non provoca errore
(vogliamo parlarne? Ok, ma come si giustifica senza affidarsi all'alcoolismo
cronico della mamma?), ma genera risultati inconcepibili, ben peggiori del
problema che si voleva risolvere, sarebbe come dire stringa = Lupo + sedia e
mi sta bene qualunque cosa arrivi. Esagero? Bene, allora: Totale = Pere +
Mele. Che va bene solo se si tratta di fare una marmellata, non va bene in
nessun altro caso. Nel caso non sia chiaro il concetto (ed escludendo la
marmellata), chiedo: Qual è l'unità di misura di Totale?
La soluzione _vera_? Chiedere a M$.
La mia, alla luce dei fatti, è solo:
variabile_variant=rs!campo
Text1.Text = Format (variabile_variant)
No, non dirò mai che mi piace, però va e produce i risultati più vicini alla
coerenza cui altri avrebbero dovuto porre attenzione, ben prima.
Alla fine (come qualcuno ha proposto), tanto valeva fare:
Text1.Text = IIf(IsNull(rs!campo),"quello che vuoi",rs!campo)
No!, non lo provo con un campo di database, ho provato solo (al posto di
rs!campo) con una variant posta/non posta a Null... Certe ulteriori novità
mi farebbero solo versare un altro goccio...
PS che nulla c'entra: Ho un rughino, ma non credo che nemmeno i migliori
indagatori della rete (qui ben presenti) potrebbero dimostrarlo...

 "qualcosa che non esiste" e in matematica da errore !!!
Se hai la pazienza di leggere quanto ho appena scritto vedrai come sia
possibile, con mille parole in più, dire la stessa cosa.
Ora (non prima di dire che, CAZZO se il Nulla è il Nulla, lo è anche per le
stringhe, Maremma maiala, il richiamo alla matematica sarebbe solo una
spudorata scusa) mi concedo anch'io un po' di _sana_ sintesi: In M$ bevono
come una F1 che compie 8000 partenze di fila.

 indagatori della rete (qui ben presenti) potrebbero dimostrarlo...
  E' la vecchiaia...
 
Sempre senza rancore


 Sempre senza rancore
Ma struzzo!
Ok, questo sarà probabilmente il mio ultimo post qui perchè ora più d'uno si
scaglierà, giustamente, contro di me e i miei modi, dimenticando forse
(certo non pretendo alcuna giustificazione) che sono cambiato da qualche
settimana, ma a te dell'emerito stronzo non lo leva nessuno. Sei uno stronzo
elevato al fattoriale di overflow. Chissà se darai errore.

 sintesi: In M$ bevono come una F1 che compie 8000 partenze di fila.
eh eh , ricordati che esiste sempre : 
http://snurl.com/17wj


 MIA! ).
:-)
Alberto

Comunque, per correttezza, il problema è VB.. ovvero, io arrivo dal C.. dove
dubbi del genere di quelli del post non possono certo venirti visto che sei
obbligato a trattare stringhe con stringhe o numeri con numeri.. (cast..)..
adesso credo che anche cn .net sarà così, e il NULL non esisterà
neanche più. VB è effettivamente troppo poco protetto e il casting implicito
dei tipi dati che fa a volte rischia di non farti considerare propriamente
tutti i tipi di errore che potresti incontrare..
bye
Enrico

 sintesi: In M$ bevono come una F1 che compie 8000 partenze di fila.
Mi sembra che in tutto questo sfugga una cosa fondamentale:
un campo NULL non è un campo che vale 0, e neppure una stringa vuota.
Questo va tenuto sempre a mente.
Se io dico che una cosa costa 0, significa che è gratis.
Se nel campo "Prezzo" ci metto NULL, significa che NON SO quanto costa.
Se io dico che i caratteri ricevuti da una periferica sono vbnullstring,
significa che ho ricevuto una stringa vuota.
Se nel campo "Ricezione" ci metto NULL, significa che NON SO cosa ho
ricevuto, o che non ho proprio ricevuto.
Quindi, voi state cercando un modo semplice di fare una cosa sbagliata da un
punto di vista logico, e per giunta vi incazzate perchè non esiste qualcosa
di automatico.
Che invece esiste, perchè potete usare IIF(Isnull in VB (come giustamente
suggerito da qualcuno che non ricordo in questo stesso thread), o ancora
meglio (ma scomodo, lo riconosco), potete usare ISNULL( o COALESCE(
direttamente nell'SQL.
Sostanzialmente, voi volete che a un campo numerico NULL venga assegnato il
valore 0 (visto che volete che appaia 0 nel textbox).
E se invece, per la logica applicativa, un valore NULL dovesse essere
visualizzato come, che so, -999?
Tutti gli automatismi che in qualche modo state cercando, verrebbero a
cadere.
Mentre, una cosa fatta con un po' di criterio, ossia con un IIF(Isnull o con
un Coalesce(, può sostituirti NULL con qualunque cosa.
Caso classico, il LEFT OUTER JOIN. Se ho una serie di record, e devo
ricavare la descrizione da una tabella anagrafica, io preferisco utilizzare
il Left Outer anzichè l'Inner, per evitare che articoli 'monchi' di
descrizione per qualche motivo, spariscano per sempre pur rimanendo
quantitativamente nelle giacenze ecc....
Quindi, nel campo 'descrizione' non metto direttamente la descrizione presa
dalla tabella, ma una cosa del tipo:
Coalesce(tb_anagr.Descrizione,'Descrizione articolo non inserita') As
Descrizione
Ciao
Alberto

 cadere.
 
  Esatto, proprio per questo quello che io avevo indicato l'ho classificato
suggerimento e non soluzione.
 Suggerimento ( almeno per come lo considero io ) č qualcosa che ti mette
sulla strada di una possibile soluzione ( una o piů di una ) contestualmente
al problema che si ha.
