2016-01-20 11 views
0

Я работаю с MS Access 2013 и имею вычисления, которые необходимо обновлять каждый раз при изменении базовых значений. «Запись» сама по себе не нуждается в обновлении, а только «контрольное» значение до сохранения сохраненной записи.Мерцание на [Форма]. [Recalc] в MS Access

Форма имеет 12 месяцев финансового года (октябрь-сентябрь), а значение «валюта» вводится в каждое текстовое поле. Каждый раз, когда общее значение для всех текстовых полей должно появляться снизу каждый раз, когда оно изменяется. В настоящее время это происходит, но оно резко мерцает.

структура выглядит следующим образом:

Каждое текстовое поле имеет следующую формулу в AfterUpdate: =[Form].[Recalc]

"полной" текстовое поле имеет следующую формулу:

=Nz([txtOCT_Nc],0)+Nz([txtNOV_NC],0)+Nz([txtDEC_NC],0)+Nz([txtJAN_NC],0)+Nz([txtFEB_NC],0)+Nz([txtMAR_NC],0)+Nz([txtAPR_NC],0)+Nz([txtMAY_NC],0)+Nz([txtJUN_NC],0)+Nz([txtJUL_NC],0)+Nz([txtAUG_NC],0)+Nz([txtSEP_NC],0) 

Есть ли VBA или настройка, которая может предотвратить мерцание?

ответ

0

Вы можете использовать Application.Echo False, чтобы отключить обновление экрана, пока выполняется Recalc. Хотя я немного удивлен, что простая сумма вызовет резкое мерцание.

Создать такую ​​функцию в виде модуля:

Private Function MyRecalc() 

    Application.Echo False 
    Me.Recalc 
    Application.Echo True 

End Function 

и изменения AfterUpdate элемента управления к

=MyRecalc() 
+0

Спасибо. Это сработало - все еще незначительное мерцание, но резкое мерцание прекратилось. Я также задавался вопросом, почему простая сумма может вызвать резкое мерцание. – monty327

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