FormSpisMaterial.cs 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using Excel = Microsoft.Office.Interop.Excel;
  11. namespace СУБД_Швейная_фабрика
  12. {
  13. public partial class FormSpisMaterial : Form
  14. {
  15. public FormSpisMaterial()
  16. {
  17. InitializeComponent();
  18. }
  19. private void FormSpisMaterial_Load(object sender, EventArgs e)
  20. {
  21. // TODO: This line of code loads data into the 'fab2021DataSet1.Tkani' table. You can move, or remove it, as needed.
  22. this.tkaniTableAdapter.Fill(this.fab2021DataSet1.Tkani);
  23. // TODO: This line of code loads data into the 'fab2021DataSet1.Furnitura' table. You can move, or remove it, as needed.
  24. this.furnituraTableAdapter.Fill(this.fab2021DataSet1.Furnitura);
  25. }
  26. private void BtnToExcel_Click(object sender, EventArgs e)
  27. {
  28. // создать объект для связи с приложением Excel
  29. Excel.Application exapp = new Excel.Application();
  30. // сделать приложение Excel видимым
  31. exapp.Visible = true;
  32. // открыть в Excel шаблон, находящийся в папке с exe-файлом в режиме только для чтения
  33. exapp.Workbooks.Open(Application.StartupPath + "\\Списание.xlsx", Type.Missing, true);
  34. // создать переменную list1 для связи с первым листом рабочей книги
  35. Excel.Worksheet list1 = (exapp.Worksheets.get_Item(1));
  36. int RowExcel = 24; // в Excel начинать выводить с 24 строки
  37. // перебор тканей в DataGridView
  38. for (int i = 0; i <= DgvTkan.RowCount - 1; i++)
  39. {
  40. int CountSpis = 0;
  41. try
  42. {
  43. // сколько списать i-й ткани
  44. CountSpis = Convert.ToInt32(DgvTkan.Rows[i].Cells[3].Value);
  45. }
  46. catch { }
  47. // если человек указал 0, или не указал ничего,
  48. // перейти к следующей ткани
  49. if (CountSpis == 0)
  50. continue;
  51. // если человек ввел ненулевое кол-во для списания,
  52. // добавить i-ю ткань в документ
  53. list1.get_Range("A" + RowExcel).Value = DgvTkan.Rows[i].Cells[0].Value;
  54. list1.get_Range("H" + RowExcel).Value = "см";
  55. list1.get_Range("J" + RowExcel).Value = "ткань";
  56. // количество ткани для списания
  57. list1.get_Range("L" + RowExcel).Value = CountSpis;
  58. int WidthTkan = Convert.ToInt32(DgvTkan.Rows[i].Cells[1].Value);
  59. // площадь ткани для списания
  60. list1.get_Range("N" + RowExcel).Value = CountSpis * WidthTkan;
  61. // причина списания
  62. list1.get_Range("R" + RowExcel).Value = DgvTkan.Rows[i].Cells[4].Value;
  63. RowExcel++; // перейти в Excel к следующей строке
  64. }
  65. // перебор фурнитур в DataGridView
  66. for (int i = 0; i <= DgvFurnitura.RowCount - 1; i++)
  67. {
  68. int CountSpis = 0;
  69. try
  70. {
  71. // сколько списать i-й фурнитуры
  72. CountSpis = Convert.ToInt32(DgvFurnitura.Rows[i].Cells[2].Value);
  73. }
  74. catch { }
  75. // если человек указал 0, или не указал ничего,
  76. // перейти к следующей фурнитуре
  77. if (CountSpis == 0)
  78. continue;
  79. // если человек ввел ненулевое кол-во для списания,
  80. // добавить i-ю фурнитуру в документ
  81. list1.get_Range("A" + RowExcel).Value = DgvFurnitura.Rows[i].Cells[0].Value;
  82. list1.get_Range("H" + RowExcel).Value = "шт";
  83. list1.get_Range("J" + RowExcel).Value = "фурнитура";
  84. // количество фурнитуры для списания
  85. list1.get_Range("L" + RowExcel).Value = CountSpis;
  86. // причина списания
  87. list1.get_Range("R" + RowExcel).Value = DgvFurnitura.Rows[i].Cells[3].Value;
  88. RowExcel++; // перейти в Excel к следующей строке
  89. }
  90. }
  91. private void BtnSpisMaterial_Click(object sender, EventArgs e)
  92. {
  93. DialogResult rez = MessageBox.Show("Вы уверены, что нужно выбранные материалы?",
  94. "Внимание!", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
  95. // если пользователь отказался списать, то выйти из процедуры
  96. if (rez == DialogResult.No)
  97. return;
  98. // перебор тканей в DataGridView
  99. for (int i = 0; i <= DgvTkan.RowCount - 1; i++)
  100. {
  101. int CountSpis = 0;
  102. try
  103. {
  104. // сколько списать i-й ткани
  105. CountSpis = Convert.ToInt32(DgvTkan.Rows[i].Cells[3].Value);
  106. }
  107. catch { }
  108. // если человек указал 0, или не указал ничего,
  109. // перейти к следующей ткани
  110. if (CountSpis == 0)
  111. continue;
  112. // если человек ввел ненулевое кол-во для списания,
  113. // списать ткань
  114. int LengthTkan = Convert.ToInt32(DgvTkan.Rows[i].Cells[2].Value);
  115. // уменьшить кол-во ткани на складе на кол-во списываемой ткани
  116. LengthTkan -= CountSpis;
  117. // записать в столбец с длиной рулона ткани на складе новое значение
  118. DgvTkan.Rows[i].Cells[2].Value = LengthTkan;
  119. }
  120. BsTkani.EndEdit();
  121. this.tkaniTableAdapter.Update(this.fab2021DataSet1.Tkani);
  122. // перебор фурнитур в DataGridView
  123. for (int i = 0; i <= DgvFurnitura.RowCount - 1; i++)
  124. {
  125. int CountSpis = 0;
  126. try
  127. {
  128. // сколько списать i-й фурнитуры
  129. CountSpis = Convert.ToInt32(DgvFurnitura.Rows[i].Cells[2].Value);
  130. }
  131. catch { }
  132. // если человек указал 0, или не указал ничего,
  133. // перейти к следующей фурнитуре
  134. if (CountSpis == 0)
  135. continue;
  136. // если человек ввел ненулевое кол-во для списания,
  137. // списать фурнитуру
  138. // если человек ввел ненулевое кол-во для списания,
  139. // списать ткань
  140. int CountFur = Convert.ToInt32(DgvFurnitura.Rows[i].Cells[1].Value);
  141. // уменьшить кол-во фурнитур на складе на кол-во списываемых фурнитур
  142. CountFur -= CountSpis;
  143. // записать в столбец с кол-вом фурнитур на складе новое значение
  144. DgvFurnitura.Rows[i].Cells[1].Value = CountFur;
  145. }
  146. BsFurnitura.EndEdit();
  147. this.furnituraTableAdapter.Update(this.fab2021DataSet1.Furnitura);
  148. }
  149. }
  150. }