- •Основные понятия систем управления базами данных
- •Базы данных и системы управления базами данных
- •База данных ms Access, ее основные возможности
- •Основные возможности ms Access
- •Создание Базы данных
- •Формирование запроса
- •Проектирование форм и работа с нами.
- •Создание отчета
- •Список использованной литературы
Проектирование форм и работа с нами.
В процессе работы с формой может выполняться обработка событий, инициируемых пользователем. Типовые процедуры обработки событий могут формироваться автоматически при создании мастером некоторых элементов формы. Одним из этих элементов являются графические кнопки, позволяющие автоматизировать следующие операции:
переходы по записям источника формы, обработку записей (добавление, удаление, печать, восстановление);
работу с формой (закрытие, открытие, изменение фильтра, обновление данных, печать формы);
работу с отчетом (печать, просмотр, отправка, вывод в файл), с приложением (запуск приложения, выход из приложения, запуск Word, Excel, Блокнота);
запуск запроса, макроса, печать таблицы, автонабор номера.
Для формы и ее элементов управления в Access определен набор типовых событий, для которых могут быть разработаны процедуры обработки события. Примерами таких событий являются: "Открытие формы", "Закрытие формы", "Текущая запись", "До обновления", "После обновления", "Нажатие кнопки", "Двойное нажатие кнопки".
Таким образом, комплекс средств создания и работы с формами Access позволяет значительно упростить технологию работы с базой данных, сделав ее комфортной для пользователя.
Основы создания однотабличных форм
На основе одной таблицы может быть построена как самостоятельная форма для загрузки, просмотра и корректировки таблицы, так и вспомогательная форма для включения в какую-либо составную форму.
Для создания формы могут быть использованы мастера Access. Однако окончательное формирование макета формы в соответствии с требованиями пользователя, выработанными в процессе ее проектирования, обеспечивается средствами конструирования форм. Простейшую форму на основе только одной таблицы можно создать выбором одного из режимов Автоформа: в столбец, Автоформа: ленточная, Автоворма: табличная. Автоформа: в столбец является однозаписевой, табличная и ленточная формы – многозаписевыми и размещают все поля в одной строке.
Команды Автоформа: в столбец, Автоформа: ленточная и Автоформа: табличная включают в форму все поля таблицы и не предоставляют возможности выбора стиля оформления. Эти команды выводят на экран готовую форму, заполненную значениями из таблицы. Для построения автоформы необходимо предварительно в окне Новая форма выбрать таблицу-источник.
Конструирование формы
Для конструирования форм ввода/вывода в Access используется конструктор форм. При конструировании однотабличной формы определяется таблица базы данных, на основе которой она создается. Такая форма является присоединенной, она получает данные из базового источника записей, которым является таблица. В процессе ее создания выбираются доля таблицы, которые должны быть представлены в форме, осуществляется их размещение в макете формы, создаются вычисляемые поля и графические элементы — кнопки, выключатели, элементы оформления, поясняющий текст, рисунки. Для настройки различных элементов формы используются их свойства.
Для работы с формами во многих ситуациях нам придется использовать общий объект AccessObject, который представляет в Access не только формы, но и таблицы, макросы, модули, отчеты и множество других элементов. Поскольку этот объект — универсальный, то, конечно, большой помощи от Intellisense — подсказки в редакторе VBA у нас не будет. Обратиться к объекту формы можно через коллекцию AllForms, которая доступна через объекты CodeProject и CurrentProject. Например, получить информацию о всех формах в базе данных Access можно так:
Dim oA As AccessObject
For Each oA In CurrentProject.AllForms
Debug.Print oA.Name
Next
Если вы будете обращаться к формам в коллекции AllForms по индексу, обратите внимание, что нумерация форм в этой коллекции начинается с 0. Обращаться к элементам в этой коллекции можно и по имени:
Debug.Print CurrentProject.AllForms("Форма1").IsLoaded
Специальное свойство IsLoaded определяет, открыта ли эта форма (то есть загружена ли она в оперативную память).
Программным образом формы можно найти и другим способом. Все открытые формы Access автоматически помещаются в коллекцию Application.Forms и представляются в виде объекта Form. Это — уже нормальный объект, свойства которого соответствуют свойствам формы, доступным через графический интерфейс. Например, если форма Форма1 открыта, получить информацию о ее ширине можно так:
Debug.Print Application.Forms("Форма 1").Width
Это свойство можно использовать и для изменения ширины формы, но для этой цели рекомендуется использовать метод DoCmd.MoveSize(), который изменяет размеры активного объекта (например, нашей формы, если она активна):
DoCmd.MoveSize Width :=10000
Еще одна возможность: если вы работаете с кодом самой формы или ее элементов управления (например, события Click кнопки, которая расположена на форме), то обратиться к объекту самой этой формы можно совсем просто. Для этого используется ключевое слово Form.
Как можно открыть форму?
Первое, что нужно сказать — если в Word или Excel нам обязательно потребуется открыть форму программным способом, то в Access это совсем необязательно. Можно открыть форму и вручную из окна базы данных. Из этого же окна обычно производится создание новых форм или изменение существующих.
Еще один часто используемый способ — просто запускать форму при открытии базы данных Access. Для этого в меню Сервис нужно выбрать Параметры запуска и выбрать нужную форму в списке Вывод формы/страницы.
Окно базы данных будет скрыто от пользователя, а это значит, что пользователь не сможет получить информацию ни о таблицах нашей базы данных, ни о других формах, ни о модулях — все служебные элементы базы данных будут от него спрятаны. В принципе, пользователь может обойти такую защиту, держа нажатой при запуске Access кнопку <Shift>, но программным способом можно закрыть и такую возможность.
Если все-таки нужно открыть форму программным способом (например, из другой формы), то для этой цели можно использовать метод DoCmd.OpenForm(). В самом простом варианте этот метод просто принимает параметр с именем формы:
DoCmd.OpenForm "Форма1"
Если же форма уже открыта, то этот метод, конечно, не открывает форму заново, а просто активизирует ее. Метод DoCmd.OpenForm() принимает также несколько необязательных параметров, при помощи которых вы можете настроить фильтр на отображение записей в форме, режим открытия формы (например, модальность) и т.п. Закрытие формы производится при помощи метода DoCmd.Close(). Если же вам нужно просто спрятать форму, чтобы сохранить введенные на ней пользователем значения и отобразить их при следующем показе, можно просто сделать форму невидимой, назначив ее свойству Visible значение False.
Форма нам обычно нужна не сама по себе, а как контейнер для расположенных на ней элементов управления. Обычно элементы управления программным способом создавать не требуется — намного проще и удобнее поместить их на форму в режиме конструктора для формы. В наборе элементов управления для формы предусмотрены как знакомые нам элементы управления — текстовые поля, надписи, кнопки, флажки и переключатели, так и новые элементы — свободная и присоединенная рамки объектов, разрывы страниц, подчиненные формы/отчеты и т.п. В верхнем правом углу Toolbox в конструкторе формы Microsoft Access находится специальная кнопка Мастера. Если она нажата, то добавление на форму привычных элементов управления (например, кнопки) приведет к появлению окна мастера, который попытается помочь вам автоматически сгенерировать нужный код VBA для этого элемента управления.
Можно использовать генерируемый мастером код как заменитель макрорекордера (которого в Access нет), чтобы понять, как можно выполнить те или иные действия.
Для чего используются нестандартные (по отношению к обычным формам VBA) элементы управления:
Свободная рамка объекта — возможность разместить на форме OLE-объект (например, документ Word, лист Excel, презентация PowerPoint, рисунок, звукозапись или видеоклип), который может быть встроен в базу данных Access (но не помещен в таблицу!) или находиться во внешнем по отношению к базе данных Access файлу.
Присоединенная рамка объекта — то же самое, за исключением того, что он применяется для работы с объектами OLE, которые хранятся в таблицах внутри баз данных Access или внешнего источника данных. Это — самый удобный способ генерации отчетов в Word.
Например, предположим, что в нашей базе данных Access находится таблица с тремя столбцами.
В столбце File у нас хранятся шаблоны Word, которые используются для генерации отчетов. Мы помещаем на форму элемент управления Присоединенная рамка объекта с именем WordTemplate. После этого все, что нужно для создания файла Word на основе шаблона из базы данных, у нас уже есть. Для кнопки, по нажатию на которой будет формироваться отчет, можно использовать следующий код:
'Получаем ссылку oFrame на объект присоединенной рамки на форме
Dim oFrame As BoundObjectFrame
Set oFrame = oForm.Controls("WordTemplate")
'При помощи метода DLookup () скачиваем в него значение столбца File из таблицы
'Templates, где номер строки (значение столбца Num ) равно 1
oFrame = Application.DLookup("[File]", "Templates", "[Num] = 1")
'Открываем объект в отдельном окне приложения — то есть создаем
'документ Word на основе шаблон, загруженного в рамку объекта на форме
oFrame.Verb = acOLEVerbOpen
'Активизируем объект приложения
oFrame.Action = acOLEActivate
'Получаем ссылку на Word в переменную oWord
Dim oWord As Word.Application
Set oWord = GetObject(, "Word.Application")
'Получаем ссылку на созданный нами документ
Dim oDoc As Word.Document
Set oDoc = oWord.ActiveDocument
'Дальше работаем средствами Word, например, вставляем нужный текст
'в места, отмеченные закладками
Конечно же, правильнее будет при этом сделать эту присоединенную рамку объекта на форме изначально невидимой — чтобы пользователь не мог этот объект активизировать по собственной инициативе.
Элемент управления Разрыв страницы — определяет начало нового экрана формы.
Подчиненная форма/отчет — используется для размещения на форме подчиненных форм, таблиц или отчетов.
Как уже говорилось, программным способом элементы управления в форме Access приходится создавать редко. Если на форме вам нужен переменный набор элементов управления, то правильнее будет с самого начала создать все нужные элементы управления и по необходимости делать их то видимыми, то невидимыми. Тем не менее создать программным способом элементы управления на форме тоже можно. Эта операция выполняется при помощи метода Application.CreateControl(), который принимает множество параметров — имя формы, на которой создается элемент управления, тип элемента управления, его месторасположение на форме и т.п.
