Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектирование учебной БД 2007.docx
Скачиваний:
5
Добавлен:
11.11.2019
Размер:
2.91 Mб
Скачать

Описание создания формы «Заказы»

Разработка формы «Заказы» включает новые виды объектов и приемы работы с ними. Для того, чтобы приступить к разработке этой формы необходимо создать отдельно форму «Заказы», форму «Спецификация» и форму «Оплата», а затем включить форму «Спецификация» в форму «Заказы» в качестве подчиненной и установить вызов формы «Оплата» из формы «Заказы» с помощью кнопки.

Создание макета формы «Заказы»

О собенностью создания формы «Заказ» является то, что после запуска мастера построения форм необходимо выбрать внешний вид «В один столбец». Это позволяет разместить в форме данные одной записи. При создании макета формы в него необходимо включить поля «Код заказа», «Код клиента», «Дата заказа» и «Дата доставки» и переместить их в раздел заголовка формы, как указано на рисунке. При этом текст надписи к полю «Код заказа» лучше заменить на «Заказ N».

После изменения размещения объектов управления на форме она должна принять примерно следующий вид. При этом необходимо помнить, что в Access 2007 совокупность вышеуказанных полей автоматически объединяется в таблицу. Для того, чтобы разрешить перемещать и настраивть эти поля независимо, нужно выделить эту таблицу и далее нажать кнопку «Удалить» в разделе «Макет элемента управления» панели «Упорядочить». А далее можно настраивать каждое поле независимо.

Поле «Код клиента» лучше заменить на поле со списком. Проще всего сначала удалить поле «Код клиента» (выделив его и нажав клавишу Del), а затем вставить «Поле со списком». В форме «Товар» мы уже вставляли поле со списком. И там был выбран вариант «Будет введен фиксированный набор значений». Теперь в поле со списком нужно выбирать имена клиентов, которые ранее были введены в таблицу «Клиенты». Причем строку таблицы «Заказ» должен попадать «Код заказа», а в экранной форме отражалось бы название организации клиента. Это возможно сделать, выбрав в первом появившемся окне мастера создания поля со списком вариант «Объект «поле со списком» будет использовать значения из таблицы или запроса». Окна дальнейшего диалога построения поля со списком показаны ниже.

После нажатия кнопки «Готово» в последнем окне в форму «Заказ» будет вставлено поле со списком и она примет следующий вид.

При закрытии формы СУБД сохранит ее с именем той таблицы, на которой она была создана, то есть «Заказ».

Внимание! Вставленное поле со списком будет иметь имя не «Код клиента», а другое, назначенное системой. В нашем случае «ПолеСоСписком11». Эта информация пригодится далее.Пака приостановим работу с формой «Заказ» и приступим к созданию формы «Спецификация».

Создание подчиненной формы «Спецификация»

Закройте форму «Заказ» (она будет доработана позже) и создайте ленточную форму «Спецификация». Особенностями создания формы являются: расчетное поле «Стоимость», поле с итоговой суммой и автоматическое занесение цены в поле «Цена». Вид этой формы в режиме конструктора должен быть примерно таким.

Такая форма получается в результате следующих действий:

  • Создайте ленточную форму «Спецификация» для одноименной таблицы;

  • В разделе заголовка формы удалите надпись «Спецификация» из и поднимите надписи полей под верхний край раздела как показано на рисунке;

  • Скройте поле «Код заказа», установив свойство «Вывод на экран» в положение «Нет» и измените его размер на максимально узкий.;

  • Удалите поле «Код товара», вставив вместо него поле со списком, как было рассмотрено ранее. В Access 2007 необходимо помнить, что при создании списка полей в форме с помощью мастера поля и их наименования оформляются в виде таблицы, потому удаление и вставка поля отображаются как удаление и вставка столбца таблицы. При создании поля со списком в качестве таблицы выбора используйте таблицу «Товар», а в качестве полей для формирования списка товаров «Код товара» и «Наименование». После размещения поля со списком в области данных оно размещается поверх столбцов таблицы. Чтобы сделать его столбцом перетащите надпись поля с соответствующее место заголовка формы, а затем измените надпись, например, на «Наименование товара», как показано на рисунке. Поле создаётся с автоматически присвоенным именем, которое будет использовано ниже. В нашем случае это ПолеСоСписком13.

  • Таким же образом добавьте в область данных несвязное поле, введя в свойство «Данные» выражение =[Цена]*[Количество]*(1+[Наценка]-[Скидка]). Это удобнее сделать воспользовавшись построителем выражений. Надпись поля поменяйте на «Стоимость» (см. рисунок).

  • В примечание формы введите несвязное поле ( имя поля «Поле15»), введя в свойство «Данные» выражение =Sum([Цена]*[Количество]*(1+[Наценка]-[Скидка])). Не забывайте про построитель выражений. При его использовании возникает меньше ошибок. В этом поле будет рассчитываться сумма всего заказа. Поле лучше скрыть, задав в свойстве «Вывод на экран» значение «Нет». Это поле будет использовано для дальнейших построений. Запомните имя поля, которое создаст СУБД в вашем случае.

  • Для автоматического занесения цены после выбора товара в свойство «После обновления» поля «Код товара» нужно вставить процедуру обработки, включающую следующий код:

[Цена]=DLookup("[Цена]", "[Товар]", "[Код товара]=" & ПолеСоСписком13)

Здесь полю «Цена» присваивается значение, возвращаемое функцией Dlookup , которая использует три параметра: имя поля с ценой, имя таблицы, условие отбора. Функция Dlookup выбирается из встроенных функций, предоставляемых построителем выражений в группе «По подмножеству». Условие представляет совой вычисляемое выражение, включающее текстовую константу и код товара из поля ПолеСоСписком13. Если введенный код товара будет, например, равен 2, то выражение даст "[Код товара]=2", и в таком виде будет передано функции Dlookup для поиска.

После внесения всех изменений сохраните форму «Спецификация».