Методика организации учета инфляции в учебной базе данных

№60-1,

педагогические науки

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

Похожие материалы

В качестве курсовой работы по дисциплине «Информатика» студентам предлагается создать в MS Access базу данных, осуществляющую внутренний учет экономической и хозяйственной деятельности некой вымышленной фирмы. Студентам предоставляется право выбора направления работы фирмы, на их усмотрение оставляется организация учета и детали внутренних взаимоотношений в фирме.

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

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

Цены на товары (или услуги) первый раз устанавливаются до первой продажи. Затем по мере необходимости может быть установлена новая цена на тот или иной товар. Все цены и даты их установления заносятся в отдельную таблицу.

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

Чтобы разрабатываемая база данных могла учитывать инфляцию, перед студентами ставятся следующие дополнительные задачи:

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

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

Рекомендации для решения первой задачи

Все цены и даты их установления заносятся в таблицу «Инфляция», которая обязательно связывается с таблицей «Товары» (или «Услуги») (рис.1).

Фрагмент схемы данных
Рисунок 1. Фрагмент схемы данных

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

Таблица «Продажи» или ее аналог (например, таблица «Оказание услуг») обязательно должна быть в базе данных. Чтобы связать таблицы «Инфляция» и «Продажи» (это связь много-многозначная, то есть «¥ к ¥») необходима дополнительная таблица, в которой поле «Товар» будет ключевым. Если такой таблицы в базе данных нет, придется ее создать, а в качестве характеристики написать какую-нибудь рекламную фразу.

Рекомендации для решения второй задачи

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

Включить в запрос потребуется все поля из таблицы «Продажи», а также поля «Дата установления цены» и «Цена» из таблицы «Инфляция».

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

На поле «Дата установления цены» накладывается условие отбора <=[Дата продажи], поскольку те изменениями цены, которые произошли после совершения продажи, на подсчет прибыли никак не влияют. В режиме просмотра запроса строчек станет меньше, так как будут отброшены ненужные изменения цен.

Далее потребуется сгруппировать записи по продажам, то есть по значению полей, вошедших в запрос из таблицы «Продажи». Для поля «Дата установления цены» групповая операция – «условие», а для поля «Цена» – Last (то есть последний). Действительно, те изменения цены, которые произошли после продажи, были отброшены условием отбора, из тех, что остались, требуется взять последнюю цену. Теперь останется создать рассчитываемое поле «Выручка» (произведение Last-цены и количества). Групповая операция для этого поля – «Выражение». Если в разрабатываемой базе товар штучный (продается по одному), то поле «Last-цена» и будет являться выручкой.

Рекомендации для решения третьей задачи

Создаваемые формы должны обеспечить определенный сервис при заполнении таблицы «Инфляция». Желательно, чтобы при изменении цены на какой-то товар как можно меньше приходилось писать вручную и, следовательно, меньше ошибаться. В таблице «Товары» все товары встречаются один раз, поэтому легче найти тот товар, цену которого мы собираемся изменить. Если товар найден в форме, созданной на основе таблицы «Товары», то хотелось бы попасть в форму «Инфляция» сразу на ту запись, которая относилась бы к выбранному товару и являлась для него последней. Хотелось бы иметь возможность изменять цену как путем задания нового значения, так и путем указания, на сколько процентов надо изменить действующую на данный момент цену.

Для заполнения таблиц «Товары» и «Инфляция» создаются с помощью мастера одноименные формы, при этом форму «Товары» удобнее сделать ленточной.

В форму «Товары» следует вставить кнопку. Она должна быть у каждой записи, поэтому вставить ее надо в область данных формы. Эта кнопка будет открывать форму «Инфляция», но показывать не все записи, а только относящиеся к товару, рядом с которым нажата кнопка. Кроме того, в открываемой форме фокус должен быть установлен на последней записи.

Если при создании кнопки начинает работать мастер кнопок, то просим его открыть форму «Инфляция» для отобранных записей; затем соединяем поля «Товар» и «Товар». Если мастер не работает, то потребуется написать процедуру обработки события «Нажатие кнопки», первая инструкция которой откроет форму «Инфляция» для тех записей, у которых такое же значение поля «Товар»:

DoCmd.OpenForm "Инфляция", , , "[Товар]=" & " ' " & Forms![Товар]![Товар] & " ' "

Независимо от того, помогал мастер или нет, в процедуру надо добавить инструкцию перехода на последнюю запись в форме «Инфляция»:

DoCmd.GoToRecord , "Инфляция", acLast

Эта инструкция должна быть перед первой инструкцией Exit (если процедуру составлял мастер) или перед End Sub (если процедуру писали самостоятельно).

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

Если обновляется поле «Новая цена», то должна быть создана новая запись в форме «Инфляция». Создать ее можно при помощи метода GoToRecord объекта Docmd: отправиться на новую запись:

DoCmd.GoToRecord , "Инфляция", acNewRec

Чтобы в этой записи товар был бы тем же, требуется предварительно сохранить значение поля «Товар» в какой-нибудь переменной (tov=Me![Товар]) в самом начале процедуры, а после перехода на новую запись выполнить обратное присваивание Me![товар]=tov. В новой строке значение поля «Дата установления цены» должно быть равно сегодняшнему числу (Forms![Инфляция]![Дата установления цены]=Date), поле «Цена» – введенному значению поля «Новая цена».

После обновления поля «Изменение в процентах», происходить должно все то же, только у существующей активной записи в начале процедуры надо взять не только «Товар», но и «Цену». Для новой записи «Цена» должна быть пересчитана – увеличена на то количество процентов, которое указано в поле «Изменение в процентах».

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