FormManager.cs 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Data.SqlClient;
  6. using System.Drawing;
  7. using System.IO;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. using System.Windows.Forms;
  12. using Word = Microsoft.Office.Interop.Word;
  13. namespace СУБД_Швейная_фабрика
  14. {
  15. public partial class FormManager : Form
  16. {
  17. public FormManager()
  18. {
  19. InitializeComponent();
  20. }
  21. /// <summary>
  22. /// Заполнение DataGridView с заказами текущего заказчика
  23. /// </summary>
  24. void FillListZakaz()
  25. {
  26. SqlConnection con = new SqlConnection(Properties.Settings.Default.fab2021ConnectionString);
  27. con.Open();
  28. string TxtQuery =
  29. @"select Izdeliya.nameizd as izd,
  30. Zakaz.countizd as countizd,
  31. Tkani.nametkan as tkan,
  32. Furnitura.namefur as fur,
  33. Zakaz.countfur as countfur,
  34. Users.fam as zakazchik
  35. from Zakaz, Users, Tkani, Furnitura, Izdeliya
  36. where Users.iduser = Zakaz.idzakazchik
  37. and Tkani.idtkan = Zakaz.idtkan
  38. and Furnitura.idfur = Zakaz.idfur
  39. and Izdeliya.idizd = Zakaz.idizd
  40. and Zakaz.idman = " + LblIdManager.Text;
  41. SqlCommand query1 = new SqlCommand(TxtQuery, con);
  42. // выполнить запрос
  43. SqlDataReader SqlRez = query1.ExecuteReader();
  44. DgvZakaz.Rows.Clear(); // очистить от старых строк
  45. // перебирать результаты запроса
  46. while (SqlRez.Read())
  47. {
  48. DgvZakaz.Rows.Add(SqlRez["izd"], SqlRez["countizd"],
  49. SqlRez["tkan"], SqlRez["fur"], SqlRez["countfur"],
  50. SqlRez["zakazchik"]);
  51. }
  52. con.Close();
  53. }
  54. public struct Tkani
  55. {
  56. public string IdTkan, NameTkan, ColorTkan, Width, Length, Description;
  57. public Image PhotoTkan;
  58. }
  59. List<Tkani> LstTkani = new List<Tkani>();
  60. /// <summary>
  61. /// получить из базы данных сведения о тканях
  62. /// </summary>
  63. void GetTkaniFromDB()
  64. {
  65. SqlConnection con = new SqlConnection(Properties.Settings.Default.fab2021ConnectionString);
  66. con.Open();
  67. SqlCommand Query = new SqlCommand("select * from Tkani where length > 0", con);
  68. SqlDataReader Data = Query.ExecuteReader();
  69. while (Data.Read())
  70. {
  71. Tkani Tk = new Tkani();
  72. Tk.IdTkan = Data["idtkan"].ToString();
  73. Tk.NameTkan = Data["nametkan"].ToString();
  74. Tk.ColorTkan = Data["color"].ToString();
  75. Tk.Width = Data["width"].ToString();
  76. Tk.Length = Data["length"].ToString();
  77. Tk.Description = Data["description"].ToString();
  78. try
  79. {
  80. // загрузить из таблицы БД байты фотографии в массив
  81. byte[] PhotoByte = (byte[])Data["phototkan"];
  82. ImageConverter ImConverter = new ImageConverter();
  83. // сконвертировать массив байт в изображение
  84. Tk.PhotoTkan = (Bitmap)ImConverter.ConvertFrom(PhotoByte);
  85. }
  86. catch
  87. {
  88. // в случае ошибки загрузить пустое изображение из ресурсов
  89. Tk.PhotoTkan = Properties.Resources.tmp;
  90. }
  91. LstTkani.Add(Tk); // добавить в список новую ткань
  92. }
  93. con.Close();
  94. }
  95. /// <summary>
  96. /// заполнение таблицы с фотографиями тканей
  97. /// </summary>
  98. void FillLVTkani()
  99. {
  100. LVTkani.Items.Clear();
  101. ImageListTkani.Images.Clear();
  102. foreach (Tkani Tk in LstTkani)
  103. {
  104. // новый элемент для ListView с названием ткани
  105. ListViewItem LV = new ListViewItem(Tk.NameTkan);
  106. // в ImageList добавить изображение ткани
  107. ImageListTkani.Images.Add(Tk.PhotoTkan);
  108. // связать последнее добавленное изображение с новым элементом ListView
  109. LV.ImageIndex = ImageListTkani.Images.Count - 1;
  110. LVTkani.Items.Add(LV); // добавить новый элемент к ListView
  111. }
  112. }
  113. public struct Furnitura
  114. {
  115. public string IdFur, NameFur, CountFur;
  116. public Image PhotoFur;
  117. }
  118. List<Furnitura> LstFurnitura = new List<Furnitura>();
  119. /// <summary>
  120. /// получить данные о фурнитурах из базы данных
  121. /// </summary>
  122. void GetFurnituraFromDB()
  123. {
  124. SqlConnection con = new SqlConnection(Properties.Settings.Default.fab2021ConnectionString);
  125. con.Open();
  126. SqlCommand Query = new SqlCommand("select * from Furnitura where countfur > 0", con);
  127. SqlDataReader Data = Query.ExecuteReader();
  128. while (Data.Read())
  129. {
  130. Furnitura Fr = new Furnitura();
  131. Fr.IdFur = Data["idfur"].ToString();
  132. Fr.NameFur = Data["namefur"].ToString();
  133. Fr.CountFur = Data["countfur"].ToString();
  134. try
  135. {
  136. // загрузить из таблицы БД байты фотографии в массив
  137. byte[] PhotoByte = (byte[])Data["photo"];
  138. ImageConverter ImConverter = new ImageConverter();
  139. // сконвертировать массив байт в изображение
  140. Fr.PhotoFur = (Bitmap)ImConverter.ConvertFrom(PhotoByte);
  141. }
  142. catch
  143. {
  144. // в случае ошибки загрузить пустое изображение из ресурсов
  145. Fr.PhotoFur = Properties.Resources.tmp;
  146. }
  147. LstFurnitura.Add(Fr); // добавить в список новую фурнитуру
  148. }
  149. con.Close();
  150. }
  151. /// <summary>
  152. /// заполнить таблицу с фотографиями фурнитур
  153. /// </summary>
  154. void FillLVFurnitura()
  155. {
  156. LVFurnitura.Items.Clear();
  157. ImageListFur.Images.Clear();
  158. foreach (Furnitura Fr in LstFurnitura)
  159. {
  160. // новый элемент для ListView с названием фурнитуры
  161. ListViewItem LV = new ListViewItem(Fr.NameFur);
  162. // в ImageList добавить изображение фурнитуры
  163. ImageListFur.Images.Add(Fr.PhotoFur);
  164. // связать последнее добавленное изображение с новым элементом ListView
  165. LV.ImageIndex = ImageListFur.Images.Count - 1;
  166. LVFurnitura.Items.Add(LV); // добавить новый элемент к ListView
  167. }
  168. }
  169. private void FormManager_Load(object sender, EventArgs e)
  170. {
  171. // TODO: This line of code loads data into the 'fab2021DataSet1.Izdeliya' table. You can move, or remove it, as needed.
  172. this.izdeliyaTableAdapter.Fill(this.fab2021DataSet1.Izdeliya);
  173. // TODO: This line of code loads data into the 'fab2021DataSet1.Users' table. You can move, or remove it, as needed.
  174. this.usersTableAdapter.Fill(this.fab2021DataSet1.Users);
  175. FillListZakaz();
  176. GetTkaniFromDB();
  177. FillLVTkani();
  178. GetFurnituraFromDB();
  179. FillLVFurnitura();
  180. }
  181. private void BtnProfile_Click(object sender, EventArgs e)
  182. {
  183. FormProfile frm = new FormProfile();
  184. // на форму для редактирования профиля передать
  185. // фильтр для выборки авторизовавшегося пользователя
  186. frm.BsUsers.Filter = this.BsUsers.Filter;
  187. if (frm.ShowDialog() == DialogResult.OK)
  188. {
  189. this.usersTableAdapter.Fill(this.fab2021DataSet1.Users);
  190. }
  191. }
  192. private void BtnAdd_Click(object sender, EventArgs e)
  193. {
  194. BsIzdeliya.AddNew();
  195. BtnSave.Enabled = true;
  196. BtnAdd.Enabled = false;
  197. BtnEdit.Enabled = false;
  198. DgvIzd.Enabled = false;
  199. TbxNameIzd.Enabled = true;
  200. TbxLengthIzd.Enabled = true;
  201. TbxWidthIzd.Enabled = true;
  202. }
  203. private void BtnEdit_Click(object sender, EventArgs e)
  204. {
  205. BtnSave.Enabled = true;
  206. BtnAdd.Enabled = false;
  207. BtnEdit.Enabled = false;
  208. DgvIzd.Enabled = false;
  209. TbxNameIzd.Enabled = true;
  210. TbxLengthIzd.Enabled = true;
  211. TbxWidthIzd.Enabled = true;
  212. }
  213. private void BtnSave_Click(object sender, EventArgs e)
  214. {
  215. BsIzdeliya.EndEdit();
  216. this.izdeliyaTableAdapter.Update(this.fab2021DataSet1.Izdeliya);
  217. BtnSave.Enabled = false;
  218. BtnAdd.Enabled = true;
  219. BtnEdit.Enabled = true;
  220. DgvIzd.Enabled = true;
  221. TbxNameIzd.Enabled = false;
  222. TbxLengthIzd.Enabled = false;
  223. TbxWidthIzd.Enabled = false;
  224. }
  225. private void LVTkani_SelectedIndexChanged(object sender, EventArgs e)
  226. {
  227. if (LVTkani.SelectedItems.Count > 0) // есть выделенные элементы
  228. {
  229. int num = LVTkani.SelectedIndices[0]; // номер выделенного элемента
  230. NametkanTextBox.Text = LstTkani[num].NameTkan;
  231. ColorTextBox.Text = LstTkani[num].ColorTkan;
  232. WidthTextBox.Text = LstTkani[num].Width;
  233. LengthTextBox.Text = LstTkani[num].Length;
  234. DescriptionTextBox.Text = LstTkani[num].Description;
  235. }
  236. else // нет выделенных элементов
  237. {
  238. NametkanTextBox.Text = "";
  239. ColorTextBox.Text = "";
  240. WidthTextBox.Text = "";
  241. LengthTextBox.Text = "";
  242. DescriptionTextBox.Text = "";
  243. }
  244. }
  245. private void LVFurnitura_SelectedIndexChanged(object sender, EventArgs e)
  246. {
  247. if (LVFurnitura.SelectedItems.Count > 0) // есть выделенные элементы
  248. {
  249. int num = LVFurnitura.SelectedIndices[0]; // номер выделенного элемента
  250. TbxNameFur.Text = LstFurnitura[num].NameFur;
  251. TbxCountFurSklad.Text = LstFurnitura[num].CountFur;
  252. }
  253. else // нет выделенных элементов
  254. {
  255. TbxNameFur.Text = "";
  256. TbxCountFurSklad.Text = "";
  257. }
  258. }
  259. private void BtnAll_Click(object sender, EventArgs e)
  260. {
  261. if (RbtWord.Checked)
  262. {
  263. Word.Application app = new Word.Application();
  264. app.Visible = true;
  265. Word.Document doc = app.Documents.Open(Application.StartupPath + "\\Заказы.docx", null, true);
  266. Word.Bookmarks WBmark = doc.Bookmarks; // закладки из документа
  267. WBmark["man"].Range.Text = FamLabel.Text + " " + NameLabel.Text + " " + OtchLabel.Text;
  268. string num = "", izd = "", countizd = "", tkan = "",
  269. fur = "", countfur = "", zakazchik = "";
  270. for (int i = 0; i <= DgvZakaz.RowCount - 1; i++) // перебор записей в таблице
  271. {
  272. num += (i + 1).ToString() + "." + "\r\n";
  273. izd += DgvZakaz.Rows[i].Cells[0].Value + "\r\n";
  274. countizd += DgvZakaz.Rows[i].Cells[1].Value + "\r\n";
  275. tkan += DgvZakaz.Rows[i].Cells[2].Value + "\r\n";
  276. fur += DgvZakaz.Rows[i].Cells[3].Value + "\r\n";
  277. countfur += DgvZakaz.Rows[i].Cells[4].Value + "\r\n";
  278. zakazchik += DgvZakaz.Rows[i].Cells[5].Value + "\r\n";
  279. }
  280. WBmark["num"].Range.Text = num.Trim();
  281. WBmark["izd"].Range.Text = izd.Trim();
  282. WBmark["countizd"].Range.Text = countizd.Trim();
  283. WBmark["tkan"].Range.Text = tkan.Trim();
  284. WBmark["fur"].Range.Text = fur.Trim();
  285. WBmark["countfur"].Range.Text = countfur.Trim();
  286. WBmark["zak"].Range.Text = zakazchik.Trim();
  287. }
  288. else
  289. {
  290. if (saveFileDialog1.ShowDialog() == DialogResult.OK)
  291. {
  292. StreamWriter f = new StreamWriter(saveFileDialog1.FileName);
  293. string t = "izd;countizd;tkan;furnitura;countfur;zakazchik";
  294. f.WriteLine(t);
  295. for(int i=0; i <= DgvZakaz.RowCount-1; i++)
  296. {
  297. t = "";
  298. t += DgvZakaz.Rows[i].Cells[0].Value + ";";
  299. t += DgvZakaz.Rows[i].Cells[1].Value + ";";
  300. t += DgvZakaz.Rows[i].Cells[2].Value + ";";
  301. t += DgvZakaz.Rows[i].Cells[3].Value + ";";
  302. t += DgvZakaz.Rows[i].Cells[4].Value + ";";
  303. t += DgvZakaz.Rows[i].Cells[5].Value;
  304. f.WriteLine(t);
  305. }
  306. f.Close();
  307. }
  308. }
  309. }
  310. private void BtnSelect_Click(object sender, EventArgs e)
  311. {
  312. if (RbtWord.Checked)
  313. {
  314. Word.Application app = new Word.Application();
  315. app.Visible = true;
  316. Word.Document doc = app.Documents.Open(Application.StartupPath + "\\Заказы.docx", null, true);
  317. Word.Bookmarks WBmark = doc.Bookmarks; // закладки из документа
  318. WBmark["man"].Range.Text = FamLabel.Text + " " + NameLabel.Text + " " + OtchLabel.Text;
  319. string num = "", izd = "", countizd = "", tkan = "",
  320. fur = "", countfur = "", zakazchik = "";
  321. for (int i = 0; i <= DgvZakaz.SelectedRows.Count - 1; i++) // перебор записей в таблице
  322. {
  323. num += (i + 1).ToString() + "." + "\r\n";
  324. izd += DgvZakaz.SelectedRows[i].Cells[0].Value + "\r\n";
  325. countizd += DgvZakaz.SelectedRows[i].Cells[1].Value + "\r\n";
  326. tkan += DgvZakaz.SelectedRows[i].Cells[2].Value + "\r\n";
  327. fur += DgvZakaz.SelectedRows[i].Cells[3].Value + "\r\n";
  328. countfur += DgvZakaz.SelectedRows[i].Cells[4].Value + "\r\n";
  329. zakazchik += DgvZakaz.SelectedRows[i].Cells[5].Value + "\r\n";
  330. }
  331. WBmark["num"].Range.Text = num.Trim();
  332. WBmark["izd"].Range.Text = izd.Trim();
  333. WBmark["countizd"].Range.Text = countizd.Trim();
  334. WBmark["tkan"].Range.Text = tkan.Trim();
  335. WBmark["fur"].Range.Text = fur.Trim();
  336. WBmark["countfur"].Range.Text = countfur.Trim();
  337. WBmark["zak"].Range.Text = zakazchik.Trim();
  338. }
  339. else
  340. {
  341. if (saveFileDialog1.ShowDialog() == DialogResult.OK)
  342. {
  343. StreamWriter f = new StreamWriter(saveFileDialog1.FileName);
  344. string t = "izd;countizd;tkan;furnitura;countfur;zakazchik";
  345. f.WriteLine(t);
  346. for (int i = 0; i <= DgvZakaz.SelectedRows.Count - 1; i++)
  347. {
  348. t = "";
  349. t += DgvZakaz.SelectedRows[i].Cells[0].Value + ";";
  350. t += DgvZakaz.SelectedRows[i].Cells[1].Value + ";";
  351. t += DgvZakaz.SelectedRows[i].Cells[2].Value + ";";
  352. t += DgvZakaz.SelectedRows[i].Cells[3].Value + ";";
  353. t += DgvZakaz.SelectedRows[i].Cells[4].Value + ";";
  354. t += DgvZakaz.SelectedRows[i].Cells[5].Value;
  355. f.WriteLine(t);
  356. }
  357. f.Close();
  358. }
  359. }
  360. }
  361. }
  362. }