Access 2002

Сброс итоговой суммы для каждой страницы


Access генерирует событие Format при форматировании раздела, однако строка данных не обязательно будет распечатана. А событие Рп nt Access генерирует непосредственно перед печатью строки.

В обработчик события Format верхнего колонтитула (которое происходит только тогда, когда начинается процесс форматирования страницы) нужно добавить следующую строку кода: txtPageTotal – О

В результате при каждом переходе к новой странице текстовому полю в ее нижнем колонтитуле будет присваиваться значение 0.

Накопление итогов

В обработчик события Print области данных отчета нужно поместить следующий код:

(Функция VBA Nz используется здесь для того, чтобы избежать присвоения полю txtPageTotal значения Null, если поле txtSales окажется пустым.)

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

Для чего нужна проверка параметра PrintCount? Дело в том, что для определенного раздела отчета событие Print может вызываться дважды. Предположим, вы присвоили свойству раздела KeepTogether значение False, а раздел охватывает несколько страниц. В этом случае событие Print будет вызываться несколько раз, а вам нужно только раз учитывать значение объема продаж в итоговой сумме. Возможно, подобная ситуация и не возникнет в ваших отчетах, но параметр PrintCount стоит проверять, чтобы убедиться, что одно и то же значение не добавлено в итоговую сумму дважды.

Комментарии закрыты