using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Word = Microsoft.Office.Interop.Word; namespace СУБД_Швейная_фабрика { public partial class FormManager : Form { public FormManager() { InitializeComponent(); } /// /// Заполнение DataGridView с заказами текущего заказчика /// void FillListZakaz() { SqlConnection con = new SqlConnection(Properties.Settings.Default.fab2021ConnectionString); con.Open(); string TxtQuery = @"select Izdeliya.nameizd as izd, Zakaz.countizd as countizd, Tkani.nametkan as tkan, Furnitura.namefur as fur, Zakaz.countfur as countfur, Users.fam as zakazchik from Zakaz, Users, Tkani, Furnitura, Izdeliya where Users.iduser = Zakaz.idzakazchik and Tkani.idtkan = Zakaz.idtkan and Furnitura.idfur = Zakaz.idfur and Izdeliya.idizd = Zakaz.idizd and Zakaz.idman = " + LblIdManager.Text; SqlCommand query1 = new SqlCommand(TxtQuery, con); // выполнить запрос SqlDataReader SqlRez = query1.ExecuteReader(); DgvZakaz.Rows.Clear(); // очистить от старых строк // перебирать результаты запроса while (SqlRez.Read()) { DgvZakaz.Rows.Add(SqlRez["izd"], SqlRez["countizd"], SqlRez["tkan"], SqlRez["fur"], SqlRez["countfur"], SqlRez["zakazchik"]); } con.Close(); } public struct Tkani { public string IdTkan, NameTkan, ColorTkan, Width, Length, Description; public Image PhotoTkan; } List LstTkani = new List(); /// /// получить из базы данных сведения о тканях /// 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(); } /// /// заполнение таблицы с фотографиями тканей /// 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 LstFurnitura = new List(); /// /// получить данные о фурнитурах из базы данных /// 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(); } /// /// заполнить таблицу с фотографиями фурнитур /// 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 } } private void FormManager_Load(object sender, EventArgs e) { // 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); // TODO: This line of code loads data into the 'fab2021DataSet1.Users' table. You can move, or remove it, as needed. this.usersTableAdapter.Fill(this.fab2021DataSet1.Users); FillListZakaz(); GetTkaniFromDB(); FillLVTkani(); GetFurnituraFromDB(); FillLVFurnitura(); } private void BtnProfile_Click(object sender, EventArgs e) { FormProfile frm = new FormProfile(); // на форму для редактирования профиля передать // фильтр для выборки авторизовавшегося пользователя frm.BsUsers.Filter = this.BsUsers.Filter; if (frm.ShowDialog() == DialogResult.OK) { this.usersTableAdapter.Fill(this.fab2021DataSet1.Users); } } private void BtnAdd_Click(object sender, EventArgs e) { BsIzdeliya.AddNew(); BtnSave.Enabled = true; BtnAdd.Enabled = false; BtnEdit.Enabled = false; DgvIzd.Enabled = false; TbxNameIzd.Enabled = true; TbxLengthIzd.Enabled = true; TbxWidthIzd.Enabled = true; } private void BtnEdit_Click(object sender, EventArgs e) { BtnSave.Enabled = true; BtnAdd.Enabled = false; BtnEdit.Enabled = false; DgvIzd.Enabled = false; TbxNameIzd.Enabled = true; TbxLengthIzd.Enabled = true; TbxWidthIzd.Enabled = true; } private void BtnSave_Click(object sender, EventArgs e) { BsIzdeliya.EndEdit(); this.izdeliyaTableAdapter.Update(this.fab2021DataSet1.Izdeliya); BtnSave.Enabled = false; BtnAdd.Enabled = true; BtnEdit.Enabled = true; DgvIzd.Enabled = true; TbxNameIzd.Enabled = false; TbxLengthIzd.Enabled = false; TbxWidthIzd.Enabled = false; } 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; } else // нет выделенных элементов { NametkanTextBox.Text = ""; ColorTextBox.Text = ""; WidthTextBox.Text = ""; LengthTextBox.Text = ""; DescriptionTextBox.Text = ""; } } 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; } else // нет выделенных элементов { TbxNameFur.Text = ""; TbxCountFurSklad.Text = ""; } } private void BtnAll_Click(object sender, EventArgs e) { if (RbtWord.Checked) { Word.Application app = new Word.Application(); app.Visible = true; Word.Document doc = app.Documents.Open(Application.StartupPath + "\\Заказы.docx", null, true); Word.Bookmarks WBmark = doc.Bookmarks; // закладки из документа WBmark["man"].Range.Text = FamLabel.Text + " " + NameLabel.Text + " " + OtchLabel.Text; string num = "", izd = "", countizd = "", tkan = "", fur = "", countfur = "", zakazchik = ""; for (int i = 0; i <= DgvZakaz.RowCount - 1; i++) // перебор записей в таблице { num += (i + 1).ToString() + "." + "\r\n"; izd += DgvZakaz.Rows[i].Cells[0].Value + "\r\n"; countizd += DgvZakaz.Rows[i].Cells[1].Value + "\r\n"; tkan += DgvZakaz.Rows[i].Cells[2].Value + "\r\n"; fur += DgvZakaz.Rows[i].Cells[3].Value + "\r\n"; countfur += DgvZakaz.Rows[i].Cells[4].Value + "\r\n"; zakazchik += DgvZakaz.Rows[i].Cells[5].Value + "\r\n"; } WBmark["num"].Range.Text = num.Trim(); WBmark["izd"].Range.Text = izd.Trim(); WBmark["countizd"].Range.Text = countizd.Trim(); WBmark["tkan"].Range.Text = tkan.Trim(); WBmark["fur"].Range.Text = fur.Trim(); WBmark["countfur"].Range.Text = countfur.Trim(); WBmark["zak"].Range.Text = zakazchik.Trim(); } else { if (saveFileDialog1.ShowDialog() == DialogResult.OK) { StreamWriter f = new StreamWriter(saveFileDialog1.FileName); string t = "izd;countizd;tkan;furnitura;countfur;zakazchik"; f.WriteLine(t); for(int i=0; i <= DgvZakaz.RowCount-1; i++) { t = ""; t += DgvZakaz.Rows[i].Cells[0].Value + ";"; t += DgvZakaz.Rows[i].Cells[1].Value + ";"; t += DgvZakaz.Rows[i].Cells[2].Value + ";"; t += DgvZakaz.Rows[i].Cells[3].Value + ";"; t += DgvZakaz.Rows[i].Cells[4].Value + ";"; t += DgvZakaz.Rows[i].Cells[5].Value; f.WriteLine(t); } f.Close(); } } } private void BtnSelect_Click(object sender, EventArgs e) { if (RbtWord.Checked) { Word.Application app = new Word.Application(); app.Visible = true; Word.Document doc = app.Documents.Open(Application.StartupPath + "\\Заказы.docx", null, true); Word.Bookmarks WBmark = doc.Bookmarks; // закладки из документа WBmark["man"].Range.Text = FamLabel.Text + " " + NameLabel.Text + " " + OtchLabel.Text; string num = "", izd = "", countizd = "", tkan = "", fur = "", countfur = "", zakazchik = ""; for (int i = 0; i <= DgvZakaz.SelectedRows.Count - 1; i++) // перебор записей в таблице { num += (i + 1).ToString() + "." + "\r\n"; izd += DgvZakaz.SelectedRows[i].Cells[0].Value + "\r\n"; countizd += DgvZakaz.SelectedRows[i].Cells[1].Value + "\r\n"; tkan += DgvZakaz.SelectedRows[i].Cells[2].Value + "\r\n"; fur += DgvZakaz.SelectedRows[i].Cells[3].Value + "\r\n"; countfur += DgvZakaz.SelectedRows[i].Cells[4].Value + "\r\n"; zakazchik += DgvZakaz.SelectedRows[i].Cells[5].Value + "\r\n"; } WBmark["num"].Range.Text = num.Trim(); WBmark["izd"].Range.Text = izd.Trim(); WBmark["countizd"].Range.Text = countizd.Trim(); WBmark["tkan"].Range.Text = tkan.Trim(); WBmark["fur"].Range.Text = fur.Trim(); WBmark["countfur"].Range.Text = countfur.Trim(); WBmark["zak"].Range.Text = zakazchik.Trim(); } else { if (saveFileDialog1.ShowDialog() == DialogResult.OK) { StreamWriter f = new StreamWriter(saveFileDialog1.FileName); string t = "izd;countizd;tkan;furnitura;countfur;zakazchik"; f.WriteLine(t); for (int i = 0; i <= DgvZakaz.SelectedRows.Count - 1; i++) { t = ""; t += DgvZakaz.SelectedRows[i].Cells[0].Value + ";"; t += DgvZakaz.SelectedRows[i].Cells[1].Value + ";"; t += DgvZakaz.SelectedRows[i].Cells[2].Value + ";"; t += DgvZakaz.SelectedRows[i].Cells[3].Value + ";"; t += DgvZakaz.SelectedRows[i].Cells[4].Value + ";"; t += DgvZakaz.SelectedRows[i].Cells[5].Value; f.WriteLine(t); } f.Close(); } } } } }