- •Учреждение образования "Гродненский государственный профессионально-технический колледж приборостроения"
- •1. Синтаксис и программные конструкции vba
- •1.1 Основы синтаксиса языка vba
- •1.2 Операторы vba
- •1.3 Переменные и типы данных
- •Задание для самостоятельной работы 1.1: Работа с переменными и операторами
- •1.4 Константы
- •1.5 Операторы условного и безусловного перехода
- •1.5.1 Операторы условного и безусловного перехода. Оператор If… Then... Else
- •1.5.2 Оператор Select Case
- •1.5.3 Оператор GoTo
- •Задание для самостоятельной работы 1.2: Работа с операторами условного перехода
- •1.6 Работа с циклами
- •1.7 Массивы
- •Задание для самостоятельной работы 1.3 Работа с циклами
- •1.8 Процедуры и функции
- •1.8.1 Процедуры и функции. Виды процедур
- •1.8.2 Область видимости процедур
- •1.8.3 Объявление процедур
- •1.8.4 Передача параметров
- •1.8.5 Запуск и завершение работы процедур
- •Задание для самостоятельной работы 1.4 Работа с процедурами и функциями
- •1.9 Встроенные функции языка Visual Basic For Applications
- •1.9.1 Встроенные функции языка Visual Basic For Applications
- •1.9.2 Функции преобразования и проверки типов данных
- •1.9.3 Строковые функции
- •1.9.4 Функции для работы с числовыми значениями
- •1.9.5 Функции для работы с датой и временем
- •1.9.6 Функции для форматирования данных
- •1.9.7 Функции для организации взаимодействия с пользователем
- •1.9.8 Функции — заменители синтаксических конструкций
- •1.9.9 Функции для работы с массивами
- •1.9.10 Функции для работы с файловой системой
- •1.9.11 Прочие функции vba
- •2. Работа с объектами и объектные модели
- •2.1 Что такое классы и объекты
- •2.2 Создание и удаление объектов
- •2.3 Методы объекта
- •2.4 Свойства объекта
- •2.5 События объекта и объявление WithEvents
- •2.6 Просмотр объектов
- •2.7 Объектные модели
- •Задание для самостоятельной работы 2.1 Windows Script Host в приложениях vba
- •3. Формы, элементы управления и события
- •3.1 Для чего нужны формы
- •3.2 Создание форм и самые важные свойства и методы форм
- •3.3 Элементы управления
- •3.3.1 Что такое элементы управления
- •3.3.2 Элемент управления Label (надпись)
- •3.3.3 Элемент управления TextBox (текстовое поле)
- •3.3.4 Элемент управления ComboBox (комбинированный список)
- •3.3.5 Элемент управления ListBox (список)
- •3.3.6 Элементы управления CheckBox (флажок) и ToggleButton (кнопка с фиксацией)
- •3.3.7 Элементы управления OptionButton (переключатель) и Frame (рамка)
- •3.3.8 Элемент управления CommandButton (кнопка)
- •3.3.9 Элементы управления ScrollBar (полоса прокрутки) и SpinButton (счетчик)
- •3.3.10 Элементы управления TabStrip (набор вкладок) и MultiPage (набор страниц)
- •3.3.11 Элемент управления Image (рисунок)
- •3.3.12 Применение дополнительных элементов управления. Элементы управления Microsoft Web Browser, Calendar, RefEdit
- •Задание для самостоятельной работы 3.1 Работа с элементами управления
- •4. Работа с панелями инструментов и меню
- •Задание для самостоятельной работы 4.1 Работа с панелями инструментов, меню и помощником
- •5. Программирование в Word
- •5.1 Зачем программировать в Word
- •5.2 Введение в программирование в Word. Обзор объектной модели Word
- •5.3 Объект Application
- •5.3.1 Как работать с объектом Application
- •5.3.2 Свойства, методы и события объекта Application
- •5.4 Коллекция Documents и объекты Document
- •5.4.1 Как работать с коллекцией Documents
- •5.4.2 Свойства и методы коллекции Documents
- •5.4.3 Работа с объектом Document , его свойства и методы
- •5.5 Объекты Selection , Range и Bookmark
- •5.5.1 Работа с объектом Selection
- •5.5.2 Свойства и методы объекта Selection
- •5.5.3 Работа с объектом Range, его свойства и методы
- •5.5.4 Объект Bookmark
- •5.6 Другие объекты Word
- •5.6.1 Коллекция AddIns и объекты AddIn
- •5.6.2 Объект AutoCorrect
- •5.6.3 Коллекция Languages и объект Language
- •5.6.4 Объект Options
- •5.6.5 Объекты Find и Replacement
- •5.6.6 Объекты Font и ParagraphFormat
- •5.6.7 Объект PageSetup
- •5.6.8 Объекты Table , Column, Rowи Cell
- •5.6.9 Объект System
- •5.6.10 Коллекция Tasks и объект Task
- •5.6.11 Коллекция Windows и объект Window
- •Задание для самостоятельной работы 5.1 Программное формирование документа в Word
- •6. Программирование в Excel
- •6.1 Зачем программировать в Excel
- •6.2 Объект Application
- •6.3 Свойства и методы объекта Application
- •6.4 Коллекция Workbooks и объект Workbook, их свойства и методы
- •6.5 Коллекция Sheets и объект Worksheet , их свойства и методы
- •6.6 Объект Range, его свойства и методы
- •6.7 Коллекция QueryTables и объект QueryTable
- •6.8 Работа со сводными таблицами (объект PivotTable)
- •6.9 Работа с диаграммами: объект Chart
- •6.10 Другие объекты Excel
- •Задание для самостоятельной работы 6.1 Применение Excel для анализа информации из базы данных
- •7. Программирование в Access
- •7.1 Отличительные особенности создания приложений Access
- •7.2 Основные этапы создания приложений Access
- •7.3 Объект Application , его свойства и методы
- •7.4 Макрокоманды и объект DoCmd
- •7.5 Работа с формами Access из vba (объект Form )
- •7.6 Свойства, методы и события форм
- •7.7 Работа с отчетами (объект Report )
- •7.8 Другие объекты Access
- •Задание для самостоятельной работы 7.1 Создание приложения vba в Access
- •8. Программирование в PowerPoint
- •Задание для самостоятельной работы 8.1 Программное добавление элементов в слайды
7.7 Работа с отчетами (объект Report )
Объект Access.Report, программная работа с отчетами Access средствами VBA, создание, открытие, печать отчета из VBA, работа с облатсями и элементами управления отчета Access
Еще один часто используемый в программах объект Access — это отчет (представленный объектом Report). Отчеты Access — это, возможно, самый простой способ генерации отчетов к базам данных (по сравнению с другими способами генерации отчетов, например, такими, как применение Crystal Reports, Microsoft Reporting Services или уже рассмотренных нами связок VBA/ADO/Word и VBA/ADO/Excel). При помощи отчетов Access можно, конечно, генерировать отчеты не только для самих баз данных Access, но и для внешних источников данных, например, баз данных SQL Server или Oracle. При этом необходимость обеспечивать в отчетах дополнительные функциональные возможности (например, условное форматирование) реализуется именно средствами VBA.
С программной точки зрения работа с отчетами очень похожа на работу с формами. Точно так же доступ к объектам всех отчетов можно получить при помощи коллекции Application.CurrentProject.AllReports (в которой находятся объекты AccessObject), а доступ ко всем открытым отчетам — при помощи коллекции Reports с более традиционными объектами Report. Точно так же очень редко приходится создавать отчеты программными средствами — обычно эта операция производится из вкладки Отчеты окна базы данных. Однако отчеты программным образом приходится создавать все-таки чаще, чем формы. Создать отчет программным способом можно при помощи метода Application.CreateReport():
Dim oReport As Report
Set oReport = Application.CreateReport()
В этом случае отчет будет создан только в оперативной памяти, откуда он бесследно исчезнет после завершения работы создавшей его процедуры. Сохранить отчет с именем по умолчанию (Отчет1, Отчет2 и т.п. в русской версии Access) можно, добавив в наш код строку
DoCmd.Close , , acSaveYes
Но, конечно, чаще нам нужно сохранять созданный отчет с указанным нами именем. Для этой цели перед вызовом метода DoCmd.Close() нужно поставить вызов другого метода — DoCmd.Save():
DoCmd.Save , "Отчет_по_продажам"
DoCmd.Close
Конечно, метод CreateReport() создаст пустой отчет (если только мы не передадим ему в качестве параметра шаблон отчета с уже имеющимися элементами управления). В отчете можно использовать те же элементы управления, что и в форме. Но прежде, чем помещать в отчет элементы управления, необходимо разобраться, где они будут находится.
Отчет в Access может состоять из девяти областей, из которых по умолчанию видны только три:
верхний колонтитул (Page Header) — подразумевается верхний колонтитул для страницы. Он будет повторяться столько раз, сколько записей у нас в отчете. Обычно в него помещается номер страницы, информация о самом отчете, его авторе, в ленточных отчетах (когда в области данных данные идут в виде столбцов) — возможно, еще и заголовки столбцов;
область данных (Details), иногда также называется "подробности" — основная область отчета, в которую обычно выводятся записи из базы данных. Эта область будет повторяться столько раз, сколько записей у нас в базе данных
нижний колонтитул (Page Footer) — нижний колонтитул для страницы. Используется обычно для того же, что и верхний колонтитул.
Если щелкнуть правой кнопкой мыши по пустому месту на отчете и в контекстном меню выбрать Заголовок/примечание отчета, то будут показаны еще две области отчета (см. рис. 12.6):
Рис. 12.6 В окне дизайнера появились дополнительные области отчета
-
заголовок отчета (Report Header) — специальная область, которая идет перед всем отчетом, и не повторяется. Обычно в нее помещается сводная информация об отчете: автор, количество страниц, время вывода, итоги, диаграмма, представляющая данные в отчете и т.п.
-
примечание отчета (Report Footer) — область в конец отчета, которая также не повторяется. Используется для тех же целей, что и заголовок отчета.
-
верхний колонтитул для группы первого уровня (Group Level 1 Header), верхний колонтитул для группы второго уровня (Group Level 2 Header), нижний колонтитул для группы первого уровня (Group Level 1 Footer), нижний колонтитул для группы второго уровня (Group Level 1 Footer) — эти области появляются после того, как в отчете будут созданы группы соответственно первого и второго уровня. Эти области повторяются для каждой группы соответствующего уровня. В них обычно помещаются заголовки групп и итоги по группе.
После того, как мы разобрались, куда именно мы хотим поместить элемент управления, для непосредственного размещения элемента управления в отчете можно использовать метод Application.CreateReportControl(). В качестве параметров этот метод принимает имя отчета (он обязательно должен быть открыт), тип элемента управления, область отчета, в которую необходимо поместить этот элемент управления, а также имя столбца, к которому может быть привязан элемент управления и координаты элемента управления в отчете. Например, создать в области Details ни к чему не привязанное текстовое поле с именем можно так:
Set txt1 = CreateReportControl(oReport.Name, acTextBox, acDetail)
txt1.Name = "txtCustomerID"
Если же вы пошли обычным путем и создали отчет не программным образом, а на графическом экране при помощи мастера или конструктора, то, возможно, вам потребуется его открыть программным образом. Делается это, как вы уже, наверное, догадались, при помощи метода DoCmd.OpenReport(). Однако здесь есть одна тонкость: если вы выполните самый простой вариант кода, например
DoCmd.OpenReport "Отчет_по_продажам"
то отчет, вместо того, чтобы открыться в окне просмотра, отправится на печать. Чтобы все-таки просмотреть его, нужно использовать код вида
DoCmd.OpenReport "Отчет_по_продажам", acViewPreview
Обращаться к элементам управления в отчете можно точно так же, как и к элементам управления формы — при помощи коллекции Controls.
Свойства, методы и события объекта Report практически полностью совпадают со свойствами, методами и событиями объекта Form, которые были рассмотрены ниже. Единственное принципиальное исключение — в объекте Report предусмотрен специальный набор методов для рисования, таких, как Circle() (нарисовать круг или эллипс), Line() (нарисовать линию), PSet() (установить цвет для отдельного пикселя) и т.п., а также набор свойств и методов для программного вывода текстовых надписей. Но обычно нет смысла увлекаться довольно трудоемким рисованием или выводом текста — намного проще выполнить необходимые действия в режиме конструктора на графическом экране. Если вместо рисования кругов и линий на экране вы воспользуетесь элементов управления Image (Рисунок), то возможностей у вас будет намного больше.