Valore nullo non funzionante

mercoledì 11 settembre 2013 - 15.47
Tag Elenco Tags  Access (.mdb)

sergranero Profilo | Junior Member

Ciao a tutti, un problema probabilmente banale ( almeno per voi che ve ne intendete ) che mi sta facendo scervellando..
in una maschera ho una casella di testo Voto_01 e Voto_02
Io vorrei ottenere che cancellando il valore contenuto di Voto_01, Il valore di voto_02 venisse spostato nella casella di testo Voto_01.
Vi faccio un es. per essere + chiaro

Voto_01 --> 01-4,0
Voto_02 --> 02-4,0

Se la situazione cambia in
Voto_01 --> Nullo
Voto_02 --> 02-4,0

vorrei ottenere

Voto_01 --> 01-4,0
Voto_02 --> Nullo

per cui ho scritto

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Ciò che mi risulta è
Voto_01 --> 01-0
Voto_02 --> 02-4,0

Ho capito che il problema sta nella parte del codice
And Me.[Voto_02] = ""

ma non capisco il perchè.......
grazie
Ciao

renarig Profilo | Expert

>... ( almeno per voi che ve ne intendete ) ....
Non è proprio cosi


Comunque io farei 3 modifiche :
________________________________________________________

per valutare se un valore è Null in VBA devi fare attenzione
cerco di spiegarmi in modo molto elementare
Tu vedi 2 controlli vuoti e ti sembrano uguali, eppure

- in uno potresti avere un valore Null
( significa che nessuno ha mai scritto nulla li dentro )

- in un'altro potresti avere una stringa di lunghezza 0
( chiamiamola d'ora in poi SL0 )
( Rappresentata con "" )
( significa che c'era scritto qualcosa che è stato cancellato )

La differenza fra i 2 è sostanziale, perche nel primo non sappiamo assolutamente cosa ci sia dentro
mentre nel secondo sappiamo con certezza che non c'è niente

Ora tu vuoi che se il controllo contiene un Null oppure indifferentemente SL0 succeda qualcosa
allora scrivi:
...... If Nz(Me.Voto_01.Value, "") = "" Then ......
Significa che VBA Trasforma il controllo Null in SL0 ( se per caso era gia SL0 non gli fa niente )
e poi valuta se il risultato è SL0

Non so se mi sono spiegato bene ???

_________________________________________________________

Nella if che ci proponi scrivi
If ...... And Not IsNull(Me.Voto_02.Value) And Right(Me.[Voto_02], 3) = "4,0" Then
Desumo che tu vuoi che succeda qualcosa
- Se non è nullo Voto_02
- E se gli ultimi 3 caratteri di Voto_02 sono "4,0"
Ma la seconda condizione implica GIA la prima pertanto anche se non
è strettamente sbagliata puoi omettere la prima e guadagni in semplicita

______________________________________________________

Per ultimo se la condizione if si verifica cosa deve fare VBA ?

tu ci scrivi questo:
Me.[Voto_01].value = "01-4,0" And Me.[Voto_02].value = ""

Ma quelle sono 2 cose distinte che le devi mettere su 2 righe distinte
Me.[Voto_01].value = "01-4,0"
Me.[Voto_02].value = ""

___________________________________________________________

Facci sapere


If Nz(Me.Voto_01.Value, "") = "" And Right(Me.[Voto_02].Value, 3) = "4,0" Then Me.[Voto_01].Value = "01-4,0" Me.[Voto_02].Value = "" End If

sergranero Profilo | Junior Member

E' perfetto...... grazie anche per la spiegazione...mi servirà sicuramente in altre occasioni.....
GRAZIE
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5