Разработка многопользовательской информационной системы "Поставка цветов"

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 15.06.2011
Размер файла 689,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Содержание

Введение

1. Техническое задание

1.1 Анализ предметной области.

1.1.1 Общие сведения

1.1.2 Документы, на основании которых создается система

1.1.3 Назначение и цели создания системы

1.1.3.1 Назначение системы

1.1.3.2 Цели создания системы

1.1.4 Характеристика объектов автоматизации

1.1.4.1 Краткие сведения

1.1.4.2 Сведения об условиях эксплуатации объекта автоматизации и характеристиках окружающей среды

1.1.5 Требования к системе

1.1.5.1 Требования к системе в целом

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

1.1.6 Источники разработки

1.2 Постановка задачи

2. Технический проект информационной системы

2.1 Функциональная модель

2.1.1 Контекстная диаграмма и диаграммы детализации процессов

2.1.2 Диаграмма дерева узлов

2.2 Информационная модель

2.2.1 Идентификация сущностей и связей. ER-диаграмма логического уровня

2.2.2 ER-диаграмма физического уровня. Ограничения доменов. Ограничения ссылочной целостности. Переопределение триггеров. Индексирование отношений

2.2.3 Определение представлений, хранимых процедур серверной компоненты. ER-диаграмма в режиме отображения представлений

2.3 Верификация спроектированной логической модели

3. Реализация системы

3.1 T-SQL-определения регламентированных запросов

3.2 T-SQL-определения триггеров

3.3 T-SQL-определения хранимых процедур

3.4 Описание клиентских приложений

4. Проектирование системы безопастности. Управление авторизацией, управление ролями, управление разрешениями средствами Transact SQL

5. Результат тестирования информационной системы

Заключение

Список использованных литературных источников

Введение

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

Сегодня существует достаточно примеров систем управления базами данных, таких как Access от Microsoft, 10g от Oracle, DB2 от IBM, MySQL от MySQLLAB, SQL Server 2005 от Microsoft, каждая из которых способна организовать структурированное хранение данных и обеспечить управление ими как единым целым.

В рамках дипломного проекта решается задача проектирования и создания базы данных с использованием Access и SQL Server от Microsoft.

база данное многопользовательская информационная система

1. Техническое задание

1.1 Анализ предметной области.

1.1.1 Общие сведения

Объект автоматизации - цветочное тепличное хозяйство

1.1.2 Документы, на основании которых создается система

Заявки поставщиков; заявки покупателей; договора поставки; договора реализации; товаротранспортные накладные; должностные инструкции; акты на списание (выбытие) продукции; перечень продукции поставщиков (прайс-лист); перечень продукции фирмы (прайс-лист); сертификаты соответствия (сроки реализации);

1.1.3 Назначение и цели создания системы

1.1.3.1 Назначение системы

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

1.1.3.2 Цели создания системы

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

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

1.1.4 Характеристика объектов автоматизации

1.1.4.1 Краткие сведения

Фирма включает следующие отделы:

отдел снабжения, отдел сбыта, администрация.

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

Цветочная продукция поставляется многими поставщиками и реализуется многим заказчикам или покупателям. Продукция характеризуются: наименованием, ценой, количеством.

Работа фирмы осуществляется следующим образом.

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

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

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

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

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

Каждый отдел выполняет свои функции.

Администрация

Осуществляет расчет стоимости заказов по договорам;

Ведет учет поставляемой продукции;

Ведет учет договоров;

Формирует финансовые отчеты;

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

Отдел сбыта осуществляет следующие функции:

Ведет учет количества продукции оставшейся на складе и в торговой сети (магазины);

Оформляет новые договора, формирует новые заказы

Ведет списание проданной и утратившей товарный вид продукции;

Хранит информацию о заказчиках;

Информация, подлежащая хранению: код заказчика, название заказчика, адрес, телефон, номер заказа на реализацию, номер договора на реализацию, дата оформления и дата исполнения договора, наименование цветов и количество продукции на складе.

Отдел снабжения выполняет следующее:

Делает заказ на продукцию (пользующуюся спросом)

Хранит информацию о поставщиках продукции;

Выбирает информацию о ценах

Формирует ассортимент имеющейся продукции

Ведет учет поставляемой продукции

Информация, необходимая для осуществления вышеизложенных функций: наименование продукции, ее цена, количество, наименование и код поставщика, его адрес, телефон, УНН, номера заявок на поставку, наименование, единица измерения и количество продукции в заявках, номера договоров на поставку и даты оформления и исполнения договоров.

1.1.4.2 Сведения об условиях эксплуатации объекта автоматизации и характеристиках окружающей среды

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

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

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

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

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

1.1.5 Требования к системе

1.1.5.1 Требования к системе в целом

Система должна удовлетворять следующим требованиям:

Надежности;

Безопасности;

Требования к защите информации от несанкционированного доступа. Должна быть предусмотрена защита от несанкционированного доступа к данным, ввода данных, их удаления

Данные должны хранить в соответствии с имеющимися документами. Система должна быть доступна с любого компьютера в библиотечной сети.

Информация хранящаяся в системе должна быть защищена от аварийных ситуаций, влияния внешних воздействий (радиоэлектронная защита).

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

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

Функции, выполняемые подсистемами объекта автоматизации:

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

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

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

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

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

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

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

а) задача поддержания работоспособности технических средств;

б) задачи установки (инсталляции) и поддержания работоспособности системных программных средств;

в) задача установки (инсталляции) программы.

г) задача создания резервных копий базы данных.

1.1.6 Источники разработки

Гост 34.602-89. Государственный стандарт союза ССР. Информационная технология. Комплекс стандартов на автоматизированные системы. Техническое задание на создание автоматизированной системы

1.2 Постановка задачи

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

Создание базы данных позволит автоматизировать процесс получения:

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

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

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

Информацио о заказах в договора на реализацию и заявках на поставку, содержащих в свою очередь количество, стоимость и вид цветка.

Отчеты содержат списки поставщиков, заказчиков с данными о них, прайс-листы, перечни поставщиков и заказчиков, а также заключенные ими договора поставки (реализации) с заявками на поставку и заказами на реализацию цветочной продукции.

2. Технический проект информационной системы

2.1 Функциональная модель

2.1.1 Контекстная диаграмма и диаграммы детализации процессов

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

После того как контекст описан, проводится построение следующих диаграмм в иерархии. Каждая последующая диаграмма является более подробным описанием (декомпозицией) одной из работ на диаграмме вышестоящего уровня.

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

Рисунок 1 - Контекстная диаграмма.

Рисунок 2 - Декомпозиция процесса AO “Организовать работу предприятия по поставке цветов”

В дальнейшем диаграмма разбивается на уровни. Первый уровень - это диаграмма (рис. 2), с помощью которой производится детализация основного процесса, находящегося на контекстной диаграмме. Контекстную диаграмму разбиваем на 3 блока в соответствии с выполняющимися на предприятии операциями по отделам.

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

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

Блок «Организовать поставку цветов» разбиваем на 3 блока в соответствии с операциями, выполняемыми в отделе: «Оформить заявку поставщику на поставку цветов», «Оформить договор поставки», «Организовать оплату поставленных цветов» (рис. 3)

Рисунок 3 - Декомпозиция процесса A1 “Организовать поставку цветов”

Блок «Организовать реализацию цветов» разбиваем на 3 блока в соответствии с операциями, выполняемыми в отделе: «Оформить заказ на реализацию цветов», «Оформить договор на реализацию», «Выполнить расчет с заказчиком» (рис. 4)

Рисунок 4 - Декомпозиция процесса A2 “Организовать реализацию цветов”

Блок «Организовать переучет цветочной продукции» декомпозируем и получаем три блока в соответствии с операциями, выполняемыми в административном отделе: «Подсчет количества поставленного товара», «Подсчет количества реализованного товара», «Подсчет остатков продукции на складе» (рис. 5)

Рисунок 5 - Декомпозиция процесса A3 “Организовать переучет цветочной продукции”

2.1.2 Диаграмма дерева узлов

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

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

Диаграмма дерева узлов проектируемой базы данных представлена в приложении 1 (рис. 6).

Рисунок 6 - Диаграмма дерева узлов

2.2 Информационная модель

2.2.1 Идентификация сущностей и связей. ER-диаграмма логического уровня

Erwin имеет два уровня представления модели - логический и физический. Логический уровень - это абстрактный взгляд на данные. Объекты модели, представляемые на нем, называются сущностями и атрибутами. Логическая модель данных является универсальной, т.к. не зависит от конкретной СУБД.

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

- «Поставщики» - для хранения информации о поставщиках цветочной продукции;

- «Цветы» - для хранения информации имеющихся цветах;

- «Заказчики» - для хранения информации о заказчиках цветов;

- «Заказы на реализацию» - для хранения информации о заказах, входящих в договора на реализацию;

- «Договора на реализацию» - хранит информацию о заказчиках и заключенных ими договорах;

- «Договора на поставку» - информация о поставщиках цветов и заключенных ими договорах;

- «Заявки на поставку» - информация о заявках, входящих в договора поставки;

Для однозначного определения записей в каждом из отношений выделен первичный ключ (простой или составной).

Внешние ключи для отношений БД:

в отношениях «Поставщики» и «Договора на поставку» - это ключ «КодПоставщика»;

в отношениях «Договора на поставку» и «Заявки на поставку» - это ключ «Номер_оговора_на_поставку»;

в отношениях «Заявки на поставку» и «Цветы» - это ключ «Код_цветка»;

в отношениях «Заказчики» и «Договора на реализацию» - это ключ «Код_заказчика»;

в отношениях «Договора на реализацию» и «Заказы на реализацию» - это ключ «Номер_договора_на_реализацию»;

в отношениях «Заказы на реализацию» и «Цветы» - это ключ «Код_цветка»;

На логическом уровне проектирования в моделируемой базе данных присутствуют следующие типы связей между описанными сущностями:

неиденцифицирующие связи;

связи многие-ко-многим

Связь между сущностями «Поставщики» и «Договора на поставку», а также «Заказчики» и «Договора на реализацию» неидентифицирующая, не разрешающая присутствие нулей, т.к. за каждым поставщиком закреплен определённый договор на поставку, а за каждым заказчиком закреплен договор мна реализацию. Тип связи один-ко-многим, т.к. у одного поставщика может быть несколько договоров на поставку, и у одного заказчика может быть несколько договоров на реализацию.

Связь между сущностями «Договора на поставку» и «Заявки на поставку», а также «Договора на реализацию» и «Заказы на реализацию» неидентифицирующая, не разрешающая присутствие нулей, т.к. оплата производиться определённым методом. Тип связи один-ко-многим, т.к. одним методом могут проводиться многие оплаты. и 1 ко многимттствие нулейтрудники библиотеки.

Связь между сущностями «Заказы на реализацию» и «Цветы» многие-ко-многим, т.к. в один заказ могут быть включены несколько видов цветов, а один цветок может быть включен в несколько заказов.

Связь между сущностями «Заявки на поставку» и «Цветы» многие-ко-многим, т.к. в один заявка может содержать несколько видов цветов, а один цветок может быть включен в несколько заявок.

Между сущностями «Заказы на реализацию» и «Договора на реализацию» один-ко-многим, т.к. один договор на поставку может содержать несколько заказов на поставку.

ER-диаграмма логического уровня представлена в приложении 2 (рисунок 7).

Рисунок 7- ER-диаграмма логического уровня

2.2.2 ER-диаграмма физического уровня. Ограничения доменов. Ограничения ссылочной целостности. Переопределение триггеров. Индексирование отношений

Физическая модель данных зависит от конкретной СУБД. В ней содержится информация обо всех объектах БД. Одной и той же логической модели может соответствовать несколько разных физических. В физической модели важно описать всю информацию о конкретных физических объектах - таблицах, колонках, индексах, процедурах.

Проверим, удовлетворяют ли все имеющиеся отношения соответствующим наборам ограничений.

Первая нормальная форма требует, чтобы значения всех атрибутов отношения были атомарными. При рассмотрении информационной модели было отмечено, что значения атрибутов всех отношений логически разделить на элементы нельзя и, следовательно, они удовлетворяют условию первой нормальной формы. Пример, рассмотрим таблицу «Поставщики». Ключевой атрибут в ней - «Код_заказчика» не может быть разделен на элементы. Не ключевые атрибуты - «Наименование», «Адрес», «Телефон», «УНН» также являются атомарными.

Вторая нормальная форма требует, чтобы отношение находилось в первой нормальной форме, и каждый не ключевой атрибут функционально полно зависел от первичного ключа. И это требование также выполняется в рассматриваемой модели. Пример, рассмотрим таблицу «Поставщики». Ключевой атрибут в ней - «Код_поставщика». Не ключевые атрибуты - «Наименование», «Адрес», «Телефон», «УНН» зависят функционально полно только от первичного ключа.

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

Типы данных

1. Рассмотрим таблицу «Цветы». Ключевое поле этой таблицы «Код_цветка» является числовым. Следовательно, тип данных поля Код_цветка целого типа numeric.

2. В этой же таблице есть поле «Название цветка». Строковое значение. Тип данных для него - varchar.

3. Рассмотрим поле «Срок реализации». Это поле содержит числовое целочисленное значение - тип numeric.

4. Рассмотрим таблицу «Договора на поставку». Ключевое поле этой таблицы «Номер договора на поставку» является числовым. Следовательно, тип данных поля Код_цветка целого типа numeric.

5. В этой же таблице есть поля «Дата подписания договора и дата исполнения договора». Это поле содержит число, месяц, год даты, когда был подписан и когда должен быть исполнен договор. Тип данных для этого поля - datetime.

6. В таблице «Заявки на поставку». Имеется поле «Цена», которое содержит стоимость продукции, соответственно тип данных для этого поля денежный - money.

Для приложения были разработаны следующие триггеры:

Триггер TR_UdaleniePostavschikov срабатывает при попытке удаления информации из таблицы «Поставщики», производится проверка имени текущего пользователя, владелец ли он, в противном случае удаление не производится, происходит откат транзакций.

Тригер Proverka_datа проверяет дату исполнения договора при добавлении новой записи, которая не может быть меньше даты подписания договора на поставку;

Тригер Proverka_dat проверяет дату исполнения договора при добавлении новой записи, которая не может быть меньше даты оформления договора на реализацию;

Триггер UdalenieFlower определенный для таблицы «Цветы» срабатывает при попытке удаления информации из данной таблицы, при этом производится проверка имени текущего пользователя, владелец ли он, в противном случае удаление не производится, происходит откат транзакций.

ER-диаграмма физического уровня показана в приложении 3 (рисунок 8).

Рисунок 8 - ER-диаграмма физического уровня

2.2.3 Определение представлений, хранимых процедур серверной компоненты. ER-диаграмма в режиме отображения представлений

Представление (View) для конечных пользователей выглядит как таблица, но при этом само не содержит данных, а лишь представляет данные, расположенные в таблице. Физически представление реализовано в виде SQL-запроса, на основе которого производится выборка данных из одной или нескольких таблиц или представлений.

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

Для приложения были разработаны следующие представления:

Формирование списка заказчиков с номерами их договоров на реализацию, заказов к договорам и входящих в договора цветов, их количества и стоимости (dbo.Flower_and_zakazchiki);

Формирование перечня цветов, имеющихся в наличии (dbo.Flower_v_nalichii );

Формирование списка поставщиков с номерами их договоров на поставку, заявок к договорам и входящих в договора цветов (dbo.Postavchiki_and_flowers);

Формирование списка поставщиков с номерами договоров, заключенных ими, а также с номерами заявок, входящими в договоры (dbo.Postavchiki_and_dogovora)

Формирование списка заказчиков, с перечнем заказанных ими цветов

(dbo.Flower_and_zakazchiki);

Формирование прайс-листа поставщика

(dbo.Praiz_postavchika).

Хранимые процедуры имеют много общего с обычными процедурами. Использование хранимых процедур позволяет значительно повысить скорость разработки приложений.

Для приложения были разработаны следующие хранимые процедуры:

Процедура вставки новых данных в таблицу «Цветы»;

Процедура вставки новых данных в таблицу «Поставщики»;

Процедура вставки новых данных в таблицу «Заказчики»;

Процедура вставки нового заказа на реализацию в таблицу «Заказ_на_реализацию»;

Процедура удаления заказа на реализацию из таблицы «Заказ_на_реализацию»;

Процедура формирования списка цветов по договору на реализацию;

Процедура формирования списка цветов;

Процедура формирования списка поставщиков;

Процедура вставки новой заявки в договор поставки;

Процедура формирования списка договоров поставщика;

Процедура формирования списка договоров , которые были заключены заказчиком;

Процедура формирования списка цветов по договору на поставку;

Процедура формирования списка цветов по договору на реализацию;

Процедура формирования списка цветов поставщика;

Процедура формирования списка цветов заказчика.

2.3 Верификация спроектированной логической модели

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

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

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

Таблица 1 - Отчет о верификации модели

Arrow Name

Entity Name

Attribute Name

Информация о поставщиках

Поставщики

Код_поставщика

Название

Адрес

Телефон

УНН

Информация о цветах

Цветы

Код_цветка

Название

Срок_реализации

Информация о заказчиках

Заказчики

Код_заказчика

Название

Адрес

Телефон

Информация о договорах на реализацию

Договора_на_реализацию

Номер_договора_на_реализацию

Код_заказчика

Дата_оформления

Дата_исполнения

Информация о договорах на поставку

Договора_на_поставку

Номер_договора_на_поставку

Код_поставщика

Дата_оформления

Дата_исполнения

Информация о заявках на поставку

Заявки_на_поставку

Номер_заявки

Код_цветка

Количество

Цена

Единица_измерения

Номер_договора_на_поставку

Информация о заказах на реализацию

Заказы_на_реализацию

Номер_заказа

Код_цветка

Количество

Цена

Единица_измерения

Номер_договора_на_реализацию

3. Реализация системы

3.1 T-SQL-определения регламентированных запросов

Формирвоание перечня заявок на поставку

SELECT

ang.Заявки_на_поставку.Код_цветка,

ang.Заявки_на_поставку.Количество,

ang.Заявки_на_поставку.Цена, ang.Заявки_на_поставку.Единица_измерения,

ang.Цветы.Название

FROM ang.Цветы INNER JOIN

ang.Заявки_на_поставку

ON ang.Цветы.Код_цветка = ang.Заявки_на_поставку.Код_цветка;

Формирование списка заказчиков с номерами их договоров на реализацию, заказов к договорам и входящих в договора цветов, их количества и стоимости.

CREATE VIEW dbo.Flower_and_zakazchiki

AS

SELECT TOP 100 PERCENT

ang.Заказчики.Название,

ang.Договора_на_реализацию.Номер_договора_на_реализацию,

ang.Заказ_на_реализацию.Номер_заказа,

ang.Цветы.Название AS Expr1, ang.Заказ_на_реализацию.Количество,

ang.Заказ_на_реализацию.Цена

FROM ang.Цветы INNER JOIN

ang.Заказ_на_реализацию ON

ang.Цветы.Код_цветка= ang.Заказ_на_реализацию.Код_цветка

INNER JOIN

ang.Договора_на_реализацию ON

ang.Заказ_на_реализацию.Номер_договора_на_реализацию=

ang.Договора_на_реализацию.Номер_договора_на_реализацию

INNER JOIN

ang.Заказчики ON

ang.Договора_на_реализацию.Код_заказчика= ang.Заказчики.Код_заказчика

ORDER BY

ang.Заказчики.Название, ang.Договора_на_реализацию.Номер_договора_на_реализацию, ng.Заказ_на_реализацию.Номер_заказа,

ang.Цветы.Название

Формирование перечня цветов, имеющихся в наличии

CREATE VIEW dbo.Flower_v_nalichii

AS

SELECT TOP 100 PERCENT

ang.Цветы.Название,

ang.Заявки_на_поставку.Количество, ang.Заявки_на_поставку.Единица_измерения

FROM

ang.Договора_на_поставку

INNER JOIN

ang.Заявки_на_поставку

ON

ang.Договора_на_поставку.Номер_договора__на_поставку= ang.Заявки_на_поставку.Номер_договора__на_поставку INNER JOIN

ang.Цветы ON

ang.Заявки_на_поставку.Код_цветка= ang.Цветы.Код_цветка

ORDER BY ang.Цветы.Название, ang.Заявки_на_поставку.Количество, ang.Заявки_на_поставку.Единица_измерения

Формирование списка поставщиков с номерами их договоров на поставку, заявок к договорам и входящих в договора цветов

CREATE VIEW dbo.Postavchiki_and_flowers

AS

SELECT TOP 100 PERCENT

ang.Поставщики.Название, ang.Цветы.Название

AS ang.Заявки_на_поставку.Цена,

ang.Заявки_на_поставку.Единица_измерения, ang.Заявки_на_поставку.Количество, ang.Цветы.Срок_реализации

FROM ang.Поставщики INNER JOIN

ang.Договора_на_поставку ON

ang.Поставщики.Код_поставщика= ang.Договора_на_поставку.Код_поставщика

INNER JOIN

ang.Заявки_на_поставку ON

ang.Договора_на_поставку.Номер_договора__на_поставку= ang.Заявки_на_поставку.Номер_договора__на_поставку INNER JOIN

ang.Цветы ON

ang.Заявки_на_поставку.Код_цветка = ang.Цветы.Код_цветка

ORDER BY

ang.Поставщики.Название,

ang.Цветы.Название,

ang.Заявки_на_поставку.Цена,

ang.Заявки_на_поставку.Количество

Формирование прайс-листа поставщика

CREATE VIEW dbo.Praiz_postavchika

AS

SELECT TOP 100 PERCENT

ang.Цветы.Название,

ang.Заявки_на_поставку.Цена, ang.Заявки_на_поставку.Единица_измерения,

ang.Заявки_на_поставку.Количество

FROM ang.Цветы INNER JOIN

ang.Заявки_на_поставку ON

ang.Цветы.Код_цветка = ang.Заявки_на_поставку.Код_цветка

ORDER BY ang.Цветы.Название DESC,

ang.Заявки_на_поставку.Цена,

ang.Заявки_на_поставку.Единица_измерения

Формирование списка заказчиков, с перечнем заказанных ими цветов

CREATE VIEW dbo.Flower_and_zakazchiki

AS

SELECT TOP 100 PERCENT

ang.Заказчики.Название, ang.Договора_на_реализацию.Номер_договора_на_реализацию,

ang.Заказ_на_реализацию.Номер_заказа,

ang.Цветы.Название AS Expr1, ang.Заказ_на_реализацию.Количество,

ang.Заказ_на_реализацию.Цена

FROM

ang.Цветы INNER JOIN

ang.Заказ_на_реализацию ON

ang.Цветы.Код_цветка = ang.Заказ_на_реализацию.Код_цветка

INNER JOIN

ang.Договора_на_реализацию ON

ang.Заказ_на_реализацию.Номер_договора_на_реализацию= ang.Договора_на_реализацию.Номер_договора_на_реализацию

INNER JOIN

ang.Заказчики ON

ang.Договора_на_реализацию.Код_заказчика= ang.Заказчики.Код_заказчика

ORDER BY

ang.Заказчики.Название, ang.Договора_на_реализацию.Номер_договора_на_реализацию, ang.Заказ_на_реализацию.Номер_заказа,

ang.Цветы.Название

Формирование списка поставщиков с номерами договоров, заключенных ими, а также с номерами заявок, входяхими в договоры

CREATE VIEW dbo.Postavchiki_and_dogovora

AS

SELECT TOP 100 PERCENT

ang.Поставщики.Название, ang.Договора_на_поставку.Номер_договора__на_поставку,

ang.Заявки_на_поставку.Номер_заявки

FROM

ang.Поставщики INNER JOIN

ang.Договора_на_поставку

ON

ang.Поставщики.Код_поставщика= ang.Договора_на_поставку.Код_поставщика INNER JOIN

ang.Заявки_на_поставку ON

ang.Договора_на_поставку.Номер_договора__на_поставку= ang.Заявки_на_поставку.Номер_договора__на_поставку

ORDER BY

ang.Поставщики.Название, ang.Договора_на_поставку.Номер_договора__на_поставку, ang.Заявки_на_поставку.Номер_заявки

Формирование списка цен на цветы

CREATE VIEW dbo.Flower_and_cost

AS

SELECT TOP 100

PERCENT ang.Цветы.Название, ang.Заявки_на_поставку.Цена

FROM

ang.Цветы INNER JOIN

ang.Заявки_на_поставку ON

ang.Цветы.Код_цветка = ang.Заявки_на_поставку.Код_цветка

GROUP BY ang.Цветы.Название, ang.Заявки_на_поставку.Цена

ORDER BY ang.Заявки_на_поставку.Цена DESC

3.2 T-SQL-определения триггеров

1. Триггер, проверяющий имя текущего пользователя при удалении записи из таблицы «Поставщики»

CREATE TRIGGER TR_UdaleniePostavschikov

ON ang.Поставщики

FOR DELETE

AS

IF ( SELECT count(*)

from Поставщики /*записи из таблицы «Поставщики »*/

where Код_поставщика is not null ) >0

AND

(CURRENT_USER<> 'ang' OR CURRENT_USER<> 'ang*')

/*вызывается функция определения имени текущего пользователя и проверяется, владелец ли он*/

BEGIN

PRINT 'у вас нет прав на удаление этой записи'

/*выдача сообщения о неудаче операции*/

ROLLBACK TRANSACTION

/*откат (отмена) транзакции*/

END

2. Триггер, проверяющий правильность ввода даты подписания договора и даты исполнения договора на поставку

CREATE TRIGGER Proverka_data

ON ang.Договора_на_поставку

FOR INSERT

AS

IF EXISTS (SELECT * FROM Договора_на_поставку

WHERE Договора_на_поставку.Дата_подписания>

Договора_на_поставку.Дата_исполнения)

BEGIN

RAISERROR 50000

Дата исполнения не может быть меньше даты подписания.

ROLLBACK TRANSACTION /*откат (отмена) транзакции*/

END

3. Триггер, проверяющий правильность ввода даты подписания договора и даты исполнения договора на реализацию

CREATE TRIGGER Proverka_dat

ON ang.Договора_на_реализацию

FOR INSERT

AS

IF EXISTS (SELECT * FROM Договора_на_реализацию

WHERE Договора_на_реализацию.Дата_оформления>

Договора_на_реализацию.Дата_исполнения)

BEGIN

RAISERROR 50000

Дата исполнения не может быть меньше даты подписания.

ROLLBACK TRANSACTION /*откат (отмена) транзакции*/

END

4. Триггер, проверяющий имя текущего пользователя при удалении записи из таблицы «Поставщики»

CREATE TRIGGER UdalenieFlower

ON ang.Цветы /*Указываем имя таблицы, с которой будет связан триггер*/

FOR DELETE

AS

IF ( SELECT count(*)

from Цветы

where Код_цветка is not null ) >0

AND

( CURRENT_USER<> 'ang' OR CURRENT_USER<> 'ang*')

/*вызывается функция определения имени текущего пользователя и проверяется, владелец ли он*/

BEGIN

PRINT 'у вас нет прав на удаление этой записи'

/*выдача сообщения о неудаче операции*/

ROLLBACK TRANSACTION/*откат (отмена) транзакции*/

END

3.3 T-SQL-определения хранимых процедур

1. Процедура вставки новых данных в таблицу «Цветы»

CREATE PROCEDURE NewFlower

@Kod_Fl int,

@Nazv_Fl varchar(20),

@Data_realiz varchar(20)

AS

IF EXISTS (SELECT * FROM ang.Цветы

WHERE Код_цветка = @Kod_Fl AND Название=@Nazv_Fl)

RETURN 0

INSERT INTO ang.

VALUES ( @Kod_Fl,@Nazv_Fl ,@Data_realiz)

GO

2. Процедура вставки новых данных в таблицу «Поставщики»

CREATE PROCEDURE NewPostavschik

@Kod int,

@Nazv_post varchar(20),

@Adres varchar(40),

@Telefon varchar(20),

@UNN varchar(50)

ASIF EXISTS (SELECT * FROM ang.Поставщики WHERE

Код_поставщика = @Kod AND Название=@nazv_post)

RETURN 0

INSERT INTO ang. VALUES ( @Kod,@Nazv_post ,@Adres, @Telefon, @UNN)

GO

3. Процедура вставки новых данных в таблицу «Заказчики»

CREATE PROCEDURE NewZakazchik

@Kod_Zakazchika numeric,

@Name_Zakazchika varchar(40),

@Adres_Zakazchika varchar(40),

@Phone_Zakazchika varchar(20)

AS

IF EXISTS (SELECT * FROM ang.Заказчики WHERE Код_заказчика = @Kod_Zakazchika AND Название=@Name_Zakazchika)

RETURN 0

INSERT INTO ang.Заказчики

VALUES (@Kod_Zakazchika, @Name_Zakazchika, @Adres_Zakazchika, @Phone_Zakazchika)

GO

4. Процедура вставки нового заказа на реализацию в таблицу «Заказ_на_реализацию»

CREATE PROCEDURE NewZakaz_v_dog_realiz

@Nom_zakaza numeric,

@Kod_zvetka numeric,

@Kolich numeric,

@zena money,

@ed_izmer varchar(20),

@nam_dogReal numeric

AS

IF EXISTS (SELECT * FROM ang.Заказ_на_реализацию

WHERE Номер_заказа = @Nom_zakaza )

RETURN 0

INSERT INTO ang.Заказ_на_реализацию

VALUES ( @Nom_zakaza, @Kod_zvetka, @Kolich, @zena,@ed_izmer,@nam_dogReal)

GO

5. Процедура удаления заказа на реализацию из таблицы «Заказ_на_реализацию»

CREATE PROCEDURE DELETE_zakaz_na_realiz

@Nom int

AS

IF not EXISTS (SELECT * FROM ang.Заказ_на_реализацию

WHERE Номер_заказа=@Nom)

DELETE

FROM ang.Заказ_на_реализацию

WHERE Номер_заказа=@Nom

GO

6. Процедура формирования списка цветов по договору на реализацию

CREATE PROCEDURE Spisok_zvetov_po_dog_na_realizac

@Nom_dog_na_realiz int

AS SELECT

/*ang.Договора_на_реализацию.Номер_договора_на_реализацию,*/

ang.Цветы.Название,

ang.Заказ_на_реализацию.Количество,

ang.Заказ_на_реализацию.Цена

FROM

ang.Заказ_на_реализацию,ang.Цветы,

ang.Договора_на_реализацию

WHERE

(@Nom_dog_na_realiz =

ang.Договора_на_реализацию.Номер_договора_на_реализацию

AND

ang.Заказ_на_реализацию.Код_цветка=ang.Цветы.Код_цветка)

GO

7. Процедура формирования списка цветов

CREATE PROCEDURE Spisok_zvetov

AS SELECT

/*ang.Договора_на_реализацию.Номер_договора_на_реализацию,*/

ang.Цветы.Название

FROM ang.Цветы

ORDER BY (ang.Цветы.Название)

GO

8. Процедура формирования списка поставщиков

CREATE PROCEDURE Spisok_postavschikov

AS SELECT

/*ang.Договора_на_реализацию.Номер_договора_на_реализацию,*/

ang.Поставщики.Название

FROM

ang.Поставщики

ORDER BY (ang.Поставщики.Название)

GO

9. Процедура вставки новой заявки в договор поставки

CREATE PROCEDURE NewZayavka_v_dog_postavki

@nom_z numeric,

@Kod_zvetka numeric,

@Kolich numeric,

@zena money,

@ed_izmer varchar(20),

@Nom_d numeric

AS/*Проверяем, есть ли запись в таблице «Поставщики» с такими же значениями ключевых полей, как у новой записи*/

IF EXISTS (SELECT * FROM ang.Заявки_на_поставку

WHERE Номер_заявки = @Nom_z )

RETURN 0 /*Если есть, завершаем выполнение процедуры*/

INSERT INTO ang.Заявки_на_поставку

/*Указываем таблицу, куда вставляем запись*/

VALUES ( @nom_z, @Kod_zvetka, @Kolich, @zena,@ed_izmer,@Nom_d) GO

10. Процедура формирования списка договоров поставщика

CREATE PROCEDURE SpicokDogovorovPostavchika

@Kod_Post int

AS SELECT

ang.Договора_на_поставку.Номер_договора__на_поставку,

ang.Договора_на_поставку.Дата_подписания_договора,

ang.Договора_на_поставку.Дата_исполнения_договора

FROM

ang.Договора_на_поставку

WHERE

(@Kod_Post = ang.Договора_на_поставку.Код_поставщика)

GO

11. Процедура формирования списка договоров , которые были заключены заказчиком

CREATE PROCEDURE SpicokDogovorovZakazchika

@Kod_zakazchika int

AS SELECT

ang.Договора_на_реализацию.Номер_договора_на_реализацию,

ang.Договора_на_реализацию.Дата_оформления_договора,

ang.Договора_на_реализацию.Дата_исполнения_договора

/*ang.Договора_на_реализацию.Код_заказчика*/

FROM

ang.Договора_на_реализацию

WHERE (@Kod_zakazchika =ang.Договора_на_реализацию.Код_заказчика)

GO

12. Процедура формирования списка цветов по договору на поставку

CREATE PROCEDURE Spisok_zvetov_po_dog_na_postavku

@Nom_dog_na_postavku int

AS SELECT

/*ang.Договора_на_реализацию.Номер_договора_на_реализацию,*/

ang.Цветы.Название,

ang.Заявки_на_поставку.Количество,

ang.Заявки_на_поставку.Цена

FROM

ang.Цветы, ang.Заявки_на_поставку,ang.Договора_на_поставку

WHERE

( (@Nom_dog_na_postavku =

ang.Договора_на_поставку.Номер_договора__на_поставку)

AND

/*(Договора_на_поставку.Номер_договора__на_поставку=

Заявки_на_поставку.Номер_договора__на _поставку )

AND */

(ang.Заявки_на_поставку.Код_цветка=ang.Цветы.Код_цветка) )

GO

13. Процедура формирования списка цветов по договору на реализацию

CREATE PROCEDURE Spisok_zvetov_po_dog_na_realizac

@Nom_dog_na_realiz int

AS SELECT

/*ang.Договора_на_реализацию.Номер_договора_на_реализацию,*/

ang.Цветы.Название,

ang.Заказ_на_реализацию.Количество,

ang.Заказ_на_реализацию.Цена

FROM

ang.Заказ_на_реализацию,ang.Цветы,

ang.Договора_на_реализацию

WHERE

(@Nom_dog_na_realiz =

ang.Договора_на_реализацию.Номер_договора_на_реализацию

AND

ang.Заказ_на_реализацию.Код_цветка=ang.Цветы.Код_цветка)

GO

15. Процедура формирования списка цветов поставщика

CREATE PROCEDURE Spisok_zvetov_postavschika

@Name_postavschika varchar(20)

AS SELECT

/*ang.Договора_на_реализацию.Номер_договора_на_реализацию,*/

ang.Цветы.Название,

ang.Заявки_на_поставку.Количество,

ang.Заявки_на_поставку.Цена

FROM /*

ang.Заявки_на_поставку,

ang.Цветы, ang.Поставщики,

ang.Договора_на_поставку

WHERE

(@Name_postavschika = ang.Поставщики.Название

AND

ang.Поставщики.Код_поставщика=

ang.Договора_на_поставку.Код_поставщика )

GO

15. Процедура формирования списка цветов заказчика

CREATE PROCEDURE Spisok_zvetov_zakazchika

@Name_zakazchika varchar(20)

AS SELECT

/*ang.Договора_на_реализацию.Номер_договора_на_реализацию,*/

ang.Цветы.Название,

ang.Заказ_на_реализацию.Количество,

ang.Заказ_на_реализацию.Цена

FROM /*указываем имена таблиц, из которых выбираются записи*/

ang.Заказ_на_реализацию, ang.Цветы,

ang.Заказчики,

ang.Договора_на_реализацию

WHERE

(@Name_zakazchika = ang.Заказчики.Название

AND

(ang.Заказчики.Код_заказчика=

ang.Договора_на_реализацию.Код_заказчика

/*AND

Договора_на_реализацию.Номер_договора_на _реализацию = Заказ_на_реализацию.Номер_договора_на _реализацию*/

) )

GO

3.4 Описание клиентских приложений

При разработке клиентского приложения были созданы следующие формы.

При запуске приложения появляется главная форма «Предприятие по поставке цветов» (рис.9). На форме присутствует кнопки «Отдел снабжения», «Отдел сбыта», нажатие на которую открывает другие формы. Коды кнопок:

Option Compare Database

' кнопка перехода на форму «Поставки»

Private Sub Кнопка13_Поставки_цветов_Click()

Form_Поставки.Visible = True

Form_Главная.Visible = False

Form_Реализация.Visible = False

End Sub

' кнопка перехода на форму «Реализация»

Private Sub Кнопка17_Реализация_цветов_Click()

Form_Поставки.Visible = False

Form_Главная.Visible = False

Form_Реализация.Visible = True

End Sub

` кнопка выхода из программы

Private Sub Кнопка18_close_Click()

On Error GoTo Err_Кнопка18_close_Click

DoCmd.Close

Exit_Кнопка18_close_Click:

Exit Sub

Err_Кнопка18_close_Click:

MsgBox Err.Description

Resume Exit_Кнопка18_close_Click

End Sub

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

Private Sub Кнопка15_Click() 'Новый цветок +

Надпись40.Caption = "Ввод нового ЦВЕТКА, по окончании ввода нажмите ОК"

Надпись40.Visible = True

' поля и надписи ввода нового цветка

Поле18.Visible = True

Поле21.Width = 3400

Поле21.Visible = True

Поле24.Visible = True

Поле27.Visible = False

Поле31.Visible = False

Поле44.Visible = False

ПолеСоСписком52.Visible = False

Надпись17.Caption = "Название цветка"

Надпись17.Visible = True

Надпись20.Caption = "Код цветка"

Надпись20.Visible = True

Надпись23.Caption = "Срок реализации цветка"

Надпись23.Visible = True

Надпись30.Visible = False

Надпись33.Visible = False

Надпись43.Visible = False

Поле18.SetFocus

Поле18.Value = ""

Поле21.Enabled = True

Поле21.SetFocus

Поле21.Text = ""

Поле24.SetFocus

Поле24.Text = ""

Кнопка34.Visible = False

Кнопка10.Visible = True

Кнопка35.Visible = False

Кнопка46.Visible = False

Кнопка56.Visible = False

Кнопка67.Visible = False

MsgBox " Введите данные о новом цветке !"

Поле18.SetFocus

End Sub

После ввода информации о цветке необходимо нажать кнопку «Ок» и через хранимую процедуру данные будут отправлены в таблицу на SQL-сервере.

Код кнопки подтверждения ввода нового цветка:

Private Sub Кнопка10_Click() 'Ok (для нового ЦВЕТКА)+

Dim kod_zv As Long

Dim Nazv_zv As String

Dim Srok_peal As String

Dim dbs As Database ' текущая БД

Dim strSQL As String

Dim qdf As QueryDef

` проверка корректновти ввода данных

Поле18.SetFocus

If Поле18.Text = "" Then

MsgBox " Не введено название цветка! Повторите ввод!"

Exit Sub

Поле18.SetFocus

Else

Nazv_zv = Поле18.Text

End If

Поле21.Enabled = True

Поле21.SetFocus

If IsNumeric(Поле21.Text) = False Or Поле21.Text = "" Then

MsgBox " Ошибка ввода! Код должен быть числовым значением или не введены данные !"

Exit Sub

Поле21.SetFocus

Else

kod_zv = CInt(Поле21.Text)

End If

Поле24.SetFocus

If Поле24.Text = "" Then

MsgBox " Не введен срок реализации цветка! Повторите ввод!"

Exit Sub

Поле24.SetFocus

Else

Srok_peal = Поле24.Text

End If

'--- Добавление записи о цветке через хранимую процедуру NewFlower

Set dbs = CurrentDb ' текущая база

strSQL = "Execute NewFlower " & CStr(kod_zv) & "," & Nazv_zv & "," & Srok_peal 'текст запроса

dbs.QueryDefs.Delete ("temp1") 'удаление существующего запроса

Set qdf = dbs.CreateQueryDef("temp1")

qdf.Connect = "ODBC; DSN=istok; DATABASE=Flower_bd; Trusted_Connection=Yes"

qdf.SQL = strSQL

qdf.ReturnsRecords = False

DoCmd.OpenQuery "temp1" ', acPreview

Set dbs = Nothing

'-------------------------

Поле18.SetFocus

Поле18.Value = ""

Поле21.SetFocus

Поле21.Text = ""

Поле24.SetFocus

Поле24.Text = ""

End Subмм

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

Код процедуры обработки наатия кнопки «Ок» при подтверждении ввода данных о заключенном договоре:

Private Sub Кнопка35_Click() ' ОK (для нового ДОГОВОРА на поставку)

Dim nom_dog As Long

Dim Pos_ik As String

Dim Data_of As Date

Dim Data_isp As Date

Dim Kod_Pos As Long

Поле18.SetFocus ' номер договора на поставку

If IsNumeric(Поле18.Text) = False Or Поле18.Text = "" Then

MsgBox " Ошибка ввода! Код должен быть числовым значением или не введены данные !"

Exit Sub

Поле18.SetFocus

Else

nom_dog = CInt(Поле18.Text)

End If

Поле24.SetFocus ' дата оформления договора

If Поле24.Text = "" Then

MsgBox " Не введена дата оформления договора! Повторите ввод!"

Exit Sub

Поле24.SetFocus

Else

Data_of = Поле24.Text

End If

Поле27.SetFocus ' дата исполнения договора

If Поле27.Text = "" Then

MsgBox " Не введена дата исполнения договора! Повторите ввод!"

Exit Sub

Поле27.SetFocus

Else

Data_isp = Поле27.Text

End If

If Поле21.Value = "" Then

MsgBox " Не выбран ПОСТАВЩИК! Повторите ввод!"

Exit Sub

Поле21.SetFocus

End If

Kod_Pos = Form_Поставщики.Код_поставщика.Value

'--- Добавление записи о новом ДОГОВОРЕ через хранимую процедуру NewDogovor_Post

Set dbs = CurrentDb ' текущая база

strSQL = "Execute NewDogovor_Post " & CStr(nom_dog) & "," & CStr(Kod_Pos) & "," & Data_of & "," & Data_isp 'текст запроса

'MsgBox "Execute NewPostavschik " & CStr(Kod_Pos) & "," & Nazv_pos & "," & Adres_pos & ", " & Phone_pos & "," & UNN_pos

dbs.QueryDefs.Delete ("temp1") 'удаление существующего запроса

Set qdf = dbs.CreateQueryDef("temp1")

qdf.Connect = "ODBC; DSN=istok; DATABASE=Flower_bd; Trusted_Connection=Yes"

qdf.SQL = strSQL

qdf.ReturnsRecords = False

DoCmd.OpenQuery "temp1" ', acPreview

Set dbs = Nothing

'-------------------------

Поле18.SetFocus

Поле18.Value = ""

Поле24.SetFocus

Поле24.Text = ""

Поле27.SetFocus

Поле27.Text = ""

Поле31.SetFocus

Поле31.Text = ""

End Sub

При выборе кнопки «Новый поставщик» на форме отображаются соответствующие поля для ввода данных о новом поставщике, производится проверка корректности ввода данных, при ошибочном вводе выводится соответствующее сообщение, по окончании ввода необходимо нажать «Ок» для передчи информации черех хранимую процедуру на SQL-сервер.


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.