123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298 |
- 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 FAddZakaz : Form
- {
- public FAddZakaz()
- {
- InitializeComponent();
- }
- public string IdZakazchik = "";
- string IdTkan = "", IdFur = "";
-
- private void FAddZakaz_Load(object sender, EventArgs e)
- {
- // TODO: данная строка кода позволяет загрузить данные в таблицу "dbFabrika2024DataSet.Izdelie". При необходимости она может быть перемещена или удалена.
- this.izdelieTableAdapter.Fill(this.dbFabrika2024DataSet.Izdelie);
- GetIzdFromDB();
- GetTkaniFromDB();
- FillLVTkani();
- GetFurnituraFromDB();
- FillLVFurnitura();
- }
- 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 = "";
- }
- }
- public struct Izd
- {
- public string idIZd, NameIzd, CountIzd, LengthIzd, WidthIzd;
- }
- List<Izd> LstIzd = new List<Izd>();
- void GetIzdFromDB()
- {
- SqlConnection con = new SqlConnection(Properties.Settings.Default.dbFabrika2024ConnectionString);
- con.Open();
- SqlCommand Query = new SqlCommand("select * from Izdelie where length > 0 and width > 0", con);
- SqlDataReader Data = Query.ExecuteReader();
- while (Data.Read())
- {
- Izd izd1 = new Izd();
- izd1.idIZd = Data["id_izdelie"].ToString();
- izd1.NameIzd = Data["Name_izd"].ToString();
- izd1.WidthIzd = Data["width"].ToString();
- izd1.LengthIzd = Data["length"].ToString();
- }
- con.Close();
- }
- private void BtnOK_Click(object sender, EventArgs e)
- {
- if (TbxCountIzd.Text == "" && TbxCountFur.Text == "")
- {
- MessageBox.Show("Заполните поля для формирования заказа!", "Внимание");
- return;
- }
- int NewCountFur = int.Parse(TbxCountFurSklad.Text) -
- int.Parse(TbxCountFur.Text) * int.Parse(TbxCountIzd.Text);
- SqlConnection con = new SqlConnection(Properties.Settings.Default.dbFabrika2024ConnectionString);
- 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);
- int IdManager = 2;
- try
- {
- con.Open();
- // SQL-запрос для добавления нового заказа
- string t = String.Format("insert into Orders (id_izdelie, id_zakaz, id_manager, idtkani, id_furnitur, CountFurnit, Countizdel) " +
- "values ({0}, {1}, {2}, {3}, {4}, {5}, {6})",
- id_izdelieLabel1.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);
- }
- }
- 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 = "";
- }
- }
- 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);
- }
- 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
- }
- }
- void GetFurnituraFromDB()
- {
- SqlConnection con = new SqlConnection(Properties.Settings.Default.dbFabrika2024ConnectionString);
- 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.picture;
- }
- LstFurnitura.Add(Fr); // добавить в список новую фурнитуру
- }
- con.Close();
- }
- public struct Tkani
- {
- public string IdTkan, NameTkan, ColorTkan, Width, Length, Description;
- public Image PhotoTkan;
- }
- List<Tkani> LstTkani = new List<Tkani>();
- void GetTkaniFromDB()
- {
- SqlConnection con = new SqlConnection(Properties.Settings.Default.dbFabrika2024ConnectionString);
- con.Open();
- SqlCommand Query = new SqlCommand("select * from Tkani t join Cveta c on t.id_cvet=c.id_cvet where Dlina > 0", con);
- SqlDataReader Data = Query.ExecuteReader();
- while (Data.Read())
- {
- Tkani Tk = new Tkani();
- Tk.IdTkan = Data["id_Tkani"].ToString();
- Tk.NameTkan = Data["Nazvanie"].ToString();
- Tk.ColorTkan = Data["Name_cvet"].ToString();
- Tk.Width = Data["Shirina"].ToString();
- Tk.Length = Data["Dlina"].ToString();
- Tk.Description = Data["Primechanie"].ToString();
- try
- {
- // загрузить из таблицы БД байты фотографии в массив
- byte[] PhotoByte = (byte[])Data["Photo"];
- ImageConverter ImConverter = new ImageConverter();
- // сконвертировать массив байт в изображение
- Tk.PhotoTkan = (Bitmap)ImConverter.ConvertFrom(PhotoByte);
- }
- catch
- {
- // в случае ошибки загрузить пустое изображение из ресурсов
- Tk.PhotoTkan = Properties.Resources.picture;
- }
- LstTkani.Add(Tk); // добавить в список новую ткань
- }
- con.Close();
- }
- 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>();
- }
- }
|