Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДП_Кулаков_n.doc
Скачиваний:
16
Добавлен:
25.04.2019
Размер:
3.22 Mб
Скачать

2.2.1. Проектирование сценария диалога

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

К чертежу, отображенному на рисунке 2.3 следует сделать следующие пять пояснений:

  1. квитанцию получения товара в виде отчета можно получить с двух форм диалога – “Формирование квитанции получения товара” (Kvit_In_F) и “Квитанции получения товара” (Kvit_In). Квитанция получения товара – Отчет 1;

  2. квитанцию выдачи товара в виде отчета можно получить с двух форм диалога – “Формирование квитанции выдачи товара” (Kvit_Out_F) и “Квитанции выдачи товара” (Kvit_Out). Квитанция выдачи товара – Отчет 2;

  3. Отчет “Наличие товара на складе” (Tov_Nal) можно получить с формы диалога – “Главная кнопочная форма” (Main_F нажатием кнопки “Наличие товара на текущие дату и время” (B_Nal_Tov). Отчет “Наличие товара на складе” – Отчет 3;

  4. отчет о просроченном товаре можно получить с формы диалога – “Списание просроченного товара” (Spis_Tov) нажатием кнопки “Отчет о просроченном товаре” (B_Prosr_Tov). Отчет о просроченном товаре – Отчет 4;

  5. акт списания просроченного товара в виде отчета можно получить с формы диалога – “Списание просроченного товара” (Spis_Tov) нажатием кнопки “Акт списания” (B_Akt_Spis). Акт списания просроченного товара – Отчет 5.

Рисунок 2.3 - ИС “СКЛАД ПРОДОВОЛЬСТВЕННЫХ ТОВАРОВ”. Схема диалога

Описание форм диалога и формирование рассмотрено ниже.

2.2.2. Описание программных модулей

Рассмотрим разработку ПО поддержки экранных форм, предназначенных для ведения таблиц БД и формирования выходных документов (результатной информации).

2.2.2.1. Экранные формы ис “склад продовольственных товаров”

Экранные формы ИС Склад продовольственных товаров для работы с таблицами БД, формирования запросов и выходных документов представлены на рисунках 2.4 – 2.27.

На рисунке 2.4 представлена главная кнопочная форма, которая открывается при запуске приложения.

Рисунок 2.4 - Главная кнопочная форма

С помощью главной кнопочной формы (см. рисунок 2.4) можно открывать формы для ведения и редактирования таблиц БД: 1 - “Информация о товаре (справочник товара)” (Tovar), 2 - “Информация о получении товара” (Input), 3 - “Информация о выдаче товара” (Output), 4 - “Информация о кладовщиках” (Kladov), 5 - “Информация о месте хранения товара” (Mesto_Chran), 6 - “Информация о квитанциях на получение товара” (Kvit_In), 8 - “Информация о квитанциях на выдачу товара” (Kvit_Out), 12 - “Информация о просроченном товаре” (Prosrotch), а также формировать выходные документы в виде квитанций на получение (выноска 7) и выдачу (выноска 9) товара. Непосредственно с главной кнопочной формы можно инициировать просмотр отчета о наличии товара на момент текущих даты и времени (выноска 10) и печать этого отчета (выноска 11).

На рисунке 2.5 приведена экранная форма для ведения и редактирования таблицы “Информация о товаре (справочник товара)” (Tovar).

Рисунок 2.5 - Ведение таблицы “Информация о товаре (справочник товара)” (Tovar)

При редактировании таблицы “Информация о товаре (справочник товара)” (Tovar) в поля соответствующей записи таблицы необходимо вводить конкретные значения полей. Форма позволяет добавлять и удалять записи таблицы “Информация о товаре (справочник товара)” (Tovar).

На рисунках 2.6 а и б приведена экранная форма для ведения и редактирования таблицы “Информация о получении товара” (Input).

Рисунок 2.6а - Ведение таблицы “Информация о получении товара” (Input)

При редактировании таблицы “Информация о получении товара” (Input) в поля соответствующей записи таблицы нет необходимости вводить конкретные значения полей.

Индекс таблицы “Информация о получении товара” (Input) при добавлении записи формируется автоматически (выноска 1). Поле индекса квитанции получения товара (ind_Kvit_In) необходимо вводить в ручную (хотя с формы формирования квитанции получения товара он формируется автоматически) (см. выноску 2). Индекс получаемого товара (ind_Tov) (выноска 3) редактируется на основе визуального компонента список товаров (выноска 4), что позволяет не запоминать индексы, а выбирать их по названиям товаров из таблицы “Информация о товаре (справочник товара)” (Tovar). Источником строк записей списка товаров является запрос, который на языке SQL представлен ниже

SELECT Tovar.ind_Tov, Tovar.Tovar FROM Tovar ORDER BY [Tovar];

Количество товара (выноска 5) и остаток товара (выноска 10) отображают количество принятого товара в единицах хранения и остаток товара на складе после его выдачи и/или списания, соответственно.

Единица хранения товара (выноска 6) не редактируется. На основе визуального компонента список в ней отражаются единицы хранения товаров из таблицы “Информация о товаре (справочник товара)” (Tovar). Источником строк записей списка товаров является запрос, который на языке SQL представлен ниже

SELECT Tovar.ind_Tov, Tovar.Ed_Chran FROM Tovar;

Индекс хранения товара (ind_Chran) (выноска 7) редактируется на основе визуального компонента список мест хранения товаров (выноска 8), что позволяет не запоминать индексы, а выбирать их по названиям мест хранения и другой информации из таблицы “Информация о месте хранения товара” (Mesto_Chran). Источником строк записей списка мет хранения товаров является запрос, который на языке SQL представлен ниже (разработан автором)

SELECT DISTINCT Mesto_Chran.ind_Chran, Mesto_Chran.Mesto_Chran, Mesto_Chran.Rem, Tovar.Tovar, Mesto_Chran.Kol_Tov

FROM Mesto_Chran, Tovar

WHERE INT(Mesto_Chran.Rem)=Tovar.ind_Tov ORDER BY [Rem];

Самостоятельно разрабатывать запрос пришлось из-за того, что в результате подстановки в таблице Mesto_Chran вместо поля Rem отражается индекс товара из таблицы Tovar.

Поле стоимости полученного товара (выноска 9) формируется полуавтоматически. Щелчком по кнопке запускается запрос на обновление (выноска 11), который разработан на основе конструктора запросов и на языке SQL представлен ниже.

UPDATE Tovar INNER JOIN [Input] ON Tovar.ind_Tov = Input.ind_Tov SET [Input].Stoim = Input!Kol_Tov*Tovar!Cena_In

WHERE (((Tovar.ind_Tov)=[Forms]![Input_Tov]![ind_Tov]));

Форма позволяет добавлять и удалять записи (выноска 12) таблицы “Информация о получении товара” (Input).

На рисунок 2.6б - представлен раскрытый список мест хранения товаров.

Рисунок 2.6б - Ведение таблицы “Информация о получении товара” (Input)

В запросе формирования строк записей списка мет хранения товаров (оператор SELECT) присутствуют 5 полей, а на рисунке 2.6б – только три поля. Из-за малой информативности полей Mesto_Chran.ind_Chran и Mesto_Chran.Rem их ширина задана – 0 см. Первое поле – место хранения товара, второе - наименование товара, а третье – количество единиц хранения товара.

Форма Ведение таблицы “Информация о получении товара” (Input) (см. рисунки 2.6а и 2.6б) нужна лишь для редактирования таблицы БД “Информация о получении товара” (Input). При формировании квитанции получения товара необходимые поля таблицы Input заполняются автоматизированно в результате диалога на основе формы 'Ведение таблицы “Информация о квитанциях на выдачу товара” (Kvit_Out)', рассмотренной ниже.

На рисунке 2.7 приведена экранная форма для ведения таблицы БД ИС “Информация о выдаче товара” (Output).

Рисунок 2.7 - Ведение таблицы “Информация о выдаче товара” (Output)

Ведение таблицы “Информация о выдаче товара” (Output) мало по функциональным возможностям отличается от ведения таблицы “Информация о получении товара” (Input) (см. рисунки 2.6 а и б). Только обновление стоимости реализуется не на основе цены получения товара, а на основе цены отпуска. Щелчком по кнопке “Обновить стоимость” запускается запрос на обновление, который разработан на основе конструктора запросов и на языке SQL представлен ниже.

UPDATE Tovar INNER JOIN [Input] ON Tovar.ind_Tov = Input.ind_Tov SET [Input].Stoim = Input!Kol_Tov*Tovar!Cena_Out

WHERE (((Tovar.ind_Tov)=[Forms]![Out_Tov]![ind_Tov]));

Форма позволяет добавлять и удалять записи (выноска 11) таблицы “Информация о выдаче товара” (Output).

На рисунке 2.8 приведена экранная форма для ведения таблицы БД ИС “СКЛАД ПРОДОВОЛЬСТВЕННЫХ ТОВАРОВ” “Информация о кладовщиках” (Kladov).

Рисунок 2.8 - Ведение таблицы “Информация о кладовщиках” (Kladov)

При редактировании таблицы “Информация о кладовщиках” (Kladov) в поля соответствующей записи таблицы необходимо вводить конкретные значения полей. Только поле индекса ind_Kladov формируется автоматически при добавлении новых записей.

Форма позволяет добавлять и удалять записи таблицы “Информация о кладовщиках” (Kladov).

На рисунке 2.9 приведена экранная форма для ведения таблицы БД ИС “СКЛАД ПРОДОВОЛЬСТВЕННЫХ ТОВАРОВ” “Информация о месте хранения товара” (Mesto_Chran).

Рисунок 2.9 - Ведение таблицы “Информация о месте хранения товара” (Mesto_Chran)

Основные визуальные компоненты формы обозначены выносками:

1–поле индекса места хранения (ind_Chran) – формируется автоматически при добавлении записей в таблицу;

2–поле обозначения места хранения (Mesto_Chran) – ручной ввод при редактировании и добавлении записей;

3–поле вместимости места хранения (V_Chran) в единицах хранения товара;

4–поле количества товара (Kol_Tov) на текущее время в месте хранения в единицах хранения товара;

5–поле описания места хранения (Rem). Как уже отмечалось выше, в результате подстановки в таблице Mesto_Chran вместо поля Rem отражается индекс товара из таблицы Tovar в символьном виде;

6–поле со списком описания места хранения товара – позволяет на основе списка редактировать поле описания места хранения (Rem).

Источником строк записей списка описания мет хранения товаров является запрос, который на языке SQL представлен ниже.

SELECT Tovar.ind_Tov, Tovar.Tovar FROM Tovar, Mesto_Chran WHERE Tovar.ind_Tov=INT(Mesto_Chran.Rem) ORDER BY [Tovar];

Форма позволяет добавлять и удалять (кнопка обозначена выноской 7) записи таблицы “Информация о месте хранения товара” (Mesto_Chran).

На рисунке 2.10 приведена экранная форма для ведения таблицы БД ИС “Информация о квитанциях на получение товара” (Kvit_In).

Рисунок 2.10 - Ведение таблицы “Информация о квитанциях на получение товара” (Kvit_In)

Сформированные квитанции на получение товара можно просматривать и редактировать (редактирование в некоторых случаях можно запрещать) с помощью экранной формы, представленной на рисунке 2.10. Выносками 1 – 4 обозначены поля таблицы БД “Информация о квитанциях на получение товара” (Kvit_In). Названия полей представлены на рисунке. Выноской 5 обозначен визуальный компонент типа поле со списком, хранящий Ф.И.О. всех кладовщиков из таблицы “Информация о кладовщиках” (Kladov). Источником строк записей списка Ф.И.О. всех кладовщиков является запрос, который на языке SQL представлен ниже.

SELECT Kladov.ind_Kladov, Kladov.FIO FROM Kladov ORDER BY [FIO];

Поле Kladov.ind_Kladov в списке не отображается, так как его ширина задана 0 см.

Выносками 6 – 8 обозначены визуальные компоненты кнопок “Просмотр отчета по квитанции”, “Печать отчета по квитанции” и “Удалить текущую запись”, соответственно. Программная реализация обработчиков событий нажатия на кнопки “Просмотр отчета по квитанции” и “Печать отчета по квитанции” рассмотрена ниже и в прилож. 1.

Следует отметить, что формирование одинаковых по форме и содержанию отчетов по квитанциям получения/выдачи товаров возможно с двух форм:

  • Ведение таблицы “Информация о квитанциях на получение/выдача товара” (Kvit_In, Kvit_Out) (две формы – одна на получение и другая – на выдачу товаров) и

  • Формирования квитанции получения/выдачи товаров (Kvit_In_F, Kvit_Out_F) (две формы – одна на получение и другая – на выдачу товаров). Учитывая это, подробно отчеты формирования соответствующих квитанций будут рассмотрены лишь для форм формирования квитанции получения/выдачи товаров (Kvit_In_F, Kvit_Out_F).

Выноской 9 обозначена подчиненная форма/отчет для отображения информации о товарах, входящих в конкретную квитанцию. Источником записей подчиненной формы/отчета является запрос Kvit_In_, который на языке SQL представлен ниже.

SELECT Tovar.Tovar, Tovar.Cena_In, Tovar.Ed_Chran, Input.Kol_Tov, Input.Stoim, Mesto_Chran.Mesto_Chran

FROM Tovar INNER JOIN (Mesto_Chran INNER JOIN [Input] ON Mesto_Chran.ind_Chran = Input.ind_Chran) ON Tovar.ind_Tov = Input.ind_Tov

WHERE (((Input.ind_Kvit_In)=[Forms]![Kvit_In]![ind_Kvit_In]));

Форма позволяет добавлять и удалять (выноска 8) записи таблицы “Информация о квитанциях на получение товара” (Kvit_In).

На рисунке 2.11 приведена экранная форма для ведения таблицы “Информация о квитанциях на выдачу товара” (Kvit_Out).

Рисунок 2.11 - Ведение таблицы “Информация о квитанциях на выдачу товара” (Kvit_Out)

Ведение таблицы “Информация о квитанциях на выдачу товара” (Kvit_Out) мало по функциональным возможностям отличается от ведения таблицы “Информация о квитанциях на получение товара” (Kvit_In) (см. рисунок 2.10). Формы квитанций на получение и выдачу товаров очень похожи. Хотя в некоторых других случаях отличия могут быть и более существенными. Тогда, естественно, структуры таблиц “Информация о квитанциях на прием/выдачу товара” запросов для формирования источников записей подчиненной формы/отчета необходимо модифицировать.

Подчиненная форма/отчет для отображения информации о товарах, входящих в конкретную квитанцию отличается от формы, представленной на рисунке 2.10, источником записей в виде запроса Kvit_Out_, который на языке SQL представлен ниже.

SELECT Tovar.Tovar, Tovar.Cena_Out, Tovar.Ed_Chran, Output.Kol_Tov, Output.Stoim, Mesto_Chran.Mesto_Chran

FROM Tovar INNER JOIN (Mesto_Chran INNER JOIN [Output] ON Mesto_Chran.ind_Chran = Output.ind_Chran) ON Tovar.ind_Tov = Output.ind_Tov

WHERE (((Output.ind_Kvit_Out)=[Forms]![Kvit_Out]![ind_Kvit_Out]));

Программное обеспечение поддержки формы представлено в прилож. 2. Все операторы VBA, полученные без участия построителя, прокомментированы.

Форма позволяет добавлять и удалять записи таблицы “Информация о квитанциях на выдачу товара” (Kvit_Out).

Все выходные документы формируются на основе отчетов MS Access.