Newsgroup: it.comp.appl.access
Titolo: operatore <> nell' istruzione if...then

ho questa istruzione if...then:
if me.pippo="ciao" and (Forms!mordine!Sub!ordine <> "02") then
ecc.. ecc..
in pratica se il controllo pippo è uguale a ciao e il controllo ordine della
sub è diverso da 02
allora fai qualcosa.
non mi funziona perchè mi lascia inserire dei valori anche se l'ordine è 02
è dovuto al fatto che l'operatore <> funziona solo se  02 è numerico?
come dovrebbe essere l'istruzione per fare ciò?
grazie
ciao

 messaggio news:DwR7a.165086$YG2.4...@twister1.libero.it...

    L'operatore "<>", "diverso da", "funziona" con tutto, quindi non e'
quello il problema. Vediamo quali potrebbero essere, invece, i problemi
reali:
    Mentre e' chiaro che:
        "ciao" e "02"
sono delle costanti di tipo stringa, noi che leggiamo non sappiamo
niente a proposito del tipo di dato del valore dei controlli:
        Me.pippo e Forms!mordine!Sub!ordine
    Mentre per "Me.pippo" potremmo anche supporre che si tratti di un
valore di tipo String, su "Forms!mordine!Sub!ordine" potrebbero venirci
dei dubbi. Io, per verificare, scriverei le istruzioni:
        Debug.Print VarType(Me.pippo.Value)
        Debug.Print VarType(Forms!mordine!Sub!ordine.Value)
prima dell'istruzione "If ...". Poi andrei a confrontare, mediante il
Visualizzatore oggetti, il valore di VarType ottenuto:
        Enum VbVarType
            Membro di VBA
    Solamente dopo aver fatto questa verifica si potra' discutere di
come scrivere l'istruzione condizionale.
--
Ciao :o)
Maurizio
--------
?SPQR(C)
 X
--------


sono tutti e due di tipo String
ciao

 ha scritto nel messaggio
news:DwR7a.165086$YG2.4...@twister1.libero.it...

Forse il problema si verifica in presenza di campi con valore NULL, prova in
questo modo
if "" & me.pippo="ciao" and ("" & Forms!mordine!Sub!ordine <> "02") then
Ciao Giorgio.

 news:ga%7a.165690$YG2.4...@twister1.libero.it...

    Ammettiamo. Potrebbero anche valere Null? Ovvero tali controlli
potrebbero anche essere vuoti, cioe' non compilati dall'utente? Come si
comporta l'istruzione se scrivi:
        If ( _
          ("" & Me.pippo.Value = "ciao") _
          And _
          ("" & Forms!mordine!Sub!ordine.Value <> "02") _
        ) Then
          ' ...
        Else
          ' ...
        End If
?
    (Facci sapere se ed eventualmente come hai risolto. Grazie.)


     (Facci sapere se ed eventualmente come hai risolto. Grazie.)
no non possono essere vuoti.
ho provato ma il risultato è il medesimo, mi lascia inserire dei valori


 Ciao Giorgio.
ho provato mettendo = al posto dell'operatore <> e funziona
cioč mi lascia inserire il dato solo se me.pippo č "ciao" e il controllo
della sub č "02"
perchč con = funziona e con <> no?
quindi il problema č l'operatore <>?

 valori anche se l'ordine è 02
    Ok. Ci parli di quanto vale "ordine". Ma "pippo"? Quanto vale
"pippo" nel test che fai?
        If ( _
          ("" & Me.pippo.Value = "ciao") _
          And _
          ("" & Forms!mordine!Sub!ordine.Value <> "02") _
        ) Then
          ' A
        Else
          ' B
        End If
    Considera che otterrai A solo se saranno entrambi veri i confronti:
        "" & Me.pippo.Value = "ciao"
        "" & Forms!mordine!Sub!ordine.Value <> "02"
pertanto per testare dovrai scrivere, prima di "If ...":
        Debug.Print "" & Me.pippo.Value
        Debug.Print "" & Me.pippo.Value = "ciao"
        Debug.Print "" & Forms!mordine!Sub!ordine.Value
        Debug.Print "" & Forms!mordine!Sub!ordine.Value <> "02"
solo cosi' potrai renderti conto di come stanno effettivamente le cose!


 cose!
il debug :
ciao
Vero
02
Falso
***********
ciao
Vero
03
Vero
però comunque il risultato non cambia mi fa inserire i valori in entrambi i
casi.

  news:BN08a.167141$ZE.49...@twister2.libero.it...

    Lasciamo perdere, per ora, la questione "inserimento valori" e
vediamo cosa ottieni con i valori:
        "ciao" e "02"
        "ciao" e "03"
e il codice:
        If ( _
          ("" & Me.pippo.Value = "ciao") _
          And _
          ("" & Forms!mordine!Sub!ordine.Value <> "02") _
        ) Then
          Debug.Print "A"
        Else
          Debug.Print "B"
        End If


         End If
ottengo A nel primo caso
ottengo B nel secondo caso
ciao

 messaggio news:xa18a.166089$YG2.4...@twister1.libero.it...

    Appunto. Quindi le condizioni di "if" non c'entrano con il problema
dell'inserimento valori. Ci vuoi parlare di questo, adesso? Di che si
tratta?


 ha scritto nel messaggio
news:d508a.165886$YG2.4...@twister1.libero.it...

Posso non aver capito un tubo, ma sei sicuro che non devi usare l'operatore
Or invece che l'operatore And?
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:d508a.165886$YG2.4...@twister1.libero.it...

Allora deve funzionare prova con le MsgBox e vedrai che il controllo
funziona, evidentemente il problema č di altra natura.
if "" & me.pippo="ciao" and ("" & Forms!mordine!Sub!ordine <> "02") then
   MsgBox "Inserimento Attivato"
Else
   MsgBox "Inserimento Bloccato"
end if
Ciao Giorgio.

 Di che si tratta?
ORA FUNZIONA !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
avevo fatto un pò di casino con la sintassi
Private Sub Comp_BeforeUpdate(Cancel As Integer)
If Me.Descrizione = Forms!mordinescarico!Sub!AttTipoA Or Me.Descrizione =
Forms!mordinescarico!Sub!AttTipoB Or _
(Me.Descrizione = "FG" And Forms!mordinescarico!Sub!Q <> "M") Or _
(Me.Descrizione = "GH" And (Forms!mordinescarico!Sub!Q = "11") Or
Me.Descrizione = "GH" And (Forms!mordinescarico!Sub!Q= "12") Or
Me.Descrizione = "GH" And (Forms!mordinescarico!Sub!Q = "M")) Or _
Me.Descrizione = "P" Or _
Me.Descrizione = "R" Or _
Me.Descrizione = "V" And (Forms!mordinescarico!Sub!Q= "H00") Or _
Me.Descrizione = "C" And (Forms!mordinescarico!Sub!Q = "H00") Then
Debug.Print "A"
Else
Debug.Print "B"
Me.Undo
End If
End Sub
grazie a tutti per i suggerimenti e a Maurizio per tutto il tempo che gli ho
fatto perdere.
ciao