2013-07-09 17 views
5

Mam oświadczenie w VB.net, które uważałem, że napisałem poprawnie, aby uniemożliwić ocenę drugiej połowy. Wygląda to tak:Zapobieganie drugiej połowie instrukcji if, gdy pierwsza połowa jest pusta

if (. (MyDataSet2 isnot nic) Lub myDataSet2.Tables ("CurData") Rows.Count> 0)

Jednak nie pominąć drugą wprowadzić wyrażenie „myDataSet2 .Tables ("CurData") .Rows.Count> 0 "tak jak chcę.

Co mam zmienić?

+0

Powiedziałem, aby używać OrElse w mojej odpowiedzi, ale prawdopodobnie chcesz zrobić logiczne spięcie ORAZ, prawda? W takim przypadku użyj AndAlso. Pytam, ponieważ nie ma większego sensu sprawdzanie, czy twój zestaw danych nie jest niczym, to jeśli jest to fałsz (czyli twój zestaw danych to nic), sprawdzanie jakiejś właściwości nieistniejącego zestawu danych. Otrzymasz w ten sposób odniesienie zerowe. –

+0

Tak, masz rację, naprawdę chcę zrobić "AndAlso"! –

Odpowiedz

8

Skorzystaj z operatora OrElse.

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

EDYCJA: Zobacz mój komentarz do oryginalnego pytania. PROBABLOWIE szukasz:

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

To sprawdzi, czy myDataSet2 nie jest zerowy. Zakładając, że tak nie jest, sprawdzi, czy istnieje co najmniej jeden wiersz. Jeśli jest pusty, drugi warunek nie zostanie sprawdzony.

4

Musisz umieścić drugie zdanie w pierwszej klauzuli if.

Jak to:

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

Jak to jest teraz obie są oceniane i jeśli jedna z nich jest prawdziwa treść w IF-klauzuli zostanie wykonany.

Powiązane problemy