Private Sub Кнопка13_Click()
On Error GoTo Err_Кнопка13_Click
DoCmd.GoToRecord , , acNewRec
Exit_Кнопка13_Click:
Exit Sub
Err_Кнопка13_Click:
MsgBox Err.Description
Resume Exit_Кнопка13_Click
End Sub
Операторы On Error ,MsgBox Err.Description ,Resume являются операторами БЕЙСИКа и служат для организации обработки ошибок. Это стандартный набор операторов, создаваемый мастером построения кнопок. Оператор DoCmd.GoToRecord , , acNewRec осуществляет создание новой записи и переход к ней.
Однако в задачу кнопки входит также создание нового номера записи и занесение текущей даты в дату заказа. Поэтому в процедуру после оператораDoCmd.GoToRecord , , acNewRecнеобходимо добавить следующие операторы:
If Nz([Номер заказа]) = 0 Then
[Номер заказа] = Nz(DMax ( "[Номер заказа]" , "[Заказ]")) +1
[Дата заказа] = Date()
End If
DoCmd.GoToControl " ПолеСоСписком8"
Этим фрагментом программы в поле «Номер заказа», если он равен нулю или пуст, заносится максимальный код товара увеличенный на единицу; в поле «Дата заказа» заносится системная дата и последним оператором управление передается объекту «ПолеСоСписком8». Это поле со списком, которым мы заменили «Код клиента».
Заметим, что создание нового номера заказа аналогично созданию новых кода товара и кода клиента. Однако в соответствующих формах сначала создавалось несвязанное поле, где вычислялся новый код, а затем при возникновении события «До обновления» рассчитанный код помещался в соответствующее поле. Здесь же мы обошлись без создания поля, сразу рассчитав новый номер заказа и присвоив его полю «Номер заказа». Этот вариант гораздо проще. Вся процедура обработки события «Нажатие кнопки» вместе с добавленным фрагментом будет выглядеть так.
Private Sub Кнопка13_Click()
On Error GoTo Err_Кнопка13_Click
DoCmd.GoToRecord , , acNewRec
If Nz([Номер заказа]) = 0 Then
[Номер заказа] = Nz(DMax ( "[Номер заказа]" , "[Заказ]")) +1
[Дата заказа] = Date()
End If
DoCmd.GoToControl "ПолеСоСписком17"
Exit_Кнопка13_Click:
Exit Sub
Err_Кнопка13_Click:
MsgBox Err.Description
Resume Exit_Кнопка13_Click
End Sub
Создание кнопки оплата.
Следующим объектом, который нужно создать является кнопка «Оплата». Кнопка создается обычным путем. В появившейся серии окон нужно выбрать позиции, как показано на рисунках.
Окончание построения кнопки выполняется обычным путем.
Создание поля с итоговой суммой.
И последним объектом, который необходимо создать в форме «Заказы», является поле с итоговой суммой по заказу. В подчиненной форме «Спецификация» такое поле было построено как скрытое (имя поля «Поле15» ). Для того, чтобы показать значение этого поля в форме «Заказы», необходимо создать несвязное поле и в его свойстве «Данные» создать с помощью построителя выражений ссылку на соответствующее поле в форме «Спецификация» следующего вида:
Выражение [Спецификация].Form![Поле15] попадет в свойство «Данные» построенного поля, если при выборе подсвеченных позиций построителя выражений нажать кнопку «Вставить», а затем «ОК».
После сохранения форма «Заказы» готова к работе. Ее конечный вид должен быть примерно таким.
В результате всей предыдущей работы были созданы ряд форм для ввода данных в базу. Однако выбор и открытие этих форм из вкладки «Формы» не удобен для конечного пользователя. Необходимо создать организующую форму с удобным интерфейсом, которая позволила бы работать с набором форм, вызывая их с помощью кнопок. Для создания таких форм в ACCESS предусмотрен механизм создания кнопочных форм.
Создание кнопочных форм
Кнопочная форма создается с помощью мастера кнопочных форм, который запускается путем выбора пункта меню «Сервис – Служебные программы – Диспетчер кнопочных форм». Работа мастера начинается с появления следующего окна.
В результате будет создана кнопочная форма с кнопкой вызова формы «Товар». Кнопки вызова других созданных форм создаются аналогичным образом. В результате добавления вызовов форм ввода, создания кнопочной формы для вызова отчетов и вставке ссылки на него, а так же построения кнопки выхода из приложения окно конструктора примет вид:
После создания всех кнопок и закрытия окон мастера открытая кнопочная форма примет следующий вид:
Нажатие первых трех кнопок приведет к вызову соответствующих экранных форм, четвертая кнопка откроет страничку отчетов, которые будут рассмотрены ниже, пятая закроет приложение. Кнопочную форму можно декорировать, вставив в нее рисунки и надписи.
Внимание! Прежде чем продолжать работу заполните базу данных: заполните справочник товаров и справочник клиентов (по 10-15 наименований ); введите несколько заказов (больше 10), указав разные варианты оплаты – полная, частичная оплата и неоплаченные заказы.
Создание запросов
Запрос представляет собой формализованное требование на манипуляцию данными базы. Под манипуляцией понимается совокупность действий, включающих выборку, изменение и добавление информации в базе данных. В него входит перечень полей для просмотра и условий отбора данных. В примере задания заданы четыре запроса:
1. Какие клиенты не оплатили заказы на данный момент;
2. Каково состояние оплаты заказов клиентами – сумма заказа , оплачено, отклонение;
3. Какие клиенты заказали тот или иной товар и сколько;
4. Какова стоимость продаж за заданный период.