Средства разработки приложений


Access


Проблемы отчетов в ACCESS Сергей Гущенко,

Важным элементом программ работы с базами данных является механизм "отчетов". Так как структура баз может быть достаточно сложной, для реализации таких программ недостаточно знать основные возможности "конструктора отчетов". Может потребоваться знание ряда слабо документированных функций и технологических приемов

Выходные документы в СУБД проектируются с помощью механизма отчетов. В MS Access этот механизм имеет массу возможностей, позволяющих создавать выходные документы без обращения к программированию на встроенном языке VBA. Однако не все задачи можно решить таким путем.

Рассмотрим пример. Допустим, есть таблица "TELEFKOD" телефонных кодов с 528-ю записями, начало которой имеет следующий вид:

NPP GOROD KOD_TEL OBLAST
1 Авдеевка 06236 Донецкая
2 Акимовка 06131 Запорожская
3 Александрия 05235 Кировоградская
4 Александровка 06269 Донецкая
5 Александровка 05269 Кировоградская
6 Алушта 06560 Крым

Рис. 1. Вид отчета в Конструкторе

Причем поле "NPP" имеет тип Счетчик (Длинное целое), особенность которого состоит в следующем: при удалении записи в этом поле удаляется и значение, которое больше повторяться не будет. В результате перечень порядковых номеров может не совпасть с перечнем значений в этом поле.

В качестве выходного документа для этой таблицы подготовлен несложный отчет, вид которого в Конструкторе представлен на рис. 1.

Рис. 2. Вид окна свойств Примечания отчета

В этом отчете названия колонок (шапка таблицы) размещены в верхнем колонтитуле, в качестве номера по порядку используется поле "NPP", в нижнем колонтитуле указывается номер страницы и добавлено Примечание отчета с количеством выводимых записей и примером подписей. Модуль класса пустой (то есть никаких программных кодов на языке VBA нет). Распечатывается такой отчет без проблем. Но могут возникнуть претензии к размещению Примечания. По умолчанию его свойство Не разрывать имеет значение "Да". (рис. 2).

Это означает: если всё Примечание не помещается на последней странице строк с данными, то оно будет целиком перенесено на следующую.


- Начало -    - Вперед -