Кузин А.В., Левонисова С.В. Базы данных (5-е издание, 2012) (1084448), страница 30
Текст из файла (страница 30)
Значениясвойства Значение параметра (OptionVaLue) для переключателя Изменение установим равным 2, а для переключателя Добавление — равным 1.Для группы необходимо также задать значение свойства Значение по умолчанию (DefaultValue), равное 2. При выборе одного из этих переключателей будет включаться соответствующий режим работы с формой. Процедура обработки события После обновления (AfterUpdate) будет иметь следующий вид:Private Sub Pe3KHM__AfterUpdate ()'Если выбран переключатель Изменение, тоIf Forms!Товары!Режим.Value = 2 Then'Задает для свойства AllowEdits значение True,'чтобы перейти в режим измененияfrm.AllowEdits = True'Включаем поле со списком Выбор категории товара'и переходим на негоMe![Выбор категории товара].Enabled = TrueMe![Выбор категории товара].SetFocusMe![Выбор товара].Enabled = False'Отключаем элементы управления в области данныхM e ![Категория].Enabled = FalseM e ![Наименование] .Enabled = FalseM e ![Цена] .Enabled = False'Если выбран переключатель Добавление, тоElseMe.AllowEdits = FalseMe .AllowAdditions = True'Включаем элементы управления в области данных,'кроме поля Код товараMe![Код товара].Enabled = FalseM e ![Категория].Enabled = TrueM e ![Наименование] .Enabled = TrueM e ![Цена].Enabled = True'Переходим на новую запись и переводим фокус'на поле КатегорияDoCmd.GoToRecord, , acNewRecMe![Категория].SetFocus157'Отключаем поля со списками в заголовке формыMe![Выбор категории товара].Enabled = FalseMe![Выбор товара].Enabled = FalseEnd IfEnd SubСозданная для примера форма позволяет работать в режимах изменения данных и ввода новых данных.Работа с отчетамиДля работы с отчетами MS Access предоставляет ряд объектов,структура которых изображена на рис.
3.18.Коллекция Reports содержит все отрытые отчеты базы данных,каждый из которых представляется объектом Report.Каждый отчет имеет коллекцию Controls, членами которойявляются элементы управления, содержащиеся в нем. В каждыйобъект Report также встроены объект Module и коллекция Properties.Объект Module представляет собой модуль отчета, а коллекцияProperties содержит все встроенные свойства отчета.Структура объектов, встроенных в объект Report, практическиидентична структуре объектов, встроенных в объект Form.
Самобъект Report имеет большое количество тех же свойств, что иобъект Form.Для работы с конкретными разделами отчета можно использовать свойство Section объекта Report. Например, чтобы сделатьвидимым верхний колонтитул отчета, следует добавить в программуследующие инструкции:Reports("Отчет1").Section(acPageHeader).Visible= True=Коллекция Reports содержит все открытые в данный моментотчеты. Для ссылки на конкретный отчет используется такой жесинтаксис, как и для ссылки на форму.Коллекция All Reports содержит объекты AccessObject дляк аж д ого о тчета в об ъектеCurrentProject или CodeProject.Объект Report ссылается наконкретный отчет MS Access.Каждый объект Report является элементом коллекции R eports.Свойство Группировка по даРис.
3.18. Иерархия объектов,там (DateGrouping) определявстроенных в объект Reportет способ выполнения группи158ровки по дате в отчете. Данное свойство может иметь два значения, причем;если значение равно 0 — Американский стандарт (US Defaults),то используются настройки календаря США, т.е. первый день недели — Воскресенье (Sunday) и начало первой недели года —с 1 января;если значение равно 1 — Параметры настройки (Use SystemSettings), то используются настройки, основанные на значениях,выбранных в диалоговом окне Свойства: Язык и стандарты(Regional Settings Property) на панели управления Windows(Windows Control Panel).Значение свойства Группировка по датам (DateGrouping) можно задать только в окне свойств или процедуре события Открытие (Open) объекта Report.Вид группировки определяется значением свойства GroupOn.Чтобы задать значение данного свойства, в режиме конструктораформ следует нажать кнопку [Сортировка и группировка] на панели инструментов Конструктор отчетов и в появившемся диалоговом окне Сортировка и группировка задать необходимые параметры.Свойство GroupLevel задает уровни группировки или позволяет выполнить в отчете сортировку.
Данное свойство представляетсобой массив, в котором каждый элемент задает уровень группировки. Для ссылки на конкретный уровень группировки используют следующий синтаксис:GroupLevel(п)Здесь параметр п задает уровень группировки (начиная с 0).Число уровней группировки может достигать 10.В случае использования варианта записи GroupLevel (0) будетпроизведена группировка или сортировка по первому полю иливыражению отчета или формы.При использовании свойства GroupLevel должны быть такжезаданы соответствующие значения свойств SortOrder, GroupOn,Grouplnterval, KeepTogether и ControlSource.
Эти значения можнозадать в процедуре обработки события Открытие (Open).Свойство Фильтр включен (FilterOn) определяет, будет ли применен (значение True) фильтр, задаваемый свойством Фильтр(Filter). В случае установки данному свойству значения False заданный ранее фильтр будет удален.Для автоматического применения фильтра при открытии отчета или формы следует задать значение True свойству Фильтрвключен (FilterOn) в процедуре обработки события Открытие(Open).Свойство Порядок сортировки (OrderBy) определяет, по какимполям производится сортировка записей в форме, отчете, запро159Т а б л и ц а 3.20Значения свойства Данные (ControlSource)ЗначениеPageОписаниеНомер текущей страницы 1, 2, 3 и т.д.“Страница” & Page & Позволяет вывести номер текущей страницы и“из” & Pagesобщее количество страниц.
Например, страница1 из 10PagesОбщее количество страницсе или таблице. Значением данного свойства должна являться строка, которая определяет имя поля или нескольких полей, разделенных запятой. Сортировка производится по возрастанию. Еслитребуется задать сортировку по убыванию, то после имени поляследует добавить ключевое слово Desc.Свойство Сортировка включена (OrderByOn) определяет, будет(значение True) выполнена сортировка в соответствии со значением свойства Порядок сортировки (OrderBy) или нет (значениеFalse).Свойства Page и Pages возвращают информацию, которую можно использовать для печати количества страниц в отчете или форме, т. е.
свойство Page возвращает номер текущей страницы, а свойство Pages — количество страниц, содержащихся в отчете илиформе.Свойство Page доступно для записи только в режиме предварительного просмотра или во время печати, а свойство Pages всегдадоступно только для чтения.Чтобы сослаться на данные свойства в программе, требуетсяразместить в отчете или форме (обычно в нижнем колонтитуле)поле, значение свойства Данные (ControlSource) которого будетравно одному из значений, представленных в табл. 3.20.Свойства Верхний колонтитул (PageHeader) и Нижний колонтитул (PageFooter) определяют способ печати верхнего и нижнего колонтитулов.
Возможные значения данного свойства приведены в табл. 3.21.Свойство Источник записей (RecordSource) задает источникданных для формы или отчета. В качестве источника данных могутвыступать таблица, запрос или оператор языка SQL. Значениемданного свойства должна быть строка, которая представляет собой имя таблицы, запроса или оператор SQL.Свойство Section позволяет сослаться на раздел отчета илиформы и получить доступ к свойствам данного раздела или егоэлементам управления. Значения данного свойства приведены втабл. 3.22 (в скобках указаны значения констант).160Т а б л и ц а 3.21Возможные значения свойств Верхний колонтитул (PageHeader)и Нижний колонтитул (Ра§еРоо1ег)ЗначениеОписание0 — Все страницы(All Pages)Задает печать колонтитулов на всех страницахотчета1 — Без заголовка(Not With Rpt Hdr)Отменяет печать верхнего или нижнего колонтитула на странице, где выводится заголовокотчета2 — Без примечания(Not With Rpt Ftr)Верхний или нижний колонтитул не печатаютсяна странице, где находится примечание отчета3 — Без заголовка/при Отменяет печать верхнего или нижнего колонтимечания (Not Withтула на странице, где находится заголовок илиRpt Hdr/Ftr)примечание отчетаТ а б л и ц а 3.22Константы, определяющие раздел формы или отчетаКонстантаРазделacDetail (0)Область данных формы или отчетаacHeader (1)Заголовок формы или отчетаacFooter (2)Примечание формы или отчетаacPageHeader (3)Верхний колонтитул формы или отчетаacPageFooter (4)Нижний колонтитул формы или отчетаacGroupLevell Header (5) Заголовок группы первого уровня группировки (только для отчетов)acGroupLevell Footer (6) Примечание группы первого уровня группировкиacGroupLevel2Header (7)Заголовок группы второго уровня группировки (только для отчетов)acGroupLevel2Footer (8)Примечание группы второго уровня группировкиЕсли отчет имеет дополнительные уровни группировки, то заголовкам и примечаниям этих групп присваиваются значения,начиная с 9.Работа с запросамиВсе запросы, содержащиеся в файле базы данных, являютсяэлементами коллекции АПОиепев.
Каждый запрос представляет161собой объект AccessObject типа Query. Коллекция AllQueries встроена в объекты CodeData и CurrentData.Коллекция AllQueries содержит объекты AccessObject для каждого запроса.Объект CodeData ссылается на объекты, сохраненные прилож ением -источником данных в базе данных, в которой выполняется код VBA.Объект CurrentProject ссылается на проект (совокупность всехстандартных модулей и модулей классов) для текущей базы данных или проекта MS Access.Объект CodeProject ссылается на программу на языке VBA,содержащуюся в базе данных. В данный объект встроены коллекц и и A llF o rm s, A llR e p o rts, A llM acro s, A llM o d u les иAllDataAccessPages.Объект CurrentData ссылается на объекты, которые сохраненыприложением —источником данных (Jet- или SQL-сервером) втекущей базе данных.Этот объект включает в себя:коллекцию AllTables, содержащую все таблицы;коллекцию AllQueries, содержащую все запросы (в файлах проектов MS Access, имеющих расширение ADP, запросов нет);коллекцию AllViews, содержащую все представления (в файлахпроектов MS Access с расширением .mdb представления отсутствуют);коллекцию AllStoredProcedures, содержащую все хранимые процедуры (в файлах баз данных MS Access с расширением MDB хранимые процедуры отсутствуют);коллекцию AllDatabaseDiagrams, содержащую все схемы базыданных (в файлах баз данных MS Access с расширением MDB схемы базы данных отсутствуют).3.2.9.
Создание процедур обработки событийРассмотрим создание процедуры обработки событий. Для большинства элементов управления формы, а также для самой формыи отчета стандартный набор действий следующий:• открыть форму в режиме конструктора.
Если при этом окносвойств на экране отсутствует, то следует щелкнуть мышью покнопке [Свойства] (Properties) на панели инструментов;®выбрать нужный элемент управления (или щелкнуть мышьюна маленьком черном квадрате в верхнем левом углу формы, тогда выберется вся форма), после чего в окне свойств отобразятсясвойства выбранного элемента;« открыть вкладку События (Events);• выбрать событие, для которого будет создаваться процедураобработки, и щелкнуть по нему правой кнопкой мыши (рис.