Добавлен: 05.12.2023
Просмотров: 152
Скачиваний: 3
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
rs.Open "Клиенты", cn, adOpenDynamic, adLockOptimistic
rs.MoveFirst
TextBoxIdClient.Text = rs.Fields("Id Клиента").Value
TextBoxFirstName.Text = rs.Fields("Фамилия").Value
TextBoxSecondName.Text = rs.Fields("Имя").Value
TextBoxThirdName.Text = rs.Fields("Отчество").Value
TextBoxGender.Text = rs.Fields("Пол").Value
TextBoxAddress.Text = rs.Fields("Адрес").Value
TextBoxPhoneNamber.Text = rs.Fields("Телефон").Value
Exit Sub
ErrorHandler:
If ("База данных была приведена пользователем 'Admin' на компьютере 'DESKTOP-AEOHGQF' в состояние, препятствующее ее открытию или блокировке." = Err.Description) Then
DoCmd.Close
DoCmd.OpenForm "Клиенты"
Err.Clear
End If
If ("Операция не допускается, если объект открыт." = Err.Description) Then
MsgBox "Подключение уже установлено!"
End If
End Sub
Пример кнопки «Удалить»:
Private Sub CommandDelete_Click()
rs.Delete
TextBoxIdClient.Text = ""
TextBoxFirstName.Text = ""
TextBoxSecondName.Text = ""
TextBoxThirdName.Text = ""
TextBoxGender.Text = ""
TextBoxAddress.Text = ""
TextBoxPhoneNamber.Text = ""
End Sub
Пример кнопки «Дальше»:
Private Sub CommandNext_Click()
If (rs.EOF = False) Then rs.MoveNext
If (rs.EOF) Then
MsgBox ("Дальше нет данных")
Exit Sub
End If
TextBoxIdClient.Text = rs.Fields("Id Клиента").Value
TextBoxFirstName.Text = rs.Fields("Фамилия").Value
TextBoxSecondName.Text = rs.Fields("Имя").Value
TextBoxThirdName.Text = rs.Fields("Отчество").Value
TextBoxGender.Text = rs.Fields("Пол").Value
TextBoxAddress.Text = rs.Fields("Адрес").Value
TextBoxPhoneNamber.Text = rs.Fields("Телефон").Value
End Sub
Запросы
Запрос – вопрос к БД, ответом на который будет служить одна, ни одной, или несколько записей удовлетворяющих критериям запроса. Задаваемы в запросе условия – значения конкретных полей – называются критериями отбора.
Запросы позволяют:
-
фильтровать и сортировать данные; -
производить расчёты; -
группировать записи (рассчитывая различные итоговые значения); -
вносить изменения сразу в несколько записей; -
создавать таблицы, как результат запроса.
Типы запросов
-
Запрос на выборку – осуществляет загрузку и отображение записей в режиме таблицы. -
Перекрёстный запрос – позволяет выполнить подсчёты (суммы, количество записей и средние значения) по данным одного поля таблицы. Результаты группируются в ячейках, соответствующих конкретным полям обсчитываемой БД. -
Запрос на изменение – помогает выполнить операции с записями, удовлетворяющими заданным критериям: запрос на удаление удаляет их таблицы заданные записи; запрос на обновление изменяет соответствующие записи таблицы; запрос на добавление добавляет в конец таблицы новые записи (соответствующие условиям отбора); запрос на создание таблицы создаёт новые таблицы, состоящие из заданных частей. -
Запрос с параметрами – позволяет ввести информацию, используемую в качестве критериев отбора.
В своей работе я создал 4 различных запросов (с точным совпадением, с неточным совпадением, с группировкой, с вычисляемым полем).
Результат каждого запроса выводится в динамически создаваемую форму.
Список всех запросов представлен на рисунке 6.
Рисунок 6 — Список запросов в БД «Гостиница»
Далее представлен запрос (рисунок 7) в режиме конструктора, с неточным поиском, который выводит данные клиентов, в Фамилии которых присутствуют заданные параметры «Не точный поиск» (начальные буквы/слоги фамилии).
Рисунок 7 — запрос поиск по Фамилии в режиме конструктора БД «Гостиница».
Далее представлен запрос после выполнения (рисунок 8). Введем, например, начальные буквы фамилии, так как реализован запрос с неточным поиском.
Рисунок 8 — запрос начального параметра в БД «Гостиница».
Далее (рисунок 9) получаем нужный результат:
Рисунок 9 — результат запроса в БД «Гостиница»
Если нам нужен запрос с точным совпадением, в условие отбора достаточно ввести квадратные скобки «[ ]». И в результате будет открыто диалоговое окно, предлагая ввести точные значения. Если внутри квадратных скобок написать текст, то диалоговое окно будет иметь сообщение с этим текстом.
Рисунок 9 — Запрос поиск по номеру заселения в режиме конструктора БД «Гостиница».
Рисунок 10 — Пример выполнения запроса с точным совпадением БД «Гостиница».
Пример программы для обработки запроса «Поиск по номеру заселения»
Private Sub CommandVisits_Click()
Dim comsql As String
Dim frm As Form
Dim ctl As Control
Dim i As Integer
Dim nomer As String
cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Admin\Desktop\Курсовая\Гостиница.accdb;Persist Security Info=False;"
cn.Open
rs.CursorLocation = adUseClient
rs.CursorType = adOpenDynamic
rs.LockType = adLockOptimistic
nomer = InputBox("Введите № Заселения: ")
If (nomer = "" Or Not (IsNumeric(nomer))) Then
MsgBox ("Введено неверное значение")
cn.Close
Exit Sub
End If
comsql = "SELECT Заселения.[№ Заселения], Клиенты.Фамилия, Клиенты.Имя, Клиенты.Отчество, Клиенты.Телефон, Гостиницы.Название FROM Гостиницы INNER JOIN (Клиенты INNER JOIN Заселения ON Клиенты.[Id Клиента] = Заселения.[Id Клиента]) ON Гостиницы.Название = Заселения.Гостиница WHERE (((Заселения.[№ Заселения]) Like '%" & nomer & "%'));"
On Error GoTo ErrorHandler
rs.Open comsql, cn, adOpenKeyset
rs.MoveFirst
Set frm = CreateForm
With frm
.Caption = "Поиск по номеру заселения"
.ScrollBars = 0
.RecordSelectors = False
.NavigationButtons = False
.DividingLines = False
.AutoCenter = True
.BorderStyle = 3
.Section(0).Height = 3.862 * appCM
.Width = 10.926 * appCM
.HasModule = True
End With
Dim ctlText As Control
Dim intDataX As Integer, intDataY As Integer
intDataX = 100
intDataY = 100
i = 0
Set ctlText = CreateControl(frm.Name, acLabel, , "", "№ Заселения", intDataX, intDataY)
Set ctlText = CreateControl(frm.Name, acLabel, , "", "Фамилия", intDataX + 3000, intDataY)
Set ctlText = CreateControl(frm.Name, acLabel, , "", "Имя", intDataX + 6000, intDataY)
Set ctlText = CreateControl(frm.Name, acLabel, , "", "Отчество", intDataX + 11000, intDataY)
Set ctlText = CreateControl(frm.Name, acLabel, , "", "Телефон", intDataX + 14000, intDataY)
Set ctlText = CreateControl(frm.Name, acLabel, , "", "Гостиница", intDataX + 17000, intDataY)
intDataY = intDataY + 300
While i < rs.RecordCount
Set ctlText = CreateControl(frm.Name, acLabel, , "", rs.Fields("№ Заселения").Value, intDataX, intDataY)
Set ctlText = CreateControl(frm.Name, acLabel, , "", rs.Fields("Фамилия").Value, intDataX + 3000, intDataY)
Set ctlText = CreateControl(frm.Name, acLabel, , "", rs.Fields("Имя").Value, intDataX + 6000, intDataY)
Set ctlText = CreateControl(frm.Name, acLabel, , "", rs.Fields("Отчество").Value, intDataX + 11000, intDataY)
Set ctlText = CreateControl(frm.Name, acLabel, , "", rs.Fields("Телефон"), intDataX + 14000, intDataY)
Set ctlText = CreateControl(frm.Name, acLabel, , "", rs.Fields("Название"), intDataX + 17000, intDataY)
intDataY = intDataY + 300
rs.MoveNext
i = i + 1
Wend
DoCmd.OpenForm frm.Name
rs.Close
cn.Close
Exit Sub
ErrorHandler:
If ("База данных была приведена пользователем 'Admin' на компьютере 'DESKTOP-AEOHGQF' в состояние, препятствующее ее открытию или блокировке." = Err.Description) Then
DoCmd.Close
DoCmd.OpenForm "Для запросов"
Err.Clear
End If
End Sub
Так же добавлена обработка ошибок на случай если пользователь оставит поле «ввода» пустым или же введет неверные данные.
Пример:
Рисунок 11 — Диалоговое окно запроса БД «Гостиница».
Результат:
Рисунок 12 —Ошибка БД «Гостиница».
Отчеты
Отчёт – форма для обработки данных на бумажных носителях.
Содержание отчётов:
-
Элементы оформления. -
Схемы и диаграммы. -
Верхние и нижние колонтитулы, содержащие служебную информацию. -
Графические элементы управления, в том числе фотографии и иллюстрации.
Режимы работы с отчётом:
-
Конструктор -
Образец -
Предварительный просмотр
Создание отчета с помощью мастера отчетов
В мастере отчетов можно более точно настроить поля
, которые требуется включить в отчет. При этом вы можете указать способ группировки и сортировки данных, а также добавить в отчет поля из нескольких таблиц или запросов, если отношения между ними заданы заранее.
-
на вкладке «Создание» в группе «Отчеты» выберите «Мастер отчетов»; -
следуйте указаниям на страницах мастера отчетов. На его последней странице нажмите кнопку «Готово».
Создание отчета с помощью средства "Отчет"
Средство "Отчет" — это самый быстрый способ создания отчета, потому что при его использовании отчет формируется сразу же, без запроса дополнительной информации. В отчете будут представлены все записи базовой таблицы или запроса. Хотя получившийся отчет, скорее всего, будет далек от совершенства, он позволит быстро просмотреть базовые данные. После этого отчет можно сохранить и изменить в режиме макета или конструктора в соответствии с поставленной задачей.
-
В области навигации щелкните таблицу или запрос, на основе которых вы хотите создать отчет. -
На вкладке «Создание» в группе «Отчеты» выберите «Отчет».
Access создаст отчет и отобразит его в режиме макета.
Создание отчета с помощью средства "Пустой отчет"
Если вам не подходят ни средство "Отчет", ни мастер отчетов, можно создать отчет с нуля при помощи средства "Пустой отчет". Это очень быстрый способ, особенно если в отчет нужно добавить всего несколько полей. Чтобы воспользоваться средством "Пустой отчет", выполните следующие действия:
-
на вкладке Создание в группе Отчеты выберите Пустой отчет; -
в режиме макета будет открыт пустой отчет, а в правой части окна Access появится область "Список полей";
-
в области Список полей щелкните знак плюс (+) рядом с одной или несколькими таблицами, содержащими поля, которые вы хотите включить в отчет; -
по очереди перетащите каждое из полей в отчет либо, нажав и удерживая клавишу CTRL, выберите несколько полей и перетащите их одновременно;
-
с помощью инструментов в группе Колонтитул на вкладке Конструктор можно добавить в отчет логотип компании, название, номера страниц, дату и время.
Разделы отчета
Отчет Access состоит из нескольких разделов. Разделы можно просматривать в режиме конструктора. Чтобы создавать полезные отчеты, необходимо понимать, для чего используется каждый раздел. Например, от того, в каком разделе размещается вычисляемый элемент управления, зависит то, как Access рассчитывает результаты.
В следующем списке описаны разделы отчета и их использование:
-
заголовок отчета. Печатается только один раз в начале отчета. В заголовок включается информация, обычно помещаемая на обложке, например, логотип компании, название отчета или дата. Если в заголовок отчета добавлен вычисляемый элемент управления, использующий агрегатную функцию Sum, сумма рассчитывается для всего отчета. Заголовок отчета печатается перед верхним колонтитулом. -
верхний колонтитул. Печатается вверху каждой страницы. Верхний колонтитул используется в тех случаях, когда нужно, например, чтобы название отчета повторялось на каждой странице. -
заголовок группы. Печатается в начале каждой новой группы записей. Заголовок группы служит для печати имени группы. Например, в отчете, сгруппированном по товарам, заголовок группы можно использовать для печати названия товара. Если в заголовке группы есть вычисляемый элемент управления с агрегатной функцией Sum, сумма вычисляется для текущей группы. -
область данных. Этот раздел печатается один раз для каждой строки данных из источника записей. В нем размещаются элементы управления, составляющие основное содержание отчета. -
примечание группы. Печатается в конце каждой группы записей. Примечание группы можно использовать для печати сводной информации о ней. -
нижний колонтитул. Выводится в конце каждой страницы. Используется для нумерации страниц и печати сведений, относящихся к странице. -
примечание отчета. Печатается один раз в конце отчета. Примечание отчета можно использовать для печати итогов и другой сводной информации по всему отчету.
Рисунок 13 — Отчет «Результаты стоимостей номеров» в режиме конструктора БД «Гостиница».
Список всех отчетов, созданных для БД «Гостиница» и их выводом в Word и Excel, представлен на рисунке 14.
Рисунок 14 — Список всех отчетов БД «Гостиница».
Далее представлены отчет «Общая сводка по Заселениям» и «Результаты стоимостей номеров» в БД «Гостиница» (рисунок 15):
Рисунок 15 — Отчет Общая сводка по Заселениям в БД «Гостиница».