MS Access form_current () запускается несколько раз - PullRequest
2 голосов
/ 06 мая 2010

У меня есть форма с двумя подчиненными формами (на отдельных вкладках). Это проект MDB в Access 2003

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

Но когда вы переходите к другой записи (т.е. из основной формы), она срабатывает Form_Current на активную подчиненную форму 4 раза. Затем последующие записи-ходы результат в Form_Current стрельбе 2 раза. Это боль, потому что подчиненные есть много полей, которые перемещаются и / или скрыты, поэтому он прыгает вокруг каждый Form_Current, не говоря уже о том, что он медленный.

Я открываю форму с фильтром через DoCmd.OpenForm (на самом деле он отправляет фильтр через OpenArgs). FilterOn устанавливается только один раз, в Form_Open на Основная форма, никогда не в подчиненных. Form_Current не вызывается явно где-нибудь еще в коде.

Когда я смотрю на стек вызовов, когда Form_Current запускает движение в первый раз, это выглядит так:

my_subform.Form_Current
[<Debug Window>]
my_subform.Form_Current

Так что кажется, что что-то в Form_Current вызывает другое Событие Form_Current. Но только на первом ходу записи.

Код в Form_Current несколько сложен, включает в себя пользовательские классы и обратные вызовы событий, но, как правило, не затрагивают данные таблицы. Единственное, что я может думать, что может запускать Form_Current в том, что он проверяет OldValue на элементы управления формой - это может быть причиной?

Или что-нибудь еще приходит на ум?

Спасибо.

Эрик

1 Ответ

1 голос
/ 06 мая 2010

Как однажды заметил TheAceMan1: «Единственное, на что вы должны обращать внимание при событии On Current - это рекурсия! Помимо этого ... мероприятие может быть таким здоровенным, как требуется. " Я нашел, что Текущий ужасно нервный. Тем не менее, иногда это единственное место для размещения вашего кода.

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

Я могу только предложить пошаговое устранение неисправностей; закомментируйте части, проверьте работу и решите это. Конечно, вы всегда можете опубликовать еще кучу кода, чтобы мы могли его увидеть.

...