Newsgroup: it.comp.appl.access
Titolo: perchè non funziona IF ... THEN .... ELSE

Ma perchč non funziona quando l'espressione di controllo č del tipo nullo
ad esempio:
If nomecontrollo = Null Then
...
...
Else
....
....
End If
dove nomecontrollo č il nome di una casella di testo con valore nullo
succede che il codice passa direttamente all'istruzione Else, anche se
dovrebbe eseguire il primo blocco, essendo true l'espressione di controllo
non riesco a capire come mai.
ho anche inserito dei punti di interruzione per eseguire un controllo
immediato dei valori, ma sembra tutto OK
chi mi sa dire perchč???
grazie
Carlo

 Carlo
In realtà non viene restituito Null, ma VbNullstring che equivale "":
Prova con:
If Len(Me.NomeCOntrollo)=0 then
......
Else
......
End if
..................................
@Alex.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:f22ad15cf71fa3df47...@mygate.mailgate.org...

A me non risulta che i controlli restituiscano VbNullString
Il problema secondo me è di sintassi nel codice:
If  IsNull(Me.nomecontrollo:value) Then
Il confronto tra due valori Null torna Null che in un blocco If....Then
viene sempre ignorato procedendo sempre dopo il Then
If Me.nomecontrollo:value = Null Then
    Debug.print "Then"
Else
     Debug.print "Else"
End If
If Me.nomecontrollo:value <> Null Then
    Debug.print "Then"
Else
     Debug.print "Else"
End If
In entrambi i casi nell'immediata apparira "Then"
Ciao omnitow

 
Nel caso tu inserissi un testo e poi lo cancellassi
il controllo cosě non funziona poichč il valore restituito
non č piů Nullo, ma bensě stringa vuota.......!!!
[CUT]


 non č piů Nullo, ma bensě stringa vuota.......!!!
A questo proposito io nei miei applicativi uso la funzione vuoto creata da
me facendo
if vuoto(X) then
Public Function vuoto(X As Variant) As Boolean
' ' testa se la stringa passata č nulla o č una stringa vuota: se lo č
*
' ritorna vero altrimenti falso
*
'
    If IsNull(X) Or Trim(X) = "" Then
        vuoto = True
    Else
        vuoto = False
    End If
End Function
Antonio

Grazie a tutti: questo pomeriggio cercherò di mettere a frutto i vostri
suggerimenti

 Antonio
Pienamente d'accordo con te, in effetti anch'io uso una
Funzione simile un pň piů complessa, ma sostanzialmente
corrispondente.
La posto per interesse generale.....!
Public Function IsNothing(varToTest As Variant) As Boolean
'*****************************************************************
'Name      : IsNothing (Function)
'Purpose   : Verifie if the Test Variable is Empty
'Called by :
'Calls     :
'Inputs    : Variant
'Output    : Boolean
'*****************************************************************
   IsNothing = True
   Select Case VarType(varToTest)
        Case vbEmpty
            Exit Function
        Case vbNull
            Exit Function
        Case vbBoolean
            If varToTest Then IsNothing = False
        Case vbByte, vbInteger, vbLong, vbSingle, vbDouble, vbCurrency
            If varToTest <> 0 Then IsNothing = False
        Case vbDate
            IsNothing = False
        Case vbString
            If (Len(varToTest) <> 0 And varToTest <> " ") Then IsNothing
= False
   End Select
End Function
Aloa.....!
