- •Содержание
- •Введение
- •Цель лабораторной работы
- •Задачи лабораторной работы
- •Задание
- •Методика выполнения задания
- •Этап 1. Анализ требований к приложению и проектирование интерфейса
- •Информационная модель базы данных
- •Этап 2. Создание проекта
- •Этап 3. Подключение к базе данных
- •Выбор объектов базы данных
- •Структура главного меню
- •Этап 4. Создание представлений данных
- •Свойства TableAdapter
- •Этап 5. Создание запросов с параметрами
- •Ввод sql запроса
- •Этап 6. Отображение таблиц в приложении
- •Способ 1
- •Выбор источника данных
- •Способ 2
- •Панель инструментов BindingNavigator
- •Этап 7. Взаимодействие двух связанных таблиц в приложении
- •Этап 8. Связывание полей таблицы с элементами управления
- •Компонент NumericUpDown
- •Компонент DateTimePicker
- •Компонент ComboBox
- •Этап 9. Поиск (фильтрация данных)
- •Этап 10. Проверка введённых данных. Обработка ошибок
- •Этап 11. Создание форм справочников
- •Справочник клиентов Этап 12. Создание отчётов
- •Редактирование выражения для поля Text Box
- •Связь компонента ReportViewer с отчётом.
- •Форма с отчётом
- •Критерии результативности выполнения лабораторной работы
- •Контрольные вопросы
- •Список литературы
Задание
Данная лабораторная работа выполняется с использованием базы данных, созданной в рамках лабораторной работы № 2 [4]. Требуется:
провести анализ требований к приложению и спроектировать интерфейс приложения;
реализовать подключение к базе данных;
реализовать просмотр, редактирование, поиск для таблиц-справочников, представлений на основе нескольких таблиц и для связанных (взаимодействующих) таблиц/представлений, расположенных на одной форме;
реализовать создание отчетов.
На выполнение лабораторной работы отводится 8 часов.
Методика выполнения задания
Лабораторная работа состоит из 12 этапов. В качестве сервера БД используется MS SQL Server 2008/2012 Express или любая другая клиент-серверная СУБД.
Этап 1. Анализ требований к приложению и проектирование интерфейса
Предположим, требуется написать приложение для оперативного учета деятельности магазина. Информационная модель представлена на Рис. 1.
Информационная модель базы данных
Поступление товаров на склад магазина осуществляется по накладным (таблица invoices). Таблица накладных содержит данные о каждом поступившем товаре: дата поступления, товар (из таблицы goods), входная цена, количество, поставщик (из таблицы vendors). Обратите внимание, что в данном примере в рамках одной накладной может поступить только одно наименование товара. Розничная цена (поле retail_price) будет вычисляться в триггере на основании входной цены и наценки на категорию, к которой принадлежит товар (таблица categories, поле extra_charge). После добавления новой накладной целесообразно запретить дальнейшее редактирование данных о ней во избежание внесения противоречий в нашу базу данных.
Для каждого заказа в таблице orders фиксируется клиент (из таблицы clients), дата продажи, дата доставки, категория клиента. На основании категории клиента в дальнейшем определяется скидка на покупки. Категория клиента будет вычисляться в триггере всякий раз при оформлении заказа, исходя из суммы покупок данного клиента в магазине. В качестве даты продажи будет автоматически ставиться текущая дата. Поэтому единственные поля, которые пользователю приложения придётся заполнять вручную − это клиент и дата доставки.
Клиенты в рамках одного заказа имеют возможность покупать несколько наименований товаров. Список покупок, относящийся к заказу, хранится в таблице purchases, причём каждая покупка определяется по паре значений − номер заказа (поле id_order) и номер накладной, по которой был получен покупаемый товар на склад магазина (поле id_invoice). Кроме этого, хранится количество единиц товара (поле quantity) и стоимость покупки (поле cost). Стоимость покупки будет вычисляться в триггере на основании розничной цены товара, количества и скидки, предусмотренной категорией клиента. Также в триггере будет проверяться, не превышает ли количество заказанных единиц товара запасы на складе магазина. Соответственно, при оформлении списка покупок пользователю достаточно выбрать накладную и указать количество единиц товара.
Поскольку основная деятельность магазина состоит в оформлении заказов, в главном окне будут размещены основное меню и соответствующие таблицы (orders и purchases − таблицы заказов и списка покупок в рамках заказа соответственно).
Остальные таблицы (за исключением таблицы invoices) назовём справочниками − родительские таблицы, данные из которых используются для заполнения таблиц заказов и списка покупок.
Работа со справочниками будет происходить в отдельных формах, доступ к которым осуществляется из меню.
Меню будет иметь следующую структуру:
