Отчет MS ACCESS — печать может отличаться от предпросмотра

Столкнулся с поведением в стиле «а что, так можно было?» Да, еще я немного программист, делал для знакомых одну вспомогательную программку на MS ACCESS, и обнаружил любопытное поведение, описания которого нагуглить не удалось….

В программе имелся отчет с подотчетами…. В подотчетах были поля для некоторых итогов…. Заполнял я их в обработчике события Report.Activate основного отчета, кодом в формате

Me.ИМЯ_ПОДОТЧЕТА.Report!ПОЛЕ.Value = DSum(«blablabla»)

Что интересно, при открытии отчета в режиме предварительного просмотра — заполненные поля отображались, с нужным значением. При отправке же (прямо из режима просмотра) на печать или экспорт pdf — поля оказывались пустыми…. До конца разобраться в логике происходящего и цепи событий не получилось, решил задачу по-другому: вписав значение «= DSum(«blablabla»)»  непосредственно в значения полей в подотчетах, но сама мысль о возможности несовпадения предварительного просмотра с печатью — казалась нереальной.  А бывает как оказалось 🙂   Может вдруг кому-то нужен такой эффект — пользуйтесь, алгоритм воспроизведения явления надеюсь понятно описал…

Думаю причина в том что при отправке на печать вызываются еще какие-то события то ли основного, то ли подчиненного отчетов, которые переинициализируют поля прописанными в конструкторе значениями (в моём случае — пустыми), перетирая изменения внесенные VBA кодом…. Наверное в коде нужно делать что-то типа me.requery, me.update по аналогии с формами — но я не смог подобрать нужного варианта, а найти описание подобного поведения в документации не получилось. Пришлось обойти баг/фичу.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *