Newsgroup: it.comp.lang.visual-basic
Titolo: Aiuto per IF!

Salve a tutti, grazie per la risposta dell'altro ieri, ho risolto quel
problema, solo che ora ce n'è un altro che mi assilla: vorrei fare un if che mi
dovrebbe dare un msgbox("ciao") se su almeno 1 di 6 textbox è <> "" e almeno 1
della altre sia = ""
Ecco la mia logica:
If (txtAnnoReg1.Text Or txtCodRReg1.Text Or txtCodTReg1.Text _
Or txtRateaReg1.Text = "") And (txtImpoCreReg1.Text Or _
txtimpoDeReg1.Text <> "") Then
MsgBox ("ciao")
End If
Perchè non funziona? Grazie 1000. CIAO!!
-- 
Posted from 
ppp-234-87.21-151.libero.it
 [151.21.87.234] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 wrote in message
news:7f72560bec966be5034...@mygate.mailgate.org...


 Giorgio.
e perché non
if len(A) * len(B)* len(C) = 0 then ...
nonsonostatoio

 wrote in message
news:9o5rbu$seh$1...@lacerta.tiscalinet.it...


> per fare l'OR
Occhio, usare la moltiplicazione equivale a vare l'AND (diverso da zero
se  sono  tutti diversi  da  zero)  mentre  la somma  equivale  all'OR
(diverso da zero se almeno uno è diverso da zero)
 
RZ> Gia' che ci siamo, se A, B e C sono dichiarati As String, dovrebbe
RZ> andare anche cosi':
RZ> If (Len(A + B + C) = 0) Then ...
RZ> oppure
RZ> If ((A + B + C) = vbNulString) Then ...
Ma  non  conviene  farlo.   Come  una volta  non  conveniva  usare  la
moltiplicazione al  posto dell'AND. Invece  si può sfruttare  il fatto
che la  mappatura degli  interi nei due  valori dell'algebra  di Boole
avviene con la funzione
	/ 1 - vero - se n è != 0		
b(n) =	{
	\ 0 - falso - se n è = 0
e scrivere 
	If Len(A) + Len(B) + Len(C) Then
--
Gian Uberto| main(){printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}
Lauri      |                        David Korn, 1987 ioccc best one liner 
(aka saint)|-------------------------------------------------------------------
em@ail: 
sa...@eng.it
 ( vedere X-nospam nello header - see X-nospam in header )

 (diverso da zero se almeno uno è diverso da zero)
Certo, sono d'accordo nel dire che la moltiplicazione corrisponde
all'operatore logico AND e la somma all'OR (vecchi ricordi di skuola), ma
nel caso specifico:
if len(A) * len(B) * len(C) = 0
vuol dire (leggendo in italiano e non in booleano):
se Len(A)=0 OPPURE Len(B)=0 OPPURE Len(C)=0
Praticamente un OR.
Praticamente quello che voleva fare (a parte la svista) il ns. amico Michele
scrivendo:
    If (txtAnnoReg1.Text Or txtCodRReg1.Text Or txtCodTReg1.Text _
    Or txtRateaReg1.Text = "")
La situazione e' un po' anomala perche' Len(A) non e' un operatore logico;
mentre [Len(A)=""] o [Len(A)<>""] si!
Quindi, a seconda di come viene composta la proposizione (se uguale a "" o
diverso da ""), otteniamo l'*equivalente* di un AND o un OR. D'altronde
"Almeno una stringa vuota" (OR) puo' dirsi anche "Non tutte le stringhe
'piene' " (NOT AND).
Se
     (X) OR (Y) = not(Z)
allora
     not(X) AND not(Y) = (Z)
Scusate, sono un po' contorto, ma a quest'ora non ho ancora tutte le sinapsi
attive ;-)
Ciao a tutti.
Giorgio

> 
RZ> Diciamo 0 = false o !=0 = true (non e' detto che sia 1)
1 e  0 sono i valori  dell'algebra di Boole. Che  poi alcuni linguaggi
usino 1 ed altri  preferiscano -1 (tutti i bit della parola  a 1) è un
discorso di codifica.


 writes:
J> if len(A) * len(B) * len(C) = 0
J> vuol dire (leggendo in italiano e non in booleano):
J> se Len(A)=0 OPPURE Len(B)=0 OPPURE Len(C)=0
J> Praticamente un OR.
Yazzzz... Vero va a fare il test che la lunghezza sia 0 che è il negato di
"sono tutti a lunghezza non nulla" e quindi per De Morgan hai che equivale
all'OR, ma è scritto come AND delle proposizioni negate:
	if (len(a) > 0 AND len(B) > 0 AND len(C) >0) = False Then
abbreviato col fatto  che False = 0 e  tutto ciò che è diverso  da 0 è
considerato vero.
