Я знаю, что это может быть более общий вопрос, но я просмотрел свой код 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.
У VB6 в любом случае была фантастическая функция, где вы могли установить точку останова при изменении значения переменной. Это было бы удобно найти где/когда/почему оно якобы менялось обратно – Plutonix
Является ли код, который включает слишком много OverPopluated для публикации здесь? –
@MattCremeens Позвольте мне попытаться показать вам это ... – BobSki