Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MR_IS_BD_korrekt_2014 .doc
Скачиваний:
137
Добавлен:
19.02.2016
Размер:
885 Кб
Скачать
☆

6.2. Создание запроса и построение главной формы «Прием заказов».

Форму можно создать с помощью мастера по данным двух таблиц («Заказы» и «Клиенты»), или на основе запроса. Используем запрос. Бланк запроса показан на рисунке 12.

Рис. 12. Запрос для создания главной формы

Из таблицы «Заказы» надо выбрать все поля (для этого можно перетащить звездочку (*) из таблицы "Заказы" в поле бланка запроса). Из таблицы "Клиенты" выбираем необходимые для оформления заказа реквизиты клиента (адрес, телефон, банковские атрибуты и т.д.), при этом не выбираем поля: Код клиента (он уже выбран из табл.Заказы), Статус и Название, которые будут указаны в Поле со списком.

По созданному запросу Мастером форм создаем форму «ЗаказыГлавФорма». Форму создаем как одиночную в один столбец, а затем в режиме конструктора корректируем ее:

  • передвигаем поля вверх, освобождая место для подчиненной формы (см.рис.10). Если поля сгруппированы, можно их вырезать и вставлять по одному;

  • для полей «Код клиента» и «Код сотрудника»: заменяем элементы управления «Поле» на элементы управления «Поле со списком».

Но сначала для этого создаем запросы «Список клиентов» и «Список сотрудников».

Запрос «Список клиентов» создается так же, как создавался запрос «Список поставщиков» для формы «Склад» (п.5).

Запрос «Список сотрудников» в режиме конструктора показан на рисунке 13.

Рис. 13. Запрос «Список сотрудников».

Для того чтобы в списке фамилия сотрудника была написана с инициалами, с помощью построителя строим (одна строка!) выражение, используя в нем функцию Left:

Выражение1:[Кадры]![Фамилия сотрудника]&" "&Left([Кадры]![Имя сотрудника];1)&"."& Left([Кадры]![Отчество сотрудника];1) & "."

Так как в списке должны быть только сотрудники «Отдела сбыта», задаем условие отбора по названию должности. Так как у нас есть вакантные должности, задаем для поля «Фамилия сотрудника» условие <>"" (не равно пустой строке). Вспомним, что в таблице Кадры значение этого поля по умолчанию задано символом "".

Два последних поля для просмотра на экран не выводим (см.рис.13).

По созданным запросам вместо полей "Код клиента" и "Код сотрудника" строим элементы «Поле со списком» так же, как делали это для поля «Код поставщика» в форме «Склад» (рисуем элемент на форме, отвечая на вопросы Мастера выбираем запрос и т.д.).

6.3. Создание запроса и построение подчиненной формы.

Эта форма может быть построена только на основе запроса, так как в ней должно бытьвычисляемоеполе (выражение) для расчета отпускной цены товара.

Бланк запроса в режиме конструктора показан на рисунке 14. Для автоматического заполнения поля «ОтпускнаяЦена» строим выражение с учетом того, что цена реализации больше закупочной на 35%:

ОтпускнаяЦена:Ccur([Склад]![Закупочная цена]*1,35*[Количество товара, купленного в заказе]),

где Ccur– тип данных (денежный).

Рис. 14. Запрос для построения подчиненной формы

Следует иметь в виду, что очередность вывода полейвформе, которая будет построена на основе этого запроса, будет соответствоватьочередности столбцовзапроса.

По созданному запросу стоим подчиненную форму.СоздаемМастером формтабличную форму, затем корректируем ее (см.выше рис.10 и рис.11).

В свойство поля "Количество товара в заказе" на вкладке "Данные" в строку "Условие на значение" с помощью Построителявводим выражение:([Кол-во товара в заказе]<[Остаток]) Or ([Кол-во товара в заказе] = [Остаток]). В строке "Сообщение об ошибке" размещаем текст:"Нельзя продать больше, чем есть на складе!"(см.рисунок ниже).

При нарушении условия на значение появится информационное сообщение (еще один рис.)

Удаляемполе «Код заказа».Форма подчиненная, а в составе главнойуже есть«Код заказа».Вместополя «Код товара» позжевведемэлемент «Поле со списком».Для него создаем запрос«Список товара для подчиненной формы» (рис.15). Так как нельзя продать товары, которых на складе нет, задаемусловие отборадля поляОстаток: больше 0. Это поле для просмотра на экран не выводим.

Рис.15. Бланк запроса "Список товара для подчиненной формы".

УдаляемполеКод товара. На основе созданного запроса для ввода названий товарастроимэлемент управления «Поле со списком» в подчиненной форме - так же, как делали это для поля «Код поставщика» в форме «Склад».

В области примечаний подчиненной формы (эта область табличной формы в составе главной формы не отражается!) создаем элемент управления "Поле№.АА" для суммы заказа, в нем (Свойстваэтого поля, вкладкаДанные) задаем построителем выраженийвычисляемоезначение:

=Sum([ОтпускнаяЦена]).

Номер поля АА(АА – это № элемента!) зависит от того, какое оно по счету при разработке формы. Оно понадобится для переноса в главную форму суммы стоимости заказанных товаров.