Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Построение сложной формы Прием заказов.

Читайте также:
  1. I. Различия формы
  2. III. Формы Subj. II.
  3. IV. Методические указания по самостоятельной внеаудиторной работе студентов (СУРС) и формы контроля
  4. Wave 3 – новый флагман платформы bada на свежей версии 2.0. Модель в цельнометаллическом корпусе из анодированного алюминия и с большим (4”) экраном Super AMOLED.
  5. Анатомия формы
  6. Банковский кредит и его формы
  7. в формы и отчеты

В главную форму добавим подчиненную путем перетаскивания ее значка из списка объектов базы данных и проверим их связь по полю "Код заказа" (вкладка " Данные " окна " Свойства " подчиненной формы).

Добавляем в главную форму в область примечаний два новых поля:

- поле " Сумма заказа ", куда переносим данные из "Поле№АА." подчиненной формы в виде выражения: =(ТовЗаказПодчФорм.Form!Поле№..АА). Это выражение строится в строке Данные на вкладке "Данные" окна "Свойства" поля " Сумма заказа ";

- поле " Сумма заказа с НДС ", для которого вводим формулу: =["Сумма заказа"]*1,18 в строке Данные на вкладке " Данные " окна " Свойства " этого поля.

Позже добавим на главную форму еще две кнопки – для принятия и отмены заказа.

Для работы кнопки «Принять заказ» создаем Конструктором запрос на обновление поля "Остаток" в таблице Склад (рис.16). Вид запроса " Обновление " выбираем в ленте "Конструктор".

В строке "Обновление" поля " Остаток..." с помощью Построителя пишем выражение, в котором от остатка на складе отнимаем количество товара, проданное в данном заказе:

[Склад]![ОстатокТовара]-[Заказ-товар]![Количество товара, купленного в данном заказе].

Так как остатки должны обновляться только у тех товаров, которые куплены в оформляемом заказе, то условием отбора строим выражение: [Forms]![Заказы]![Код заказа].

 

Рис. 16 - Запрос для обновления поля "Остаток"

Созданный запрос должен работать при нажатии кнопки «Принять заказ».

В режиме конструктора (на панели элементов управления должна быть активизированной кнопка Использовать мастера) наносим в поле примечаний главной формы кнопку, после чего появляется окно мастера создания кнопок. Выбираем категорию "Разное", действие "Выполнить запрос", затем кнопку "Далее". Выбираем из перечня объектов "Запрос на обновление поля Остаток", затем кнопку "Далее". Набираем текст названия кнопки "Принять Заказ", затем кнопку "Далее". Задаем имя кнопке и нажимаем "Готово". Нажатие данной кнопки обновит поле "Остаток" в таблице Склад и при следующем заказе данный товар (группа товаров) в поле подчиненной формы будет иметь обновленное количество. Следует помнить, что это запрос с параметром, поэтому для его выполнения необходимо в качестве параметра ввести код заказа (рис.17).

 

Рис. 17 - Окно параметра запроса

 

Описанная процедура обработки события нажатия кнопки "Принять Заказ" записывается в модуле VBA. Эту запись можно открыть из окна свойств этой кнопки на вкладке "События" (строка "Нажатие кнопки"), щелкнув по символу " ... " (рис.18).

Рис.18. Окно свойств кнопки.

 

 

Добавим в текст программы (процедуры) строку: DoCmd.GoToRecord. Эта команда переводит главную форму на новую запись (новый заказ). Кроме того, добавим команду для передачи фокуса полю ввода имени клиента (ПолеСоСписком№ЕЕЕ) в новом заказе (№ЕЕЕ – номер поля!).

Private Sub КнПринятьЗаказ_Click()

...

DoCmd.OpenQuery stDocName, acNormal, acEdit 'команда открытия запроса на обновление

DoCmd.GoToRecord 'команда перехода к новой записи

ПолеСоСписком№ЕЕЕ.SetFocus 'команда передачи фокуса полю ввода клиента

...

End Sub

Когда при записи очередного заказа поле выбора клиента получит фокус, кнопку "Принять Заказ" делаем недоступной. Этому событию (GotFocus()), назначим процедуру (команду): КнПринятьЗаказ.Enabled=False. Это необходимо, чтобы не вводить незаполненный заказ.

Доступной кнопка станет тогда, когда в подчиненной форме будет заполнено поле хотя бы одного названия товара (событие " Потеря фокуса (LostFocus) " для этого поля), процедура:

Private Sub ПолеСоСписком12_LostFocus()

Form_ГлФормПриемЗаказов .КнПринятьЗаказ.Enabled = True

End Sub

Здесь ссылка на главную форму необходима, потому что поле ввода названия товара (событие которого обрабатывается) находится в подчиненной форме, а кнопка – на главной.

Наносим в поле примечаний главной формы кнопку "Отменить_Заказ", которая закрывает главную форму приема заказа. Методика конструирования кнопки такая же, как и кнопки "Принять заказ", только в режиме Мастера надо выбирать категорию "Работа с формой", действие – "Закрыть форму".

Главная форма приема заказов должна открываться для добавления новой записи. Поэтому в процедуру ее открытия Form_Open (вкладка " События " свойств формы, строка " Открытие ", щелчок по символу ..., строка Программы) добавим строку:

DoCmd.GoToRecord, "", acNewRec.

Кроме того, при открытии формы приема заказов надо иметь недоступной кнопку "Принять Заказ", для чего добавляем еще одну строку в процедуру открытия главной формы: КнПринятьЗаказ.Enabled = False. Полностью процедура открытия главной формы выглядит так:

Private Sub Form_Open(Cancel As Integer)


Дата добавления: 2015-10-24; просмотров: 122 | Нарушение авторских прав


Читайте в этой же книге: Описание информационных объектов базы данных. | Создание таблицы «Кадры». | Построение схемы данных. | Создание форм для ввода данных в таблицы "Кадры", "Клиенты", "Поставщики". | Выражение1: [поставщики]![Статус предприятия] &" "& [поставщики]![Название предприятия]. | Решение третьей задачи. | Требования к форме "Прием заказов". | Создание запроса и построение главной формы «Прием заказов». |
<== предыдущая страница | следующая страница ==>
Создание запроса и построение подчиненной формы.| Создание пользовательского интерфейса.

mybiblioteka.su - 2015-2024 год. (0.007 сек.)