Ане. МЕТОДИЧКА Full. Методические указания по выполнению лабораторных работ по дисциплине Базы и банки данных
Скачать 1.71 Mb.
|
Лабораторная работа №12«Разработка клиентского приложения»Цель: научиться самостоятельно создавать клиентское приложение с помощью базы данных Access и языка программирования Visual Basic For Application. База Данных это набор таблиц, связанных или нет, состоящих из колонок и строк. Колонки имеют строгий формат. Access - это конкретная реализация общей идеи базы данных для персонального использования. ACCESS можно использовать как средство создания интерфейса к базам данных, хранящимся на сервере. Обращаться к данным приложение будет с помощью запросов, а выдавать результат будет при помощи отчетов. Передача команд в базу данных SQL с помощью запроса к серверу Запросы к серверу передают команды непосредственно на сервер базы данных ODBC (например, Microsoft SQL Server). Запросы к серверу позволяют работать непосредственно с таблицами на сервере, не прибегая к их связыванию. В окне базы данных выберите значок Запросы в списке Объекты и нажмите кнопку Создать на панели инструментов окна базы данных. В диалоговом окне Новый запрос выберите в списке строку Конструктор и нажмите кнопку OK. Не добавляя таблицы или запросы, нажмите в диалоговом окне Добавление таблицы кнопку Закрыть. В меню Запрос выберите команду Запрос SQL и подкоманду Запрос к серверу. Нажмите на панели инструментов кнопку Свойства для открытия окна свойств запроса. В окне свойств запроса укажите в свойстве Строка подключения ODBC (ODBCConnectStr) сведения, необходимые для подключения к внешней базе данных. Введите строку подключения самостоятельно или нажмите кнопку построителя и введите данные о сервере, к которому необходимо подключиться. За сведениями о синтаксисе запроса следует обращаться к документации сервера базы данных SQL, на который посылается запрос. Если запрос не принадлежит к типу запросов, в которых возвращаются записи, выберите для свойства Возврат записей (ReturnsRecords) значение Нет. Введите инструкцию SQL в окно запроса к серверу. Для запуска запроса нажмите кнопку Запуск на панели инструментов. Для запроса к серверу, возвращающего записи, можно также нажать на панели инструментов кнопку Вид. При необходимости Microsoft Access выведет приглашение ввести сведения, требуемые для подключения к базе данных Microsoft SQL Server. Внимание! При преобразовании запроса к серверу в запрос другого типа, например, в запрос на выборку, введенная инструкция SQL будет потеряна. Примечания Запросы к серверу рекомендуется использовать для запуска сохраненных процедур на сервере ODBC. Если в свойстве Строка подключения ODBC (ODBCConnectStr) не указана строка подключения или если существующая строка удалена, Microsoft Access по умолчанию использует строку "ODBC;". В этом случае при каждом запуске запроса будет выводиться приглашение ввести необходимые для подключения сведения. В некоторых запросах к серверу наряду с данными возвращаются сообщения. При заданном для свойства Таблица сообщений (LogMessages) значении Да. Microsoft Access создает таблицу, в которую записываются возвращаемые сообщения. Имя этой таблицы образуется из имени пользователя, к которому добавляется дефис ( - ) и порядковый номер, отсчет которых начинается с 00. Например, для пользователя, получившего по умолчанию имя «ADMIN», таблицы возвращаемых сообщений будут иметь имена «ADMIN-00», «ADMIN-01» и т. д. Если создан запрос, возвращающий несколько результирующих наборов записей, то каждый из этих наборов может быть сохранен в отдельной таблице. Создание запроса к серверу с параметром. Пример. Рассмотрим пример. Пусть у нас имеется форма «dbo_Платные_услуги», с помощью которой библиотекарь осуществляет оформление платной услуги (рисунок 1) Рисунок 1 – Форма «dbo_Платные_услуги» Значения, вводимые в поля «Табельный_номер», «Читательский_номер», «Книга», «Сумма» и «дата_услуги» при нажатии на кнопку с изображением стрелки должны заноситься в таблицу «Платные_услуги», т.е. при нажатии на данную кнопку должна вызываться процедура на добавление новых данных в таблицу «Платные_услуги». Значения поля «Сумма» рассчитывается в зависимости от введенных значений в полях «Часов», «Дней» и значений переключателей «Студент» и «Преподаватель». Код программы присвоения полю «Сумма» значения приведен ниже. Листинг 1Private Sub Переключатель48_GotFocus() ‘Для студента On Error GoTo Err_ Переключатель48_Click Dim q As Integer Dim w As Integer Поле40.SetFocus q = Поле40.Text ‘Считываем значение поля «Дней» Поле42.SetFocus w = Поле42.Text ‘Считываем значение поля «Часов» Поле44.Value = w * 700 + q * 170 ‘Подсчитываем значение поля «Сумма» Exit_ Переключатель48_Click: Exit Sub Err_ Переключатель48_Click: MsgBox "Не указан срок услуги!" Resume Exit_ Переключатель48_Click End Sub Private Sub Переключатель46_GotFocus() ‘Для преподавателя On Error GoTo Err_ Переключатель46_Click Dim q As Integer Dim w As Integer Поле40.SetFocus q = Поле40.Text ‘Считываем значение поля «Дней» Поле42.SetFocus w = Поле42.Text ‘Считываем значение поля «Часов» Поле44.Value = w * 1000 + q * 200 ‘Подсчитываем значение поля «Сумма» Exit_ Переключатель46_Click: Exit Sub Err_ Переключатель46_Click: MsgBox " Не указан срок услуги!" Resume Exit_ Переключатель46_Click End Sub После того как все поля будут заполнены можно заносить данные в таблицу «Платные_ услуги». Код программы, вызывающий процедуру добавления новой записи, приведен ниже. Листинг 2Private Sub Кнопка11_Click() On Error GoTo Err_Кнопка11_Click Dim stDocName As String Dim dbs As Database, qdf As QueryDef, strSQL As String Dim TabNomer As String Dim ChitNomer As String Dim dateYcl As String Dim Cymma As String Set dbs = CurrentDb Set dbs = CurrentDb Табельный_номер.SetFocus TabNomer = Табельный_номер.Text ‘значение табельного номера Поле44.SetFocus ChitNomer = Поле44.Text ‘значение читательского номера Дата_услуги.SetFocus dateYcl = Дата_услуги.Text ‘значение даты услуги ПолеСоСписком20.SetFocus Cymma = ПолеСоСписком20.Text ‘значение суммы strSQL = "INSERT INTO dbo_Заказы VALUES (TabNomer, ChitNomer, Cymma, dateYcl) " ‘текст запроса. dbs.QueryDefs.Delete ("114") ‘удаление существующего запроса Set qdf = dbs.CreateQueryDef("114", strSQL) ‘вызов выполнения запроса с именем 114, и ‘текстом запроса strSQL. Set dbs = Nothing обнуляет значение текущей базы данных. DoCmd.GoToRecord , , acNext ‘очищает поля на форме Exit_Кнопка11_Click: ‘обработка ошибок Exit Sub Err_Кнопка11_Click: MsgBox Err.Description Resume Exit_Кнопка11_Click End Sub Если необходимой процедуры на сервере нет, то текст ее следует прописать в запросе. Рассмотрим, процесс получения отчета о платных услугах за какой-либо месяц. Рисунок 2 – Получение отчета за месяц Из выпадающего списка необходимо выбрать номер отчетного месяца. И нажать на кнопку «Показать отчет». При нажатии срабатывает динамический запрос. Код программы выполняющей построение отчета приведен ниже. Листинг 3Private Sub Кнопка27_Click() On Error GoTo Err_Кнопка27_Click Dim stDocName As String Dim dbs As Database, qdf As QueryDef, strSQL As String Dim strdat As Integer Dim strdate As String Set dbs = CurrentDb ‘возвращает текущую базу данных ПолеСоСписком25.SetFocus strdate = ПолеСоСписком25.Text ‘номер месяца, выбранный из списка strSQL = "SELECT dbo_Платные_услуги.табельный_номер, dbo_Платные_услуги.Сумма, dbo_Платные_услуги.читательский_номер,dbo_Платные_услуги.Дата_услуги FROM dbo_Платные_услуги WHERE Month(dbo_Платные_услуги.Дата_услуги)=" + strdate ‘текст запроса. Month(<Дата_услуги> возвращает числовое значение номера месяца ‘указанной даты. dbs.QueryDefs.Delete ("услуги") ‘Команда удаления существующего запроса. При первом ‘вызове строка должна быть закоментированна. Set qdf = dbs.CreateQueryDef("услуги", strSQL) ‘создает запрос с именем «Услуги» и текстом услуги, хранящемся в строке strSQL. DoCmd.OpenReport "услуги", acPreview ‘Открывает отчет с именем «Услуги» для ‘просмотра Set dbs = Nothing ‘обнуляет значение текущей базы данных. Exit_Кнопка27_Click: ‘обработка ошибок Exit Sub Err_Кнопка27_Click: MsgBox Err.Description Resume Exit_Кнопка27_Click End Sub Создание отчета. Чтобы создать отчет с помощью мастера необходимо: В разделе Отчеты выбрать «Создание отчета с помощью мастера. Рисунок 3 – Объект «Отчеты» В появившемся окне выбрать поля для отчета. В разделе «Таблицы и запросы» выбрать необходимый запрос. Переместить поля запроса из раздела «Доступные поля» в раздел «Выбранные поля» с помощью клавиш > и >>. Нажать «Далее». На шаге третьем выбрать порядок сортировки полей отчета. Нажать «Далее». На четвертом шаге выбрать макет для отчета и ориентацию отчета. Нажать «Далее». Выбрать стиль заголовка отчета. Нажать «Далее». Нажать «Готово». Если необходимо сделать некоторые изменения в макете отчета, то следует перейти в режим «Конструктор» и добавить изменения. Рисунок 4 – Создание отчета. Шаг 1 Создание перехода между формами: Отрыть исходную форму в конструкторе. На панели инструментов вызвать значок кнопка. Поместить кнопку на форму. Появится мастер создания формы. Здесь выбрать категорию Работа с формой, а в действиях Открытие формы. По нажатию но кнопку далее откроется окно, в котором нужно выбрать какую форму открывать. В следующем окне мастера необходимо выбрать, что будет показано на кнопке (рисунок или текст). Создание зависимостей между полями со списком Пусть на форме «dbo_Платные_услуги» при выборе фамилии из списка фамилий сотрудника, табельный номер должен выставляться автоматически. Сделать это можно следующим образом: Добавить на форму элемент ПолеСоСписком, значения которого выбираются из поля «Табельный_номер» таблицы «Сотрудники». Добавить на форму элемент ПолеСоСписком, содержащим значения которого выбираются из поля «Фамилия» и «Табельный_номер» таблицы «Сотрудники». При этом мастера добавления предложит вам скрыть ключевой столбец «Табельный_номер». Через меню свойства вызвать обработку события для поля «Фамилия» и в программу обработки внести следующий код Private Sub Фамилия_Dirty(Cancel As Integer) Табельный_номер.Value = Фамилия.Value End Sub Автоматический ввод даты при получении курсора Чтобы дата в каком либо поле автоматически выставлялась, необходимо для этого поля написать следующий код: Private Sub Дата_услуги_GotFocus() Дата_услуги.Value = Date End Sub Где Дата_услуги поле, значению которого автоматически присваивается значение текущей даты Автоматический старт формы при запуске Очень удобно при запуске базы данных получать форму сразу. То есть открывается база данных и автоматом открывается форма. Для этого нужно зайти в меню "Сервис -> Параметры запуска". Рисунок 5 – меню Сервис Здесь нужно выбрать какая форма у вас будет выводиться при запуске приложения. А также изменить другие параметры записка приложения. Рисунок 5 – Выбор параметров запуска Вопросы: Как создаются запросы к серверу? Как создать запрос, который будет срабатывать при нажатии на какую-либо кнопку на пользовательской форме? С помощью какой макрокоманды создается и передается на сервер запрос? Для чего нужна команда CurrentDb? Как создать отчет с помощью мастера? Как установить автоматический ввод даты? Можно ли создавать поля, значение одного из которых будет зависеть от значения другого поля? Можно ли изменить отчет, созданный с помощью мастера? Как создавать переходы между формами? Как установить автоматический вывод формы при запуске приложения? |