| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.ComponentModel;
 
- using System.Data;
 
- using System.Data.SqlClient;
 
- using System.Drawing;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- using System.Windows.Forms;
 
- namespace СУБД_Швейная_фабрика
 
- {
 
-     public partial class FormAddZakaz : Form
 
-     {
 
-         public FormAddZakaz()
 
-         {
 
-             InitializeComponent();
 
-         }
 
-         public string IdZakazchik = "";  // код авторизовавшегося заказчика
 
-         string IdTkan = "", IdFur = "";  // код выбранной ткани и фурнитуры
 
-         public struct Tkani
 
-         {
 
-             public string IdTkan, NameTkan, ColorTkan, Width, Length, Description;
 
-             public Image PhotoTkan;
 
-         }
 
-         List<Tkani> LstTkani = new List<Tkani>();
 
-         /// <summary>
 
-         /// получить из базы данных сведения о тканях
 
-         /// </summary>
 
-         void GetTkaniFromDB()
 
-         {
 
-             SqlConnection con = new SqlConnection(Properties.Settings.Default.fab2021ConnectionString);
 
-             con.Open();
 
-             SqlCommand Query = new SqlCommand("select * from Tkani where length > 0", con);
 
-             SqlDataReader Data = Query.ExecuteReader();
 
-             while (Data.Read())
 
-             {
 
-                 Tkani Tk = new Tkani();
 
-                 Tk.IdTkan = Data["idtkan"].ToString();
 
-                 Tk.NameTkan = Data["nametkan"].ToString();
 
-                 Tk.ColorTkan = Data["color"].ToString();
 
-                 Tk.Width = Data["width"].ToString();
 
-                 Tk.Length = Data["length"].ToString();
 
-                 Tk.Description = Data["description"].ToString();
 
-                 try
 
-                 {
 
-                     // загрузить из таблицы БД байты фотографии в массив
 
-                     byte[] PhotoByte = (byte[])Data["phototkan"];
 
-                     ImageConverter ImConverter = new ImageConverter();
 
-                     // сконвертировать массив байт в изображение
 
-                     Tk.PhotoTkan = (Bitmap)ImConverter.ConvertFrom(PhotoByte);
 
-                 }
 
-                 catch
 
-                 {
 
-                     // в случае ошибки загрузить пустое изображение из ресурсов
 
-                     Tk.PhotoTkan = Properties.Resources.tmp;
 
-                 }
 
-                 LstTkani.Add(Tk);  // добавить в список новую ткань
 
-             }
 
-             con.Close();
 
-         }
 
-         /// <summary>
 
-         /// заполнение таблицы с фотографиями тканей
 
-         /// </summary>
 
-         void FillLVTkani()
 
-         {
 
-             LVTkani.Items.Clear();
 
-             ImageListTkani.Images.Clear();
 
-             foreach(Tkani Tk in LstTkani)
 
-             {
 
-                 // новый элемент для ListView с названием ткани
 
-                 ListViewItem LV = new ListViewItem(Tk.NameTkan);
 
-                 // в ImageList добавить изображение ткани
 
-                 ImageListTkani.Images.Add(Tk.PhotoTkan);
 
-                 // связать последнее добавленное изображение с новым элементом ListView
 
-                 LV.ImageIndex = ImageListTkani.Images.Count - 1;
 
-                 LVTkani.Items.Add(LV);  // добавить новый элемент к ListView
 
-             }
 
-         }
 
-         public struct Furnitura
 
-         {
 
-             public string IdFur, NameFur, CountFur;
 
-             public Image PhotoFur;
 
-         }
 
-         List<Furnitura> LstFurnitura = new List<Furnitura>();
 
-         /// <summary>
 
-         /// получить данные о фурнитурах из базы данных
 
-         /// </summary>
 
-         void GetFurnituraFromDB()
 
-         {
 
-             SqlConnection con = new SqlConnection(Properties.Settings.Default.fab2021ConnectionString);
 
-             con.Open();
 
-             SqlCommand Query = new SqlCommand("select * from Furnitura where countfur > 0", con);
 
-             SqlDataReader Data = Query.ExecuteReader();
 
-             while (Data.Read())
 
-             {
 
-                 Furnitura Fr = new Furnitura();
 
-                 Fr.IdFur = Data["idfur"].ToString();
 
-                 Fr.NameFur = Data["namefur"].ToString();
 
-                 Fr.CountFur = Data["countfur"].ToString();
 
-                 try
 
-                 {
 
-                     // загрузить из таблицы БД байты фотографии в массив
 
-                     byte[] PhotoByte = (byte[])Data["photo"];
 
-                     ImageConverter ImConverter = new ImageConverter();
 
-                     // сконвертировать массив байт в изображение
 
-                     Fr.PhotoFur = (Bitmap)ImConverter.ConvertFrom(PhotoByte);
 
-                 }
 
-                 catch
 
-                 {
 
-                     // в случае ошибки загрузить пустое изображение из ресурсов
 
-                     Fr.PhotoFur = Properties.Resources.tmp;
 
-                 }
 
-                 LstFurnitura.Add(Fr);  // добавить в список новую фурнитуру
 
-             }
 
-             con.Close();
 
-         }
 
-         /// <summary>
 
-         /// заполнить таблицу с фотографиями фурнитур
 
-         /// </summary>
 
-         void FillLVFurnitura()
 
-         {
 
-             LVFurnitura.Items.Clear();
 
-             ImageListFur.Images.Clear();
 
-             foreach (Furnitura Fr in LstFurnitura)
 
-             {
 
-                 // новый элемент для ListView с названием фурнитуры
 
-                 ListViewItem LV = new ListViewItem(Fr.NameFur);
 
-                 // в ImageList добавить изображение фурнитуры
 
-                 ImageListFur.Images.Add(Fr.PhotoFur);
 
-                 // связать последнее добавленное изображение с новым элементом ListView
 
-                 LV.ImageIndex = ImageListFur.Images.Count - 1;
 
-                 LVFurnitura.Items.Add(LV);  // добавить новый элемент к ListView
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// Определение длины ткани, которую нужно отрезать от рулона
 
-         /// для изготовления нужного кол-ва изделий заданного размера
 
-         /// </summary>
 
-         /// <param name="WidthTkan">ширина рулона ткани</param>
 
-         /// <param name="WidthIzd">ширина изделия</param>
 
-         /// <param name="LengthIzd">длина изделия</param>
 
-         /// <param name="CountIzd">кол-во изделий</param>
 
-         /// <returns>длина ткани, которую нужно отрезать от рулона</returns>
 
-         int CutTkan(int WidthTkan, int WidthIzd, int LengthIzd, int CountIzd)
 
-         {
 
-             // ЕСЛИ УКЛАДЫВАТЬ ИЗДЕЛИЯ НА ТКАНЬ В РУЛОНЕ ПО ШИРИНЕ ИЗДЕЛИЯ
 
-             // кол-во изделий, умещающихся в один ряд на рулоне ткани
 
-             int IzdInRow1 = WidthTkan / WidthIzd;
 
-             // кол-во рядов, в каждом из которых IzdInRow1 изделий
 
-             int Row1 = CountIzd / IzdInRow1;
 
-             // если кол-во изделий в 1 ряду умноженное на кол-во рядов меньше
 
-             // кол-ва всех изделий, добавить кол-во рядов
 
-             if (IzdInRow1 * Row1 < CountIzd)
 
-                 Row1++;
 
-             // длина ткани, которую нужно отрезать от рулона, если укладывать изделия
 
-             // по ширине
 
-             int CutTkan1 = LengthIzd * Row1;
 
-             // ЕСЛИ УКЛАДЫВАТЬ ИЗДЕЛИЯ НА ТКАНЬ В РУЛОНЕ ПО ДЛИНЕ ИЗДЕЛИЯ
 
-             // кол-во изделий, умещающихся в один ряд на рулоне ткани
 
-             int IzdInRow2 = WidthTkan / LengthIzd;
 
-             // кол-во рядов, в каждом из которых IzdInRow2 изделий
 
-             int Row2 = CountIzd / IzdInRow2;
 
-             // если перемножить кол-во изделий в 1 ряду на кол-во рядов и полученное
 
-             // значение меньше кол-ва необходимых изделий, значит нужно использовать
 
-             // еще один ряд
 
-             if (IzdInRow2 * Row2 < CountIzd)
 
-                 Row2++;
 
-             // длина ткани, которую нужно отрезать от рулона, если укладывать изделия
 
-             // по длине
 
-             int CutTkan2 = WidthIzd * Row2;
 
-             // вернуть наименьшую длину
 
-             return Math.Min(CutTkan1, CutTkan2);
 
-         }
 
-         private void FormAddZakaz_Load(object sender, EventArgs e)
 
-         {
 
-             // TODO: This line of code loads data into the 'fab2021DataSet1.Tkani' table. You can move, or remove it, as needed.
 
-             this.tkaniTableAdapter.Fill(this.fab2021DataSet1.Tkani);
 
-             // TODO: This line of code loads data into the 'fab2021DataSet1.Izdeliya' table. You can move, or remove it, as needed.
 
-             this.izdeliyaTableAdapter.Fill(this.fab2021DataSet1.Izdeliya);
 
-             GetTkaniFromDB();
 
-             FillLVTkani();
 
-             GetFurnituraFromDB();
 
-             FillLVFurnitura();
 
-         }
 
-         private void LVTkani_SelectedIndexChanged(object sender, EventArgs e)
 
-         {
 
-             if (LVTkani.SelectedItems.Count > 0)  // есть выделенные элементы
 
-             {
 
-                 int num = LVTkani.SelectedIndices[0];  // номер выделенного элемента
 
-                 NametkanTextBox.Text = LstTkani[num].NameTkan;
 
-                 ColorTextBox.Text = LstTkani[num].ColorTkan;
 
-                 WidthTextBox.Text = LstTkani[num].Width;
 
-                 LengthTextBox.Text = LstTkani[num].Length;
 
-                 DescriptionTextBox.Text = LstTkani[num].Description;
 
-                 IdTkan = LstTkani[num].IdTkan;
 
-             }
 
-             else  // нет выделенных элементов
 
-             {
 
-                 NametkanTextBox.Text = "";
 
-                 ColorTextBox.Text = "";
 
-                 WidthTextBox.Text = "";
 
-                 LengthTextBox.Text = "";
 
-                 DescriptionTextBox.Text = "";
 
-                 IdTkan = "";
 
-             }
 
-         }
 
-         private void LVFurnitura_SelectedIndexChanged(object sender, EventArgs e)
 
-         {
 
-             if (LVFurnitura.SelectedItems.Count > 0)  // есть выделенные элементы
 
-             {
 
-                 int num = LVFurnitura.SelectedIndices[0];  // номер выделенного элемента
 
-                 TbxNameFur.Text = LstFurnitura[num].NameFur;
 
-                 TbxCountFurSklad.Text = LstFurnitura[num].CountFur;
 
-                 IdFur = LstFurnitura[num].IdFur;
 
-             }
 
-             else  // нет выделенных элементов
 
-             {
 
-                 TbxNameFur.Text = "";
 
-                 TbxCountFurSklad.Text = "";
 
-                 IdFur = "";
 
-             }
 
-         }
 
-         private void BtnOK_Click(object sender, EventArgs e)
 
-         {
 
-             //int a = CutTkan(430, 150, 200, 4);
 
-             //this.Text = a.ToString();
 
-             //return;
 
-             // кол-во фурнитур, которое нужно сохранить в БД
 
-             int NewCountFur = int.Parse(TbxCountFurSklad.Text) -
 
-                 int.Parse(TbxCountFur.Text) * int.Parse(TbxCountIzd.Text);
 
-             SqlConnection con = new SqlConnection(Properties.Settings.Default.fab2021ConnectionString);
 
-             con.Open();
 
-             string t1 = string.Format(@"update Furnitura
 
- set countfur = {0}
 
- where idfur = {1}", NewCountFur, IdFur);
 
-             SqlCommand query = new SqlCommand(t1, con);
 
-             // выполнить запрос
 
-             query.ExecuteNonQuery();
 
-             con.Close();
 
-             int WidthTkan = int.Parse(WidthTextBox.Text); // ширина ткани
 
-             // ширина изделия
 
-             int WidthIzd = int.Parse(DgvIzd.CurrentRow.Cells[2].Value.ToString());
 
-             // длина изделия
 
-             int LengthIzd = int.Parse(DgvIzd.CurrentRow.Cells[1].Value.ToString());
 
-             int CountIzd = int.Parse(TbxCountIzd.Text); // кол-во изделий
 
-             // отрезать от рулона ткани кусок нужной длины
 
-             int NewLengthTkan = int.Parse(LengthTextBox.Text) -
 
-                 CutTkan(WidthTkan, WidthIzd, LengthIzd, CountIzd);
 
-             // обновить таблицу Ткани (для выделенной ткани сохранить новую длину NewLengthTkan)
 
-             // код менеджера для обработки нового заказа
 
-             // нужно заменить на код наименее загруженного менеджера
 
-             int IdManager = 2;
 
-             try
 
-             {
 
-                 con.Open();
 
-                 // SQL-запрос для добавления нового заказа
 
-                 string t = String.Format("insert into Zakaz (idizd, idzakazchik, idman, idtkan, idfur, countfur, countizd) " +
 
-                     "values ({0}, {1}, {2}, {3}, {4}, {5}, {6})",
 
-                     LblIdIzd.Text, IdZakazchik, IdManager, IdTkan, IdFur, TbxCountFur.Text, TbxCountIzd.Text);
 
-                 SqlCommand query1 = new SqlCommand(t, con);
 
-                 // выполнить запрос
 
-                 query1.ExecuteNonQuery();
 
-                 con.Close();
 
-                 MessageBox.Show("Заказ сформирован.", "Внимание!",
 
-                     MessageBoxButtons.OK, MessageBoxIcon.Information);
 
-                 this.Close();  // закрыть форму
 
-             }
 
-             catch
 
-             {
 
-                 MessageBox.Show("Ошибка добавления нового заказа.", "Внимание!",
 
-                     MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |