Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛабРаб2.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
125.95 Кб
Скачать

If IsNull(ДатаПоступл) Then

ДатаПоступл = Date

End If

End Sub

Перейдем к определению розничной цены. Здесь потребуется не только кнопка, но и поле, в которое будет вводиться значение наценки, используемое при расчете розничной цены. Поэтому разместим на форме поле под названием Наценка, и при включенной на панели элементов кнопке Мастера поместим на форму кнопку Вычислить розничную цену. В качестве действия, выполняемого при нажатии кнопки, можно выбрать сохранение записи, т.е. при нажатии данной кнопки будет сохраняться текущая запись. Строка сохранения записи, записанная мастером выглядит так:

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,acMenuVer70

Здесь указывается, какую команду меню следует выполнить. Аналогичным образом можно программно выполнять любые команды меню Access.

Выполним расчет розничной цены в соответствии с торговой наценкой, которая может варьироваться. Для торговой наценки используется свободное поле, т.е. поле, которое не связано ни с одним полем источника данных. В это поле будем вводить наценку, а при нажатии кнопки Вычислить розничную цену будет определяться и записываться в соответствующее поле розничная цена единицы товара, определяемого текущей записью на форме. Код событийной процедуры содержит один оператор присваивания:

ЦенаРозничн = ЦенаПоставщик * (1 + Наценка/100).

Удобно вводить наценку в процентах, поэтому она делится на 100.

Теперь, если написать вышеприведенный оператор перед оператором сохранения, то после изменения розничной цены запись будет автоматически сохраняться.

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

Добавим в событийную процедуру для кнопки Вычислить розничную цену проверку условия Наценка>0, чтобы нельзя было назначить розничную цену меньше оптовой. При нарушении этого условия будет появляться сообщение об ошибке, которое выводит процедура MsgBox. В результате все тело процедуры примет вид:

If Наценка > 0 Then

ЦенаРозничн = ЦенаПоставщик * (1 + Наценка/100)

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

Else

MsgBox ("Наценка должна быть больше нуля!")

End If

Как правило, есть некоторое значение наценки, которое применяется для большинства товаров. Поэтому будет естественным, если это значение будет автоматически вводиться в поле Наценка на форме. Для этого мы воспользуемся событием загрузки формы. Событие Загрузка (Load) возникает при открытии формы и выводе на экран ее записей.

Такая процедура при открытии формы Прием товаров выглядит следующим образом:

Private Sub Form_Load()

Наценка = 20

End Sub

В результате работы этой процедуры в поле Наценка при загрузке формы будет введено значение 20. Если потребуется использовать какое-либо другое значение наценки, то его можно изменить вручную в процедуре.

Использование вычисляемого поля на форме рассмотрим на примере расчета предполагаемой прибыли, которая представляет собой просуммированную для всех товаров разность между розничной и оптовой ценой. Встроенная статистическая функция Sum вычисляет итоговое значение для всех записей источника данных. Поэтому, если мы разместим в области заголовка или примечания формы вычисляемое поле с формулой

=Sum([ЦенаРозничн] - [ЦенаПоставщик])*[Количество],

то получим требуемый результат. Для этого поместим в область заголовка свободное поле и введем вышеприведенную формулу в свойство Данные, воспользовавшись Построителем выражений. Заметим, что знак равенства "=" является обязательным атрибутом вычисляемого поля. Чтобы результат выводился в денежных единицах, на карточке Макет нужно выбрать формат Денежный для этого поля.

Задание 4. Создание формы Поставщики

  1. В контейнере БД Приложение перейти на карточку Формы.

  2. Щелкнуть кнопку Создать.

  3. В диалоговом окне Новая форма выделить Автоформа: в столбец и выбрать из списка таблицу Поставщики. Щелкнуть OK.

Задание 5. Модификация формы Прием товаров

  1. В контейнере БД Приложение перейти на карточку Формы.

  2. Выделить форму Прием товаров.

  3. В контекстном меню выполнить команду Сохранить как… .

  4. В диалоговом окне Сохранение щелкнуть OK.

  5. Переименовать форму Копия "Прием товаров" в Подчиненная форма Товары.

  6. Открыть Подчиненную форму Товары.

  7. Перейти в режим Конструктор.

  8. Удалить из формы все поля и кнопки за исключением полей и надписей Поставщик, Категория, СтранаИзготов, Наименование, Количество, ЦенаПоставщик.

Создание Подчиненной формы Товары

Подчиненные формы предоставляют большую гибкость при отображении и вводе данных из нескольких таблиц. Можно даже редактировать все поля, не задумываясь о целостности данных. Кроме того, подчиненная форма позволяет вводить в форму данные со связями типа один-ко-многим. Подчиненная форма - это форма внутри формы. Она дает возможность использовать данные из нескольких таблиц в одной форме. С ее помощью можно одновременно отображать данные из одной таблицы, записанные в одном формате, и данные из другой таблицы, записанные в совершенно другом формате. Например, в главной форме можно отображать одну запись о клиенте, а в подчиненной форме - несколько записей о приобретенных им товарах и их стоимости. При создании подчиненной формы происходит ее связывание с главной формой. В подчиненной форме будут отображены только те записи, которые связаны с главной формой. Основное преимущество подчиненных форм состоит в том, что они отображают связи один-ко-многим. Главная форма представляет часть связи один, а подчиненная - многим.

Для создания подчиненных форм чаще всего используется Мастер форм. Без использования Мастера придется отдельно создавать как главную, так и подчиненную форму, а затем внедрять подчиненную форму в главную и связывать их. Самым удобным способом создания подчиненных форм без использования Мастера является метод перетаскивания формы из окна БД, потому что в этом случае Access пытается установить связь между формами.

Первым шагом при создании и внедрении подчиненных форм является создание формы, которая будет использоваться как подчиненная, что и было сделано в задании 5. При создании подчиненной формы необходимо также задать значение Таблица для свойства формы Режим по умолчанию.

Готовую подчиненную форму можно вставить в главную. Самый простой способ сделать это – отобразить главную форму и перетащить в нее подчиненную, при этом автоматически будет создан элемент управления подчиненной формы, и они, возможно, будут связаны. Для вставки подчиненной формы в главную форму нужно выполнить следующие действия:

  1. Отобразить главную форму в режиме конструктора так, чтобы было видно и окно БД.

  2. Отобразить объекты карточки Формы в окне БД.

  3. Выделить подчиненную форму и перетащить ее в главную.

  4. Задать такой размер подчиненной формы, чтобы она помещалась на экране ниже главной.

  5. Удалить надпись подчиненной формы.

  6. Вызвать окно свойств подчиненной формы для проверки правильности связи.

Если строки свойств Подчиненные поля и Основные поля пусты, то это значит, что главная форма не связана с подчиненной.

При перетаскивании формы из окна БД в другую форму для создания подчиненной формы Access пытается автоматически установить связь между формами. То же самое происходит и при перетаскивании какой-либо формы или отчета в другой отчет.

Access устанавливает связь, если соблюдаются следующие условия:

  1. Главная и подчиненная форма создана на основе таблиц, связь между которыми указана в окне Схема данных.

  2. В главной и подчиненной формах содержатся поля с одинаковыми типами и именами, а одно из полей главной формы является ключевым полем базовой таблицы.

Если Access обнаружит связь или одинаковые поля, в строках свойств формы будут показаны имена полей, определяющих связь. Следует убедиться в правильности автоматического связывания. Если в главной таблице используются результаты выполнения запроса (или одно из перечисленных условий не выполняется), Access не будет выполнять автоматическое связывание.

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

Задание 6. Работа с формой Прием товара

  1. Открыть форму Поставщики в режиме Конструктор.

  2. Создать кнопку с помощью панели элементов в области данных формы.

  3. В контекстном меню кнопки выполнить команду Свойства.

  4. В диалоговом окне Кнопка ввести: в поле Имя – _ПриемТовар, в поле ПодписьПрием товара, в поле Нажатие кнопки – установить курсор и щелкнуть кнопку .

  5. В диалоговом окне Построитель выбрать строку Макросы и щелкнуть OK.

  6. В диалоговом окне Сохранение в поле Имя макроса ввести ПриемТовар и щелкнуть OK.

  7. В диалоговом окне ПриемТовар: макрос в поле Макрокоманда выбрать из списка Открыть форму.

  8. В области Аргументы макрокоманды выбрать из списка: в поле Имя формыПрием товаров, в поле Режим данныхДобавление.

  9. На панели инструментов щелкнуть кнопку Сохранить.

  10. Закрыть диалоговое окно Кнопка: _ПриемТовар.

  11. Перейти на форме Поставщики в Режим формы.

  12. Щелкнуть кнопку Прием товара.

  13. Ввести 2 реальных товара от разных поставщиков (для справки использовать таблицу Товары).

Создание сводной таблицы

Создание сводной таблицы начинается с вызова диалогового окна Новая форма нажатием кнопки Создать на карточке контейнера Форма. После выбора опции Сводная таблица будет запущен мастер сводной таблицы.

В первом диалоговом окне мастера необходимо выбрать таблицу или запрос, используемые для создания сводной таблицы. Можно выбрать несколько таблиц, но они должны быть связаны на уровне БД. В следующем диалоговом окне, отображаемом при нажатии клавиши Далее, требуется задать поля сводной таблицы. Задание полей сводной таблицы ничем не отличается от такой же процедуры в Excel. Вычисляемые поля располагаются в поле Данные макета сводной таблицы.

Удобнее всего создавать сводную таблицу на основе специально созданного запроса. В качестве примера построим сводную таблицу с именем СвТабл Покупатели–Заказы. Создадим запрос, включающий таблицы Покупатели, Заказы, Товары. Поля запроса – Фамилия, Город, Наименование, ЦенаРозничн, Количество. Вычисляемое поле – СтоимЗаказа. Имя запроса – Для СвТабл Покупатели-Заказы.

Переходим на карточку Форма и вызываем диалоговое окно Новая форма. Выбираем созданный запрос и запускаем мастер сводной таблицы. В первом диалоговом окне мастера переносим все доступные поля запроса в область полей сводной таблицы и нажимаем кнопку Готово.

На появившейся форме сводной таблицы перетаскиваем поле Город в область полей фильтра, поле Фамилия – в область полей строк, поле Наименование – в область полей столбцов, поля ЦенаРозничн, Количество и СтоимЗаказа – в область полей итогов. Для эксперимента и с целью уменьшения размеров сводной таблицы можно удалить поля ЦенаРозничн и Количество путем поочередного перетаскивания их за пределы сводной таблицы. Имя сводной таблицы СвТабл Покупатели-Заказы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]