2016-07-27 5 views
-1

Я знаю, что это может быть более общий вопрос, но я просмотрел свой код 100 раз и не уверен, что случилось. Я устанавливаю глобальный флаг, чтобы его можно было использовать в разных формах моего приложения.Почему логическое значение возвращается к исходному значению?

Dim OverPopulated as Boolean 

У меня есть функция, где я первый установить его в FALSE, и после того, как она проходит через некоторые проверки он получает значение TRUE.

Теперь я делаю кучу вещей, просматриваю различные формы, и значение остается правильным все время. В основном нужно это значение для другой формы, поэтому, когда я проверяю

if OverPopulated = false then 
    MsgBox "You Can't do this and that" 
    exit sub 
End if 

Тогда все вдруг он получает значение FALSE. Я прошел через каждый экземпляр OVERPOPULATED в своем приложении и поставил точку останова на него, чтобы убедиться, что нигде я не установил его в FALSE, за исключением того, что однажды я установил его в FALSE перед моей проверкой.

У меня есть только две другие формы в моих приложениях. Существует одно место, где флаг выполняется дважды через один и тот же оператор (точно так же, как и выше). В первый раз, когда это происходит, значение правильное, затем оно проходит снова, и значение установлено на FALSE.

Любые идеи? если это слишком расплывчато, пожалуйста, дайте мне знать, я попытаюсь отредактировать его.

EDIT: Я удалил много кода, но вот как это выглядит .....

Dim OverPopulated as Boolean 

'модульный уровень

Private Sub ValidatePopulation() 

Dim admDate as date 

OverPopulated = False 

admDate = Format(Now(), "mm/dd/yyyy") 


Select Case revPURP 
    Case 0, 1, 2 
    'Check make sure these fields 
    'some if statements, checking, validation 

    Case Else ' no need to do a 
End Select 

OverPopulated = True 'I MAKE SURE IT GETS HERE and is set to TRUE!!! 

End sub 

Теперь, в других функциях я использовал это так ...

If OverPopulated = False Then 
    If optStat (0).Value = True Or optStat (1).Value = True Then 
     MsgBox "You are not able to do this”, vbCritical, "Incorrect review status...." 
     TabPop.Tab = 6 
    End If 
    Exit sub 
Else 
    'Proceed with SAVE 
End If 

У меня есть это. и у меня есть другое утверждение, подобное этому в другом месте. Этот человек получает удар дважды. В первый раз я прохожу через него по строкам, и это FALSE, тогда второй раз вокруг значения TRUE.

+2

У VB6 в любом случае была фантастическая функция, где вы могли установить точку останова при изменении значения переменной. Это было бы удобно найти где/когда/почему оно якобы менялось обратно – Plutonix

+0

Является ли код, который включает слишком много OverPopluated для публикации здесь? –

+0

@MattCremeens Позвольте мне попытаться показать вам это ... – BobSki

ответ

0

Похоже, что по какой-то причине значение возвращалось к FALSE. Я вынул Dim OverPopulated как Boolean из моего кода формы и поместил его в модуль GLOBAL, где хранятся все другие глобальные переменные. Похоже, что проблема в том, что значение остается таким же, пока я использую приложение. Спасибо вам за все ваши комментарии.

Global OverPopulated as Boolean 
+0

Ах. Я думал, вы сказали, что это уже в модуле, а не в форме! – topshot

Смежные вопросы