Access 2002

Три набора однотипных элементов управления


На  8.36 вы видите три набора однотипных элементов управления: 10 надписей в заголовке отчета (с именами 1ЫHeaderl—IblHeaderlO), 10 несвязанных текстовых полей в области данных (названных txtDatal-txtDatalO) и 9 несвязанных текстовых полей в разделе примечания отчета (с именами txtSum2—txtSumlO; поля txtSuml нет, поскольку в первом столбце нечего суммировать). Работая над этим отчетом, можно пожалеть, что в Access не поддерживаются массивы элементов управления, существующие в Visual Basic, — они могли бы очень облегчить нашу задачу.

Получение настоящих имен полей

Чтобы получить настоящие имена полей, нужно открыть набор записей из того же источника, на котором основан наш отчет. Если бы у отчета было свойство Recordset (имеющееся у форм), нам не пришлось бы этого делать. Однако до набора записей отчета никак не добраться, и потому нам придется создать такой же набор записей самостоятельно.

В этом примере используется набор записей ADO, который основан на таблице или запросе, указанном в свойстве отчета RecordSource. Если вы захотите воспользоваться SQL-строкой, можно будет либо предоставить ADO право самой определять тип указанного вами источника данных, либо модифицировать вызов метода Open объекта Recordset, указав в параметре Dptions константу adCmdText.

Открыв набор записей, наша процедура подсчитывает количество полей и элементов управления, которые ей предстоит вывести в отчете. Отчет спроектирован так, что в нем не может быть более 10 полей, и изменить это положение можно только в режиме конструктора. Поэтому процедура сравнивает количество полей в разделе данных с количеством полей в наборе записей и выбирает меньшее из этих двух значений:

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