2012-10-30 4 views
-2

Какая ошибка кода ниже? Я запутался с оператором AndAlso и не знаю, правильно ли это. Следующий код дает мне ноль.Andalso in vb if statement

If test >=31 AndAlso test <366 then 

    test2=(cstr(Math.Floor(length /10.5))) 
    test=(length Mod 10.5) 
    test= (length2 * 10.5) 
    test2=cstr(length) 

end if 
+0

«мое другое, если заявление работает нормально» - erm? –

+0

Пожалуйста, обратитесь к [ask] лучшим вопросам. Лучше не жестко указывать дни за месяц и дни в году. Чтобы ответить на ваш вопрос, вы пропустили 'Then' –

ответ

0

Вам не хватает Then.

Например:

If (ThisQuestionHadMoreDetails) Then '<-- notice the Then 

End If 
+0

Что касается моего дня в месяце, я вижу сообщение, в котором вы получили этот метод, его очень плохо, пожалуйста, не принимайте его в качестве ответа, я дал вам ортодоксальный подход, используя * 'DateTime.DaysInMonth'. –

+0

VB добавляет «тогда», если вы его не оставляете. – xpda

1

AndAlso такое же, как And, за исключением только выражение слева от AndAlso проверяется, если это не соответствует действительности. Иногда это полезно, если вы делаете что-то вроде

if i <= ubound(a) andalso a(i) = 3 then 

В вашем примере, если тест 31 или меньше, или тест больше, чем 366, то четыре оператора присваивания не будет выполняться. Если тест не определен с нулевым значением в момент выполнения оператора if, то тест и test2 не будут изменены. Возможно, это и есть то, что происходит в вашей программе.