Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Описание работы с базой данных
Работа с базой данных начинается с загрузки формы «Защита» (рис.1)
При неправильном вводе пароля доступ в базу данных невозможен. К базе данных есть два типа доступа:

Рис.1
- Администратор – полный доступ ко всем формам, отчетам, запросам, возможность добавлять и редактировать данные. Пользователь – просмотр данных без возможности редактирования.
После регистрации форм «Защита» закрывается и загружается форма приветствия (рис.2) и по нажатию кнопки «ОК» она закрывается и загружается «Главная кнопочная форма» (рис.3).

Рис.2

Рис.3
«Главная кнопочная форма » имеет возможность перехода ко всем другим формам и отчетам базы данных, в зависимости от типа регистрации.
Поиск.
Пользователю и администратору доступна возможность поиска курсов по их типу и по организации, которая проводит курс.
По нажатию на кнопку «Поиск…» на «Главной кнопочной форме» пользователь получает возможность выбора поиска курсов в городе по организации или по типу курса(Рис.4).

Рис.4
По нажатию на кнопку «Поиск по организации» загружается форма «поиск по организации» (Рис.5), где пользователь выбирает из раскрывающегося списка организацию и по нажатию кнопки «Поиск» загружается форма «Организации»(Рис.6) с информацией о курсах предоставляемых в этой организации.

Рис.5

Рис.6
По нажатию на кнопку «Поиск по типу курса» загружается форма «Поиск по типу курса» (Рис.7), где пользователь выбирает из раскрывающегося списка тип курса и по нажатию кнопки «Поиск»
Загружается форма «Главная Названия курсов» (Рис.8) с данными о выбранном курсе (тип, кол-во человек в группе, организация, проводящая курс и т. д.)

Рис.7

Рис.8
На форме «Главная Названия курсов» находится кнопка Информация о фирме». По нажатии а эту кнопку загружается форма «Вопрос о фирме» (Рис.9) с раскрывающимся списком, в котором пользователь выбирает интересующую его фирму и по нажатию на кнопку «Информация» загружается форма «Информация о фирме» (Рис.10) с данными о выбранной организации.

Рис.9

Рис.10
Общая форма поиска содержит кнопку «Возврат возвращающую пользователя на! Главную кнопочную форму»
«Главная кнопочная форма» содержит кнопку «Все об организациях и курсах», по нажатию на которую загружается форма «Главная Названия курсов» с возможностью просмотра информации о всех курсах базы данных.
Печать отчетов.
В банной базе данных имеется возможность печать информации об организациях по типам курсов (Рис.12) и информации о курсах по организациям (Рис.13) и формы «Печать отчетов…»(Рис.11)

Рис.11

Рис.12

Рис.13
Форма «Печать отчетов» имеет кнопку «Возврат», позволяющую пользователю перейти на «Главную кнопочную форму».
Администрирование.
Возможности администрирования может увидеть и простой пользователь, но вносить изменения может только администратор.
Если входящий зарегистрировался как администратор, то ему доступны формы «Добавление курсов», «Справочники», «В окно Базы Данных»(Рис.14).

Рис.14
По нажатию на кнопку «Добавление курсов» загружается форма «Курсы и организации1»(Рис.15), при вводе новой фирмы загружается форма «Организации1»(Рис.16) с возможностью ввода данных о новой организации.
Все раскрывающиеся списки на данных формах имеют возможность ввода новых данных. При вводе новых данных в раскрывающийся список «Название курса» загружается форма «Названия курсов2»(Рис.17) с возможностью ввода типа курса.

Рис.15

Рис.16

Рис.17
На форме «Администрирование…» имеется кнопка справочники, загружающая форму «Справочники»(Рис.18).

Рис.18
Данная форма имеет возможность просмотра и ввода данных о типах курсов, районах, выдаваемых документах и формах обучения.
На форме «Администрирование…» имеется кнопка «В окно Базы Данных», при ее нажатии закрывается «Главная кнопочная форма» и открывается окно Базы Данных.
На форме «Администрирование…» также имеется кнопка «Возврат», возвращающая на «Главную кнопочную форму».
«Главная кнопочная форма» имеет кнопку «Выход», по нажатии на которую происходит выход из всего приложения.
Приложение1.
Формы.
«Защита»
Кнопка «ОК»
Private Sub Кнопка4_Click()
Dim Response
If Login([user], [password]) = True Then
DoCmd. Close
DoCmd. OpenForm "Заставка"
Else
MsgBox "Неправильное имя пользователя или пароль", vbOKCancel + vbCritical, "Promt"
End If
End Sub
Кнопка «Отмена» - макрос «Выход»
«Заставка»
Кнопка «ОК»
Private Sub Кнопка5_Click()
DoCmd. Close
DoCmd. OpenForm "Кнопочная форма"
End Sub
«поиск по организации»
Кнопка «Поиск»
Private Sub Поиск_Click()
On Error GoTo Err_Найти_Click
Dim stDocName As String
Dim stLinkCriteria As String
stLinkCriteria = ""
If Not IsNull(Me![ПолеСоСписком2]) Then
stLinkCriteria = "[Код организации]=" & Me![ПолеСоСписком2]
Else
stLinkCriteria = ""
End If
stDocName = "Организации"
DoCmd. OpenForm stDocName, , stLinkCriteria
Exit_Поиск_Click:
Exit Sub
Err_Найти_Click:
MsgBox Err. Description
Resume Exit_Поиск_Click
End Sub
Раскрывыющийся список ПолеСоСписком2
SELECT Организации.[Код организации], Организации. Название
FROM Организации
ORDER BY Организации. Название;
«Поиск по типу курса»
Кнопка «Поиск»
Private Sub Поиск_Click()
'On Error GoTo Err_Найти_Click
Dim stDocName As String
Dim stLinkCriteria As String
stLinkCriteria = ""
If Not IsNull(Me![Полекурс]) Then
stLinkCriteria = "[Тип курса]=" & Me![Полекурс]
Else
stLinkCriteria = ""
End If
stDocName = "Главная Названия курсов"
DoCmd. OpenForm stDocName, , stLinkCriteria
Exit_Поиск_Click:
Exit Sub
Err_Найти_Click:
MsgBox Err. Description
Resume Exit_Поиск_Click
End Sub
Раскрывающийся список Полекурсрас
SELECT [Тип курса с сортировкой].[Код типа курсов], [Тип курса с сортировкой].[Тип курсов]
FROM [Тип курса с сортировкой];
«Главная Названия курсов»
Форма построена на основе запроса:
SELECT [Названия курсов].[Код курса], [Названия курсов].[Название курса], [Названия курсов].[Тип курса], [Тип курса].[Код типа курсов], [Тип курса].[Тип курсов]
FROM [Тип курса] INNER JOIN [Названия курсов] ON [Тип курса].[Код типа курсов] = [Названия курсов].[Тип курса];
Кнопка «Информация о фирме»
Private Sub Кнопка20_Click()
DoCmd. OpenForm "Вопрос о фирме"
End Sub
Раскрывающийся список Полекурсрас
SELECT [Тип курса с сортировкой].[Код типа курсов], [Тип курса с сортировкой].[Тип курсов]
FROM [Тип курса с сортировкой];
Форма имеет подчиненную форму «Курсы и организации подчиненная форма1», построенную на основе запроса:
SELECT [Названия курсов].[Код курса] AS [Названия курсов_Код курса], [Названия курсов].[Название курса], [Названия курсов].[Тип курса], [Курсы и организации].[Код организации], [Курсы и организации].[Код курса] AS [Курсы и организации_Код курса], [Курсы и организации].Стоимость, [Курсы и организации].Продолжительность, [Курсы и организации].[Количество человек], [Курсы и организации].[Выдаваемый документ], [Курсы и организации].[Форма обучения], [Курсы и организации].Описание, [Тип курса].[Код типа курсов], [Тип курса].[Тип курсов]
FROM [Тип курса] INNER JOIN ([Названия курсов] INNER JOIN [Курсы и организации] ON [Названия курсов].[Код курса] = [Курсы и организации].[Код курса]) ON [Тип курса].[Код типа курсов] = [Названия курсов].[Тип курса];
ПолеСоСписком36
SELECT [Тип курса].[Код типа курсов], [Тип курса].[Тип курсов]
FROM [Тип курса];
ПолеСоСписком30
SELECT [Выдаваемый документ].[Код документа], [Выдаваемый документ].[Название документа]
FROM [Выдаваемый документ];
ПолеСоСписком32
SELECT [Форма обучения].[Код формы обучения], [Форма обучения].[Форма обучения]
FROM [Форма обучения];
«Вопрос о фирме»
Кнопка «Информация»
Private Sub Поиск_Click()
'On Error GoTo Err_Найти_Click
Dim stDocName As String
Dim stLinkCriteria As String
stLinkCriteria = ""
If Not IsNull(Me![ПолеСоСписком0]) Then
stLinkCriteria = "[Код организации]=" & Me![ПолеСоСписком0]
Else
stLinkCriteria = ""
End If
stDocName = "Информация о фирме"
DoCmd. OpenForm stDocName, , stLinkCriteria
Exit_Поиск_Click:
Exit Sub
Err_Найти_Click:
MsgBox Err. Description
Resume Exit_Поиск_Click
End Sub
ПолеСрСписком0
SELECT [Организации с сортировкой].[Код организации], [Организации с сортировкой].Название
FROM [Организации с сортировкой];
«Курсы и организации для добавления»
Private Sub ПолеСоСписком16_NotInList(NewData As String, Response As Integer)
Dim NewID
If MsgBox("Ввести новое название?", vbQestion + vbDefaultButton2 + vbYesNo, "Внимание!") = vbYes Then
DoCmd. OpenForm "Организации1", , acFormAdd, acDialog, NewData
NewID = DLookup("[Код организации]", "Организации", "[Название]='" & NewData & "'")
Response = acDataErrContinue
If Not IsNull(NewID) Then
Me![ПолеСоСписком16] = NewID
Me![ПолеСоСписком16].Requery
Me![ПолеСоСписком16] = NewID
End If
End If
End Sub
Private Sub ПолеСоСписком20_NotInList(NewData As String, Response As Integer)
Dim NewID As Long
If MsgBox("Ввести новый документ?", vbQuestion + vbDefaultButton2 + vbYesNo, "Внимание!") = vbYes Then
Set tbl = CurrentDb. OpenRecordset("Выдаваемый документ")
tbl. AddNew
NewID = tbl![Код документа]
tbl![Название документа] = NewData
tbl. Update
Response = acDataErrContinue
Me![ПолеСоСписком20] = NewID 'присваивает полю код новой записи
Me![ПолеСоСписком20].Requery 'обновление запроса для списка
Me![ПолеСоСписком20] = NewID 'устанавливает значение (после обновления
'запроса осуществляет выбор из списка)
tbl. Close
End If
End Sub
Private Sub ПолеСоСписком22_NotInList(NewData As String, Response As Integer)
Dim NewID As Long
If MsgBox("Ввести новую форму?", vbQuestion + vbDefaultButton2 + vbYesNo, "Внимание!") = vbYes Then
Set tbl = CurrentDb. OpenRecordset("Форма обучения")
tbl. AddNew
NewID = tbl![Код формы обучения]
tbl![Форма обучения] = NewData
tbl. Update
Response = acDataErrContinue
Me![ПолеСоСписком22] = NewID 'присваивает полю код новой записи
Me![ПолеСоСписком22].Requery 'обновление запроса для списка
Me![ПолеСоСписком22] = NewID 'устанавливает значение (после обновления
'запроса осуществляет выбор из списка)
tbl. Close
End If
End Sub
Private Sub ПолеСоСписком27_NotInList(NewData As String, Response As Integer)
Dim NewID
If MsgBox("Ввести новое название курса?", vbQestion + vbDefaultButton2 + vbYesNo, "Внимание!") = vbYes Then
DoCmd. OpenForm "Названия курсов2", , acFormAdd, acDialog, NewData
NewID = DLookup("[Код курса]", "Названия курсов", "[Название курса] ='" & NewData & "'")
Response = acDataErrContinue
If Not IsNull(NewID) Then
Me![ПолеСоСписком27] = NewID
Me![ПолеСоСписком27].Requery
Me![ПолеСоСписком27] = NewID
End If
End If
End Sub
«Организации1»
Private Sub Form_Open(Cancel As Integer)
If Not IsNull(Forms![Организации1].OpenArgs) Then
Dim fdef As String
fdef = Forms![Организации1].OpenArgs
Forms![Организации1].RecordSource = "Организации"
Forms![Организации1]![Название].DefaultValue = "'" & fdef & "'"
Forms![Организации1].NavigationButtons = False
End If
End Sub
Private Sub Район_NotInList(NewData As String, Response As Integer)
Dim NewID As Long
If MsgBox("Ввести новый район?", vbQuestion + vbDefaultButton2 + vbYesNo, "Внимание!") = vbYes Then
Set tbl = CurrentDb. OpenRecordset("Районы")
tbl. AddNew
NewID = tbl![Код района]
tbl![Район] = NewData
tbl. Update
Response = acDataErrContinue
Me![Район] = NewID 'присваивает полю код новой записи
Me![Район].Requery 'обновление запроса для списка
Me![Район] = NewID 'у
tbl. Close
End If
End Sub
«Названия курсов2»
Private Sub Form_Open(Cancel As Integer)
Dim fdef As String
fdef = Forms![Названия курсов2].OpenArgs
Forms![Названия курсов2].RecordSource = "Названия курсов"
Forms![Названия курсов2]![Название курса].DefaultValue = "'" & fdef & "'"
Forms![Названия курсов2].NavigationButtons = False
End Sub
Private Sub ПолеСоСписком12_NotInList(NewData As String, Response As Integer)
Dim NewID As Long
If MsgBox("Ввести новый тип курса?", vbQuestion + vbDefaultButton2 + vbYesNo, "Внимание!") = vbYes Then
Set tbl = CurrentDb. OpenRecordset("Тип курса")
tbl. AddNew
NewID = tbl![Код типа курсов]
tbl![Тип курсов] = NewData
tbl. Update
Response = acDataErrContinue
Me![ПолеСоСписком12] = NewID 'присваивает полю код новой записи
Me![ПолеСоСписком12].Requery 'обновление запроса для списка
Me![ПолеСоСписком12] = NewID 'устанавливает значение (после обновления
'запроса осуществляет выбор из списка)
tbl. Close
End If
End Sub
«Справочники»
Private Sub Form_Open(Cancel As Integer)
Forms![Справочники].RecordSource = "Тип курса с сортировкой"
Forms![Справочники]![Поле].ControlSource = "Тип курсов"
Forms![Справочники]![Код].ControlSource = "Код типа курсов"
Forms![Справочники]![Поле].SetFocus
Forms![Справочники]![Код].Enabled = False
End Sub
Private Sub Справочники_Click()
Select Case Me![Справочники]
Case 1
Forms![Справочники].RecordSource = "Тип курса с сортировкой"
Forms![Справочники]![Поле].ControlSource = "Тип курсов"
Forms![Справочники]![Код].ControlSource = "Код типа курсов"
Forms![Справочники]![Поле].SetFocus
Forms![Справочники]![Код].Enabled = False
Case 2
Forms![Справочники].RecordSource = "Районы Запрос"
Forms![Справочники]![Поле].ControlSource = "Район"
Forms![Справочники]![Код].ControlSource = "Код района"
Forms![Справочники]![Поле].SetFocus
Forms![Справочники]![Код].Enabled = False
Case 3
Forms![Справочники].RecordSource = _
"Форма обучения с сортировкой"
Forms![Справочники]![Поле].ControlSource = "Форма обучения"
Forms![Справочники]![Код].ControlSource = _
"Код формы обучения"
Forms![Справочники]![Поле].SetFocus
Forms![Справочники]![Код].Enabled = False
Case 4
Forms![Справочники].RecordSource = _
"Выдаваемый документ с сортировкой"
Forms![Справочники]![Поле].ControlSource = "Название документа"
Forms![Справочники]![Код].ControlSource = _
"Код документа"
Forms![Справочники]![Поле].SetFocus
Forms![Справочники]![Код].Enabled = False
End Select
End Sub
Модуль «Защита».
Option Compare Database
Private user As String
Public Const AdminUserName = "admin"
Private Const AdminUserPass = "admin"
Public Const SimpleUserName = "user"
Private Const SimpleUserPass = "user"
Public Function Login(newUser As String, newPass As String) As Boolean
Login = False
Select Case newUser
Case AdminUserName:
If newPass = AdminUserPass Then
Login = True
user = AdminUserPass
End If
Case SimpleUserName:
If newPass = SimpleUserPass Then
Login = True
user = SimpleUserName
End If
End Select
End Function
Public Function getUser() As String
getUser = user
End Function
Public Function isAdmin() As Boolean
If user = AdminUserName Then
isAdmin = True
Else
isAdmin = False
End If
End Function
Отчеты.
Тип курса - на основе запроса «Для отчета по типу курса»
SELECT Организации. Название, Организации. Адрес, Организации.[Номер лицензии], Организации. Телефон, Организации. Факс, Организации. Директор, [Тип курса].[Тип курсов]
FROM [Тип курса] INNER JOIN (Организации INNER JOIN ([Названия курсов] INNER JOIN [Курсы и организации] ON [Названия курсов].[Код курса] = [Курсы и организации].[Код курса]) ON Организации.[Код организации] = [Курсы и организации].[Код организации]) ON [Тип курса].[Код типа курсов] = [Названия курсов].[Тип курса]
GROUP BY Организации. Название, Организации. Адрес, Организации.[Номер лицензии], Организации. Телефон, Организации. Факс, Организации. Директор, [Тип курса].[Тип курсов];
Организации – на основе запроса «Для отчета по фирме»
SELECT Организации. Название, [Названия курсов].[Название курса], [Курсы и организации].Стоимость, [Курсы и организации].Продолжительность, [Курсы и организации].[Количество человек], [Выдаваемый документ].[Название документа], [Форма обучения].[Форма обучения], [Курсы и организации].Описание
FROM [Форма обучения] INNER JOIN ([Тип курса] INNER JOIN (Организации INNER JOIN ([Названия курсов] INNER JOIN ([Выдаваемый документ] INNER JOIN [Курсы и организации] ON [Выдаваемый документ].[Код документа] = [Курсы и организации].[Выдаваемый документ]) ON [Названия курсов].[Код курса] = [Курсы и организации].[Код курса]) ON Организации.[Код организации] = [Курсы и организации].[Код организации]) ON [Тип курса].[Код типа курсов] = [Названия курсов].[Тип курса]) ON [Форма обучения].[Код формы обучения] = [Курсы и организации].[Форма обучения]
GROUP BY Организации. Название, [Названия курсов].[Название курса], [Курсы и организации].Стоимость, [Курсы и организации].Продолжительность, [Курсы и организации].[Количество человек], [Выдаваемый документ].[Название документа], [Форма обучения].[Форма обучения], [Курсы и организации].Описание;
Приложение2










