Интерфейс приложения по анализу продаж. — КиберПедия 

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Интерфейс приложения по анализу продаж.

2021-02-05 85
Интерфейс приложения по анализу продаж. 0.00 из 5.00 0 оценок
Заказать работу

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

Цель курсового проекта не только создание базы данных, но и возможность взаимодействовать с ней. Создание интерфейса играет в этой части огромную роль, ведь грамотное создание «проводника» позволит безо всяких проблем выполнить свою работу. При помощи «Microsoft Visual Studio 2019» мы можем не только создать приложение, но и оптимизировать интерфейс.

 

 

Рисунок 22 – Форма подключения к серверу

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

 

Рисунок 23 – Выводимое сообщение о подключении

В случае, если пользователь ввел неверное имя сервера или сервер по каким-то причинам недоступен, выведется сообщение (рис. 23).

 

Рисунок 24 – Выводимое сообщение об управлении программой

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

 

Рисунок 25 – Сообщение об успешном подключении к базе данных

В случае, если пользователем было введено правильное имя сервера, программа сохранит это значение и выведет сообщение об успешном подключении (рис. 25).

Рисунок 26 – Главная форма «Продажи»

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

 

Рисунок 27 – Форма добавления строки к таблице «Продажи»

Нажав на кнопку «Добавить запись», пользователь откроет форму (рис. 27), которая позволит ему выбрать имя клиента и дату продажи, а кнопка «Отмена» закроет форму добавления.

 

Рисунок 28 – Выбор клиента

При нажатии на поле «Имя клиента» откроется справочник со всеми клиентами. При нажатии на любого из них, пользователь занесет его значение в поле.

Рисунок 29 – Сообщение о некорректности данных

В случае, если пользователь оставит поле «Имя клиента» пустым, пользователю покажется сообщение о неправильном заполнении данных (рис. 29).

 

Рисунок 30 – Главная форма с нажатой кнопкой «Справочник»

При нажатии на кнопку «Справочник», пользователю покажется список справочников (рис. 30), которые можно просмотреть и провести действия с записями.

Рисунок 31 – Главная форма с нажатой кнопкой «Отчет»

При нажатии на кнопку «Отчет», пользователю покажется список отчетов (рис. 31), которые можно сформировать по имеющимся данным.

Рисунок 32.1 – Главная форма с показанным списком действий с выделенной строкой

 

Рисунок 32.2 – Главная форма с показанным списком действий с выделенной строкой

 

Рисунок 32.3 – Главная форма с показанным списком действий с выделенной строкой

При нажатии на любую запись правой кнопкой мыши, пользователю показывается список с действиями (рис. 32.1 – 32.3). В случае, если заказ уже полностью оформлен и оплачен, действия с ним будут недоступны (рис. 32.1). В случае, если товары уже добавлены в заказ, но сам заказ еще не оплачен, у пользователя будет возможность изменить строку (рис. 32.2.). В случае, если в заказе не имеется товаров, пользователь будет иметь возможность изменить или удалить строку (рис. 32. 3).

 

Рисунок 33 – Форма изменения информации о заказе

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

Рисунок 34 – Выводимое сообщение при отсутствии товаров в заказе

Если пользователь пытается изменить статус оплаты на «Оплачен», что в заказе нет товаров, то пользователю покажется сообщение об этом (рис. 34).

Рисунок 35 – Справочник «Клиенты»

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

Рисунок 36 – Форма добавления записи к справочнику «Клиенты»

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

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

Рисунок 37 – Сообщение о существующем номере телефона

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

Рисунок 38.1 – Форма «Клиенты» с действиями с выделенной строкой

Рисунок 38.2 – Форма «Клиенты» с действиями с выделенной строкой

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

Рисунок 39 – Изменение информации о клиенте

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

Рисунок 40 – Форма «Товары и группы товаров»

Если пользователь выберет пункт «Товары» в кнопке «Справочник», откроется форма «Товары и группы товаров», где расположена таблицы с информацией о каждом товаре, о каждой группе товаров, а также кнопки «Добавить запись» и «Выход» (рис. 40).

 

Рисунок 41 – Форма «Товары и группы товаров» с нажатой кнопкой «Добавить запись»

При нажатии кнопки «Добавить запись», пользователь может сделать выбор, к какому справочнику от хочет добавить запись (рис. 41).

Рисунок 42 – Форма добавления товара

Если пользователь нажал кнопку «Добавить товар», открывается форма добавления товара (рис. 42). На ней располагаются кнопки «Добавить запись» и «Отмена», а также элементы ввода значений.

Рисунок 43 – Форма выбора группы товаров

При нажатии на поле «Группа товаров», открывается справочник с группами товаров (рис. 43), где пользователь может выбрать значение по клику мыши.

В случае, если пользователь неправильно введет данные, сообщение выведет ошибку (рис. 29).

 

Рисунок 44 – Ошибка существующего товара

В случае, если пользователь введет товар, который уже существует в справочнике, ему выведется сообщение об этом (рис. 44).

Рисунок 45 – Добавление группы товаров

При выборе пункта «Добавить группу товаров», выведется окно добавления группы товаров (рис. 45).

В случае, если пользователь введет неправильные данные, ему покажется сообщение об этом (рис. 29).

Рисунок 46 – Ошибка существующей группы товаров

В случае, если пользователь введет название уже существующей группы товаров, программа выведет сообщение об этом (рис. 46).

Рисунок 47.1 – Открытое контекстное меню справочника «Товары»

Рисунок 47.2 – Открытое контекстное меню справочника «Товары»

Рисунок 47.3 – Открытое контекстное меню справочника «Группа товаров»

Рисунок 47.4 – Открытое контекстное меню справочника «Группа товаров»

По аналогии со справочниками «Продажи» и «Клиенты», пользователь может кликать правой кнопкой мыши на записи и получать список действий со строкой (рис. 47.1 – 47.4).

Рисунок 48 – Изменение товара

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

Рисунок 49 – Изменение группы товаров

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

Рисунок 49 – Форма справочника «Заказы»

 

Если пользователь выберет пункт «Заказы» в кнопке «Справочник», откроется форма «Заказы», где расположена таблица с информацией о каждом заказе, а также кнопки «Добавить запись» и «Выход» (рис. 40).

Рисунок 50 – Добавление заказа

При нажатии кнопки «Добавить запись» выводится форма добавления заказа, где находятся элементы для ввода данных, а также кнопки «Добавить запись» и «Отмена» (рис. 50).

Рисунок 51 – Выбор товара

При нажатии на поле «Товар», открывается справочник «Товары» (рис. 51). Клик на любой товар добавляет это значение в поле «Товар».

В случае, если пользователь не указал какое-либо значение, программа выведет сообщение об этом (рис. 29).

Рисунок 52 – Ошибка оплаченного заказа

В случае, если пользователь пытается добавить товар в уже оплаченный заказ, программа не добавит товар к заказу и сообщит об этом (рис. 52).

Рисунок 53.1 – Контекстное меню выделенной строки справочника «Заказы»

Рисунок 53.2 – Контекстное меню выделенной строки справочника «Заказы»

По аналогии со всеми остальными справочниками, пользователь имеет возможность менять и удалять записи, если это возможно (рис. 53.1 – 53.2).

Рисунок 54 – Изменение заказа

Если пользователь нажмет на кнопку «Изменить строку», откроется форма «Изменение заказа», где расположены элементы для ввода данных и кнопки «Изменить запись» и «Отмена» (рис. 54).

В случае, если пользователь совершит какую-либо ошибку в изменении, программа об этом сообщит (рис. 29, рис. 52).

При нажатии на поле «Товар» пользователю выводится справочник «Товары», где он может перенести нужный товар в поле путем клика по нужному значению (рис. 51).

Рисунок 52 – Форма отчета по товарам и клиентам, тип отчета «Товар»

Если на главной форме во вкладке «Отчет» пользователь выберет пункт «Отчет в разрезе товара/клиента», ему выведется форма для создания этого отчета (рис. 52). На форме присутствуют элементы для ввода данных, а также кнопки «Сформировать отчет», «Сохранить отчет» и «Выход».

Рисунок 53 – Форма отчета по товарам и клиентам, тип отчета «Клиент»

Пользователь может выбрать тип отчета, отчетный элемент (клиент или товар), период записей, а также статус оплаты (рис. 52, рис. 53).

Рисунок 54 – Сформированный отчет по товару

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

Рисунок 55 – Сформированный отчет по клиенту

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

Рисунок 56 – Сообщение об отсутствии записей

В случае, если по заданным параметрам не были найдены записи, программа сообщит об этом (рис. 56).

Рисунок 57.1 – Сообщение об отсутствии клиента

Рисунок 57.2 – Сообщение об отсутствии товара

В случае, если не был выбран клиент или товар, программа выведет сообщение об этом (рис 57.1 – 57.2).

Рисунок 58 – Сохранение отчета

Если отчет был сформирован, то пользователь может сохранить его в одном из предложенных форматов (рис. 58).

Рисунок 59 – Сообщение об отсутствии отчета

Если пользователь захочет сохранить пустую таблицу, он увидит сообщение об этом (рис. 59).

Рисунок 60.1 – Сохранение отчета в формате *.xlsx

Рисунок 60.2 – Сохранение отчета в формате *.csv

При выборе любого пункта сохранения (рис. 58), открывается окно выбора директории для сохранения (рис. 60.1 – 60.2). При нажатии кнопки «Сохранить» отчет сохраняется в выбранную директорию, при нажатии кнопки «Отмена» диалоговое окно закрывается.

Рисунок 61 – Форма отчета продаж по группам товаров

Если на главной форме во вкладке «Отчет» пользователь выберет пункт «Отчет продаж по группам товаров», ему выведется форма для создания этого отчета (рис. 61). На форме присутствуют элементы для ввода данных, а также кнопки «Сформировать отчет», «Сохранить отчет» и «Выход».

Рисунок 62 – Форма отчета продаж по группам товаров, типы выбора группы товара

Рисунок 63 – Форма отчета продаж по группам товаров, тип выбора «Все»

При желании пользователь может вывести отчет сразу по всем группам товара или только по одной (рис. 62). В случае, если пользователь выбирает пункт «Все», поле выбора группы товара исчезает (рис. 63).

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

Рисунок 64 – Ошибка названия группы товаров

Если был выбран тип выбора «По одной группе» и не выбрана группа товаров, выходит сообщение об этом (рис. 64).

Рисунок 65 – Сформированный отчет

Если записи существуют, то они добавляются в таблицу (рис. 65). Сохранение отчетов происходит как на форме с отчетами по товарам и клиентам (рис. 60.1 – 60.2). В случае, если отчет не был сформирован, выходит сообщение об этом (рис. 59).

Рисунок 66 – Форма отчета по наиболее популярным товарам

Если на главной форме во вкладке «Отчет» пользователь выберет пункт «Отчет по наиболее популярным товарам», ему выведется форма для создания этого отчета (рис. 66). На форме присутствуют элементы для ввода данных, а также кнопки «Сформировать отчет», «Сохранить отчет» и «Выход».

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

В случае, если записи не найдены, выведется сообщение об этом (рис. 56).

Рисунок 67 – Сообщение о количестве найденных записей

В случае, если количество запрошенных записей превышает количество найденных, программа выведет сообщение об этом (рис. 67).

 

Рисунок 68 – Сформированный отчет

Если же записи были найдены, они выводятся в таблицу (рис. 68).

Сохранение отчета происходит аналогично с другими отчетами (рис. 58, рис. 60.1 – 60.2).

Рисунок 69 – Форма отчета по наиболее часто заказывающим клиентам

 

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

Рисунок 70 – Сформированный отчет

Пользователь может выбирать количество выводимых записей, период и статус заказа, как в отчете по наиболее популярным товарам. В случае, если записи были найдены, отчет выводится в таблицу (рис. 70). Сохранение, кнопки и сообщения программы организованы как у отчета по наиболее популярным товарам (рис. 58, 60.1 – 60.2, 67, 68).

Рисунок 71 – Форма отчета по заказам за последние 30 дней

Если на главной форме во вкладке «Отчет» пользователь выберет пункт «Отчет по заказам за последние 30 дней», ему выведется форма для создания этого отчета (рис. 71). На форме присутствует элемент для выбора статуса оплаты, а также кнопки «Сформировать отчет», «Сохранить отчет» и «Выход».

Рисунок 72 – Сформированный отчет

Отчет выводит последний заказ каждого клиента за последние 30 дней (рис. 72).

Все кнопки, сохранение и сообщения программы организованы как у остальных отчетов (рис. 58, 60.1 – 60.2, 67, 68).

Примеры исключительных ситуаций

Во время работы с приложением, пользователь может столкнуться с несколькими ситуациями:

1. Оставление пустых строк при добавлении и обновлении или неправильное заполнение имен клиентов и наименований товаров;

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

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

4. Попытка смены статуса оплаты на «Оплачен», когда заказ пустой.

5. Попытка добавления товара в заказ, когда он уже имеет статус «Оплачен».

6. Ошибка при записи в файл.

7. Ошибка при подключении к базе данных.

Решение ситуаций:

1. Выводится сообщение о некорректном вводе (рис. 73).

Рисунок 73 – Некорректный ввод

2. Выводятся сообщения о добавлении уже имеющихся записей (рис. 74 – 75).

Рисунок 74 – Существующий товар

Рисунок 75 – Существующая группа товаров

3. Выводится сообщение о добавлении клиента с уже существующим в базе данных номером телефона (рис. 76).

Рисунок 76 – Существующий номер телефона

4. Выводится сообщение об отсутствии товаров в заказе (рис. 77).

Рисунок 77 – Отсутствие товаров в заказе

5. Выводится сообщение о том, что заказ уже оплачен (рис. 78).

Рисунок 78 – Сообщение о том, что заказ уже оплачен

6. Выводится сообщение о том, что файл занят системой (рис. 79).

Рисунок 79 – Файл занят системой

7. Выводится сообщение о том, что соединение с базой данных не было установлено (рис. 80).

Рисунок 80 – База данных не была подключена


Заключение

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

Были выполнены следующие задачи:

1. Изучена теоретическая составляющая анализа продаж;

2. Составлена логическая и физическая схема базы данных;

3. Составлены все необходимые блок-схемы;

4. Разработан интерфейс приложения.

 


Библиографический список

1. Что Такое Продажи (Способы, Технологии, Каналы) [Электронный ресурс]. – Режим доступа: https://worldsellers.ru/chto-takoe-prodazhi/ – Заглавие с экрана. – (Дата обращения: 25.12.2020).

2. Продажа [Электронный ресурс]. – Режим доступа: https://www.marketch.ru/marketing_dictionary/marketing_terms_p/sale/ – Заглавие с экрана. – (Дата обращения: 25.12.2020).

3. Microsoft – официальная страница [Электронный ресурс]. – Режим доступа: https://www.microsoft.com/ru-ru/ – Заглавие с экрана. – (Дата обращения: 25.12.2020).


 

Приложение А Программный код

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.Data.Sql;

using System.Data.SqlClient;

 

namespace Kypca4

{

public partial class loginForm: Form

{

   public loginForm()

   {

       InitializeComponent();

   }

   private void btConnect_Click(object sender, EventArgs e)

   {

 

       SqlConnection dbConnection = new SqlConnection(@"Data Source=" + tbServerName.Text + "; Initial Catalog=Sales; Integrated Security=Yes");

       try

       {

           dbConnection.Open();

           if (dbConnection.State == ConnectionState.Open)

           {

               Creation.mainServerName = tbServerName.Text;

               dbConnection.Close();

               MessageBox.Show("Подключение к базе произошло успешно!", "Успех!");

               this.Close();

               tableSales Main = new tableSales();

               Main.Show();

 

           }

 

       }

       catch (Exception)

       {

           MessageBox.Show("База данных не была подключена.","Ошибка");

       }

   }

   private void btExit_Click(object sender, EventArgs e)

   {

       Application.Exit();

   }

 

   private void btInfo_Click(object sender, EventArgs e)

   {

       MessageBox.Show("Работа с ячейками и записями в этой программе происходит по нажатию кнопок мыши. Левая кнопка мыши открывает подробные данные об ячейке, если такие данные имеются. Правая кнопка мыши показывает список с выбором действия со строкой. Если какое-либо действие недоступно, это значит, что ссылка на эту ячейку используется в другом месте.", "Внимание!");

   }

}

}

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.Data.Sql;

using System.Data.SqlClient;

 

namespace Kypca4

{

public partial class tableSales: Form

{

   public tableSales()

   {

       InitializeComponent();

   }

 

   SqlConnection dbConnection = new SqlConnection(@"Data Source=" + Creation.mainServerName + "; Initial Catalog=Sales; Integrated Security=Yes");

   DataTable dtSales = new DataTable(), dtAdditional = new DataTable();

   SqlDataAdapter dtSalesAdapter;

 

   public void UpdateTable()

   {

       dtSales = new DataTable();

       SqlCommand dtSalesUpload = new SqlCommand("select Sales.Id, Clients.Name, Sales.Approved, Sales.Date, NULL, Clients.Id from Sales inner join Clients on Clients.Id = Sales.C_Id", dbConnection);

       dtSalesAdapter = new SqlDataAdapter(dtSalesUpload);

       dbConnection.Open();

       dtSalesAdapter.Fill(dtSales);

       dbConnection.Close();

       tSales.DataSource = dtSales.DefaultView;

       tSales.Columns[0].HeaderText = "Номер заказа";

       tSales.Columns[1].HeaderText = "Имя клиента";

       tSales.Columns[2].HeaderText = "Статус оплаты";

       tSales.Columns[3].HeaderText = "Дата";

       tSales.Columns[4].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;

       tSales.Columns[4].MinimumWidth = 2;

       tSales.Columns[5].Visible = false;

       tSales.CurrentCell = tSales[4, 0];

       tSales.Width = 15;

       for (int i = 0; i < tSales.ColumnCount - 2; i++)

       {

           tSales.Width += tSales.Columns[i].Width;

       }

       this.Size = new Size(tSales.Width + 40, tSales.Height + 90);

       tSales.ClearSelection();

   }

 

   private void tableSales_Activated(object sender, EventArgs e)

   {

       UpdateTable();

   }

 

   private void tableSales_Load(object sender, EventArgs e)

   {

       UpdateTable();

   }

 

   private void ClientsTSMItem_Click(object sender, EventArgs e)

   {

       tableClients tCli = new tableClients();

       Creation.AdditionalTableClients = false;

       tCli.ShowDialog();

   }

 

   private void ProductsTSMItem_Click(object sender, EventArgs e)

   {

       tableProducts tPro = new tableProducts();

       tPro.ShowDialog();

   }

 

   private void ExitTSMItem_Click(object sender, EventArgs e)

   {

       Application.Exit();

   }

 

   private void tSales_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)

   {

       if (e.ColumnIndex < tSales.ColumnCount & e.RowIndex!= -1 & e.ColumnIndex!= -1 & e.RowIndex < tSales.RowCount & e.Button == MouseButtons.Right)

       {

           tSales.CurrentCell = tSales.Rows[e.RowIndex].Cells[e.ColumnIndex];

       }

       if (e.ColumnIndex < tSales.ColumnCount & e.RowIndex!= -1 & e.ColumnIndex!= -1 & e.RowIndex < tSales.RowCount & e.Button == MouseButtons.Left)

       {

           tSales.CurrentCell = tSales.Rows[e.RowIndex].Cells[e.ColumnIndex];

       }

   }

 

   private void tSalesCMS_Opening(object sender, CancelEventArgs e)

   {

       tSales.CurrentRow.Selected = true;

       int Verification = 0;

       string SQLorder = "select count (*) from Orders inner join Sales on Sales.Id = Orders.S_Id where Sales.Id = " + tSales[0, tSales.CurrentRow.Index].Value.ToString();

       SqlCommand check = new SqlCommand(SQLorder, dbConnection);

       dbConnection.Open();

       SqlDataReader SQLreader = check.ExecuteReader();

       if (SQLreader.HasRows)

       {

           SQLreader.Read();

           Verification = SQLreader.GetInt32(0);

       }

       dbConnection.Close();

       SQLreader.Close();

       if (Verification!= 0)

       {

           tSalesCMSDelete.Enabled = false;

           if (tSales[2, tSales.CurrentRow.Index].Value.ToString() == "False")

           {

               tSalesCMSChange.Enabled = true;

           }

           else

           {

               tSalesCMSChange.Enabled = false;

           }

       }

       else

       {

           tSalesCMSChange.Enabled = true;

           tSalesCMSDelete.Enabled = true;

       }

   }

 

   private void tSalesMSAdd_Click(object sender, EventArgs e)

   {

       RowAction fAddRow = new RowAction();

       Creation.FormNumber = 1;

       Creation.SalesAddEdit = true;

       fAddRow.ShowDialog();

   }

 

   private void OrdersTSMItem_Click(object sender, EventArgs e)

   {

       tableOrders tOrd = new tableOrders();

       Creation.AdditionalTableOrders = false;

       tOrd.ShowDialog();

   }

 

   private void tSales_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)

   {

          tSales.CurrentCell = tSales[4, 0];

       tSales.ClearSelection();

   }

 

   private void tSalesCMSDelete_Click(object sender, EventArgs e)

   {

       SqlCommand tDelete = new SqlCommand("delete from Sales where Id = " + tSales[0, tSales.CurrentRow.Index].Value.ToString(), dbConnection);

       dbConnection.Open();

       tDelete.ExecuteNonQuery();

       dbConnection.Close();

       UpdateTable();

   }

 

   private void tSalesCMSChange_Click(object sender, EventArgs e)

   {

       RowAction fEditRow = new RowAction();

       Creation.FormNumber = 1;

       Creation.Temp1 = tSales[0, tSales.CurrentRow.Index].Value.ToString();

       Creation.Temp2 = tSales[1, tSales.CurrentRow.Index].Value.ToString();

       Creation.STClientsId = tSales[5, tSales.CurrentRow.Index].Value.ToString();

       Creation.Temp3 = tSales[3, tSales.CurrentRow.Index].Value.ToString();

        Creation.SalesAddEdit = false;

       fEditRow.ShowDialog();

   }

 

   private void ProductClientReport_Click(object sender, EventArgs e)

   {

       ProductClientReport ReportForm = new ProductClientReport();

       ReportForm.ShowDialog();

   }       

 

   private void PGReport_Click(object sender, EventArgs e)

   {

       ProductGroupReport ReportForm = new ProductGroupReport();

       ReportForm.ShowDialog();

   }

 

   private void MostPopularReport_Click(object sender, EventArgs e)

   {

       MostPopularReport ReportForm = new MostPopularReport();

       ReportForm.ShowDialog();

   }

 

   private void MostBuyingReport_Click(object sender, EventArgs e)

   {

       MostBuyingReport ReportForm = new MostBuyingReport();

       ReportForm.ShowDialog();

   }

 

   private void LastThirtyDaysReport_Click(object sender, EventArgs e)

   {

       LastThirtyDays ReportForm = new LastThirtyDays();

       ReportForm.ShowDialog();

   }

 

   private void tSales_CellClick(object sender, DataGridViewCellEventArgs e)

   {

       if (tSales.CurrentCell.ColumnIndex == 0)

       {

           tableOrders tOrd = new tableOrders();

           Creation.AdditionalTableOrders = true;

           Creation.AInfoOrders = tSales.CurrentCell.Value.ToString();

           tOrd.ShowDialog();

       }

       if (tSales.CurrentCell.ColumnIndex == 1)

       {

           tableClients tCli = new tableClients();

           Creation.AdditionalTableClients = true;

           Creation.AInfoClients = tSales[5, tSales.CurrentRow.Index].Value.ToString();

           tCli.ShowDialog();

       }

   }

}

}

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.Data.SqlClient;

 

namespace Kypca4

{

public partial class tableProducts: Form

{

   public tableProducts()

   {

       InitializeComponent();

   }

   SqlConnection dbConnection = new SqlConnection(@"Data Source=" + Creation.mainServerName + "; Initial Catalog=Sales; Integrated Security=Yes");

   DataTable dtProduct = new DataTable();

   SqlDataAdapter dtProductAdapter;

   DataTable dtPG = new DataTable();

   SqlDataAdapter dtPGAdapter;

 

   string SQLorder;

 

   public void UpdateTable()

   {

       dtProduct = new DataTable();

       if (Creation.AdditionalTableProducts)

       {

           SQLorder = "select Products.Id, Products.Name, Products.Price, ProductGroup.Name from ProductGroup inner join Products on ProductGroup.Id = Products.PG_Id where Products.Name = '" + Creation.AInfoProducts + "'";

           tProductGroup.Visible = false;

       }

       else

       {

           SQLorder = "select Products.Id, Products.Name, Products.Price, ProductGroup.Name from ProductGroup inner join Products on ProductGroup.Id = Products.PG_Id";

       }

       SqlCommand dtProductUpload = new SqlCommand(SQLorder, dbConnection);

       dtProductAdapter = new SqlDataAdapter(dtProductUpload);

       dbConnection.Open();

       dtProductAdapter.Fill(dtProduct);

       dbConnection.Close();

       tProducts.DataSource = dtProduct.DefaultView;

       tProducts.Columns[0].Visible = false;

       tProducts.Columns[1].HeaderText = "Имя товара";

       tProducts.Columns[2].HeaderText = "Цена";

       tProducts.Columns[3].HeaderText = "Группа товаров";

       tProducts.Width = 15;

       for (int i = 1; i < tProducts.ColumnCount; i++)

       {

           tProducts.Width += tProducts.Columns[i].Width;

       }

       this.Width = tProducts.Location.X + tProducts.Width + 40;

       this.Height = tProducts.Height + 90;

       if (Creation.AdditionalTableProducts)

       {

           tProductGroup.Visible = false;

       }

       else

       {

           dtPG = new DataTable();

           SqlCommand dtPGUpload = new SqlCommand("select Id, ProductGroup.Name from ProductGroup", dbConnection);

           dtPGAdapter = new SqlDataAdapter(dtPGUpload);

           dbConnection.Open();

           dtPGAdapter.Fill(dtPG);

           dbConnection.Close();

           tProductGroup.DataSource = dtPG.DefaultView;

           tProductGroup.Visible = true;

           tProductGroup.Location = new Point(tProducts.Location.X + tProducts.Width + 4, tProducts.Location.Y);

           tProductGroup.Columns[0].Visible = false;

           tProductGroup.Columns[1].HeaderText = "Группа товаров";

           tProductGroup.Width = 15 + tProductGroup.Columns[1].Width;

           this.Width = tProductGroup.Location.X + tProductGroup.Width + 40;

           this.Height = tProductGroup.Height + 90;

       }

       tProductGroup.ClearSelection();

       tProducts.ClearSelection();

   }

 

   private void tableProducts_Load(object sender, EventArgs e)

   {

       UpdateTable();

       if (Creation.AdditionalTableProducts)

       {

           tProductsMSAdd.Visible = false;

           tProductsCMSDelete.Enabled = false;

           tProductsCMSChange.Enabled = false;

       }

       else

       {

           tProductsMSAdd.Visible = true;

           tProductsCMSDelete.Enabled = true;

           tProductsCMSChange.Enabled = true;

       }

   }

 

   private void tableProducts_Activated(object sender, EventArgs e)

   {

       UpdateTable();

   }

 

   private void выходToolStripMenuItem_Click(object sender, EventArgs e)

   {

       this.Close();

   }

 

   private void tableProducts_FormClosed(object sender, FormClosedEventArgs e)

   {

       if (Creation.AdditionalTableProducts) Creation.AdditionalTableProducts = false;

   }

 

   private void tProductsMSAdd_Click(object sender, EventArgs e)

   {

       RowAction fAddRow = new RowAction();

       Creation.ProductsAddEdit = true;

       Creation.FormNumber = 3;

       fAddRow.ShowDialog();

   }

 

   private void tProductGroup_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)

   {

       if (e.ColumnIndex < tProductGroup.ColumnCount && e.RowIndex > -1 && e.RowIndex < tProductGroup.RowCount && e.Button == MouseButtons.Right)

       {

           tProductGroup.CurrentCell = tProductGroup.Rows[e.RowIndex].Cells[e.ColumnIndex];

       }

   }

 

   private void tPGCMS_Opening(object sender, CancelEventArgs e)

   {           

       int c1 = 1;

       SQLorder = "select count (*) from Products, ProductGroup, Orders, Sales where Orders.S_Id = Sales.Id and Products.PG_Id = ProductGroup.Id and Sales.Approved = 1 and Orders.P_Id = Products.Id and ProductGroup.Name = '" + tProductGroup.CurrentCell.Value.ToString() + "'";

       SqlCommand dtTempUpload = new SqlCommand(SQLorder, dbConnection);

       dbConnection.Open();

       SqlDataReader SQLreader = dtTempUpload.ExecuteReader();

       if (SQLreader.HasRows)

       {

           SQLreader.Read();

           c1 = SQLreader.GetInt32(0);

       }

       SQLreader.Close();

       if (c1 == 0)

       {

           c1 = 1;

           SQLorder = "select count (*) from Products, ProductGroup, Orders, Sales where Orders.S_Id = Sales.Id and Products.PG_Id = ProductGroup.Id and Orders.P_Id = Products.Id and ProductGroup.Name = '" + tProductGroup.CurrentCell.Value.ToString() + "'";

           dtTempUpload = new SqlCommand(SQLorder, dbConnection);

           SQLreader = dtTempUpload.ExecuteReader();

           if (SQLreader.HasRows)

           {

               SQLreader.Read();

               c1 = SQLreader.GetInt32(0);

           }

           SQLreader.Close();

           if (c1 == 0)

           {

               tPGCMSChange.Enabled = true;

               tPGCMSDelete.Enabled = false;

               c1 = 1;

               SQLorder = "select count (*) from Products, ProductGroup where Products.PG_Id = ProductGroup.Id and ProductGroup.Name = '" + tProductGroup.CurrentCell.Value.ToString() + "'";

               dtTempUpload = new SqlCommand(SQLorder, dbConnection);

               SQLreader = dtTempUpload.ExecuteReader();

               if (SQLreader.HasRows)

               {

                   SQLreader.Read();

                   c1 = SQLreader.GetInt32(0);

               }

               if (c1 == 0)

               {

                   tPGCMSDelete.Enabled = true;

               }

           }

           else

           {

               tPGCMSChange.Enabled = false;

               tPGCMSDelete.Enabled = false;

           }

           SQLreader.Close();

       }

       else

       {

           tPGCMSChange.Enabled = false;

           tPGCMSDelete.Enabled = false;

       }

       SQLreader.Close();

       dbConnection.Close();

   }

 

   private void tProducts_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)

   {

       if (e.ColumnIndex < tProducts.ColumnCount && e.RowIndex > -1 && e.RowIndex < tProducts.RowCount && e.Button == MouseButtons.Right)

       {

           tProducts.CurrentCell = tProducts.Rows[e.RowIndex].Cells[e.ColumnIndex];

       }

   }

 

   private void tProductsCMS_Opening(object sender, CancelEventArgs e)

   {

       if (tProducts.CurrentCell.ColumnIndex!= 1) tProducts.CurrentCell = tProducts.Rows[tProducts.CurrentCell.RowIndex].Cells[1];

       tProducts.CurrentRow.Selected = true;

       int c2 = 1;

       SQLorder = "select count (*) from Products, Orders, Sales where Orders.S_Id = Sales.Id and Sales.Approved = 1 and Orders.P_Id = Products.Id and Products.Name = '" + tProducts.CurrentCell.Value.ToString() + "'";

       SqlCommand dtTempUpload = new SqlCommand(SQLorder, dbConnection);

       dbConnection.Op


Поделиться с друзьями:

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

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

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.582 с.