У меня странная ситуация в Access. Как правило, недопустимое использование ошибки Null - довольно простая вещь - присвоение нуля строковой переменной или чему-то другому. Но я получаю ошибку в месте, где, как мне кажется, этого не должно быть. Вот фрагмент кода:
bch = Form_Akces.txtMaxCisla.BackColor
If Err <> 0 Then Stop
Form_Akces.txtMaxCisla.BackColor = vbYellow
If Err <> 0 Then Stop
DoEvents
If Err <> 0 Then Stop ' This is where I get the error
With qdf_GPsp
Происходит то, что я получаю эту ошибку только иногда, обычно только в первый раз, когда запускаю код в какое-то время. Если я закрываю базу данных и сразу же заново ее открываю, обычно я не получаю ошибку. Это уже давно сводит меня с ума, поэтому я вставил все эти утверждения «Если ошибся <> 0, то останови», пытаясь отследить, где это происходит. Это живая система, и пользователи знают, что нужно просто перезапустить приложение, но это огромная PIA и довольно неудобно для загрузки.
Кто-нибудь может придумать, что попробовать или проверить? Я не совсем любитель Access, но это далеко не все, с чем я когда-либо сталкивался. Почему оператор DoEvents должен генерировать такую ошибку, я не знаю, тем более что я ничего не делаю даже в предыдущих инструкциях, которые должны генерировать такую ошибку, что ее можно как-то «удерживать» до тех пор, пока процессор не получит возможность выдать ошибку , Если я уберу DoEvents, я просто получу ту же ошибку несколько дальше. txtMaxCisla - это несвязанное текстовое поле в форме Form_Akces, из которого вызывается подпрограмма, содержащая этот код. Это только при запуске - как только все загружено и работает, это никогда не случится снова. И это происходит только время от времени - я не смог обнаружить ни одного паттерна.
Это продолжалось в течение нескольких месяцев, благодаря многочисленным циклам компиляции, декомпиляции, перекомпиляции, сжатия и восстановления, без каких-либо заметных изменений, за исключением того, что иногда это происходит в других местах, опять же без какой-либо причины, которую я вижу.
Не повезло - он все еще падает, и абсолютно НИКАКОЙ причины, которую я могу видеть. Вот код сейчас:
Public Sub ReloadMaxNumbers(tmc As TextBox)
Dim rst As DAO.Recordset, x$, xb$, xe$, bch&
On Error GoTo 0
If Err <> 0 Then Stop
DoEvents
If Err <> 0 Then Stop
...
Код останавливается на ВТОРОМ тесте после DoEvents с той же ошибкой «Недопустимое использование Null». Я понимаю, что этот код полностью запаздывает, но это результат отслеживания, пытающегося найти корень ошибки. Без этого он падает где-то вниз по дороге, с той же ошибкой. На данный момент я не могу думать ни о чем другом, чтобы даже попробовать.