2013-07-09 8 views
5

Ho una dichiarazione in VB.net che ho pensato di aver scritto correttamente per impedire che la seconda metà venga valutata. Ecco come si presenta:Prevenire la seconda metà di un'istruzione if se il primo semestre è nullo

Se (. (MyDataSet2 IsNot Niente) O myDataSet2.Tables ("CurData") Rows.Count> 0)

Tuttavia non salta la seconda expresion "myDataSet2 .Tables ("CurData") .Rows.Count> 0 "come voglio.

Cosa devo cambiare?

+0

Ho detto di utilizzare OrElse nella mia risposta, ma probabilmente stai cercando di eseguire un cortocircuito logico E, giusto? In tal caso, usa AndAlso. Chiedo perché non ha molto senso controllare se il proprio set di dati non è nulla, quindi se questo è falso (ovvero il proprio set di dati è nulla), controllare alcune proprietà del set di dati inesistente. Otterrai un riferimento null in questo modo. –

+0

Sì, hai ragione, quello che voglio veramente fare è 'AndAlso'! –

risposta

8

Utilizzare l'operatore OrElse.

If myDataSet2 IsNot Nothing OrElse myDataSet2.Tables("CurData").Rows.Count > 0 

MODIFICA: Vedere il mio commento sulla tua domanda iniziale. Stai cercando PROBABILE:

If myDataSet2 IsNot Nothing AndAlso myDataSet2.Tables("CurData").Rows.Count > 0 

Che verificherà se myDataSet2 non è nullo. Supponendo che non lo sia, controllerà quindi che ci sia almeno una riga. Se è nullo, la seconda condizione non verrà verificata.

4

È necessario inserire la seconda istruzione nella prima clausola if.

Ti piace questa:

If(statement1) then 
    If(statemtent2) then 
    Else 
    End if 
Else 
End If 

Come è ora entrambi sono valutati e se uno di loro è vero sarà eseguito il contenuto nel vostro caso-clausola.

Problemi correlati