public void MainData(string Условие)//Генерация списка IDs ремонтов, которые подходят по условию. { if (Условие == "Spisanie") { int Столбцы_Spis = 6;//Ко-во столбцов под списание. try { Auth.Spisanie_ID = new string[КоличествоСписаний]; Auth.Запрос = $"SELECT `ID` FROM `remont` WHERE `dOconchaniyaR` <= \"{ДатаПодСписание}\" AND `Vidano` = 0 "; MySqlConnection Коннектор = new MySqlConnection(Auth.СтрокаПодключения); Коннектор.Open(); MySqlCommand Комманда = new MySqlCommand(Auth.Запрос, Коннектор); MySqlDataReader езультат = Комманда.ExecuteReader(); int Clc = 0; while (езультат.Read()) { string Ячейка = езультат[0].ToString(); Auth.Spisanie_ID[Clc] = Ячейка; Clc = ++Clc; } Clc = 0; Отключиться(Коннектор); } catch (Exception) { MessageBox.Show("Не удалось получить список ремонтов под списание.", "Err"); Exit("server.exe"); Exit("httpd_usbwv8.exe"); Exit("mysqld_usbwv8.exe"); System.Environment.Exit(0); throw; } try//Формируем таблицу { int строка = 1; Auth.Spisanie = new string[КоличествоСписаний, Столбцы_Spis]; MySqlConnection Коннектор = new MySqlConnection(Auth.СтрокаПодключения);// Обьявляем cBase как MySqlConnection(переменная строки подключения) for (int i = 0; i < КоличествоСписаний; i++) { Auth.Запрос = $"SELECT `ID`,`Type`,`Proizv`,`Model`,`dOconchaniyaR`,`Filial_Now` FROM `remont` WHERE `ID`={Auth.Spisanie_ID[i]}"; MySqlCommand Комманда = new MySqlCommand(Auth.Запрос, Коннектор); Коннектор.Open(); MySqlDataReader езультат = Комманда.ExecuteReader(); езультат.Read(); for (int ячейка = 0; ячейка < Столбцы_Spis; ячейка++) { Auth.Spisanie[i, ячейка] = езультат[ячейка].ToString(); if (ячейка == 4) { Auth.Spisanie[i, ячейка] = DateTime.Parse(Auth.Spisanie[i, ячейка]).ToString("dd'.'MM'.'yyyy"); }//попытка автозамены даты "На лету" if (ячейка == 5) { Auth.Spisanie[i, ячейка] = Auth.Filial_All[int.Parse(Auth.Spisanie[i, ячейка]) - 1, 2]; }//попытка автозамены филиала "На лету" } строка = ++строка; Отключиться(Коннектор); } int L = Auth.Spisanie.Length; int H = Auth.Spisanie.Length / Столбцы_Spis; L /= H; for (int i = 0; i < H; i++) { string[] Tmp = new string[L]; for (int j = 0; j < L; j++) { Tmp[j] = Auth.Spisanie[i, j]; } ПодготовкаDataGrid(Tmp, dgSpisanie); } } catch (Exception) { MessageBox.Show("Не удалось сформировать список ремонтов под списание.", "Err"); Exit("server.exe"); Exit("httpd_usbwv8.exe"); Exit("mysqld_usbwv8.exe"); System.Environment.Exit(0); throw; } } else { int nGot = 0; int nProbl = 0; try { Auth.Запрос = $"SELECT COUNT(*) FROM `remont` WHERE `{Условие}` = 1 AND Vidano = 0"; MySqlConnection Коннектор = new MySqlConnection(Auth.СтрокаПодключения); Коннектор.Open(); MySqlCommand Комманда = new MySqlCommand(Auth.Запрос, Коннектор); MySqlDataReader езультат = Комманда.ExecuteReader(); int Clc = 0; while (езультат.Read()) { string sN = езультат[0].ToString(); if (Условие == "Otremontirovano") { nGot = int.Parse(sN); } else if (Условие == "Problem") { nProbl = int.Parse(sN); } Clc = ++Clc; } Clc = 0; Отключиться(Коннектор); } catch (Exception) { throw; } емонты Rem = new емонты(); int Столбцы = 6; Rem.ГотовыеРемонты = new string[nGot]; Rem.МассивГотовыхРемонтов = new string[nGot, Столбцы]; Rem.ПроблемныеРемонты = new string[nProbl]; Rem.МассивПроблемныхРемонтов = new string[nProbl, Столбцы]; if (nGot != 0) { try { Auth.Запрос = $"SELECT `ID` FROM `remont` WHERE {Условие} = 1 AND Vidano = 0"; MySqlConnection Коннектор = new MySqlConnection(Auth.СтрокаПодключения); Коннектор.Open(); MySqlCommand Комманда = new MySqlCommand(Auth.Запрос, Коннектор); MySqlDataReader езультат = Комманда.ExecuteReader(); int Clc = 0; while (езультат.Read()) { езультат[0].ToString(); string Ячейка = езультат[0].ToString(); if (Условие == "Otremontirovano") { Rem.ГотовыеРемонты[Clc] = Ячейка; } Clc = ++Clc; } Clc = 0; Отключиться(Коннектор); } catch (Exception) { MessageBox.Show("Не удалось получить количество готовых ремонтов.", "Err"); Exit("server.exe"); Exit("httpd_usbwv8.exe"); Exit("mysqld_usbwv8.exe"); System.Environment.Exit(0); throw; } if (Условие == "Otremontirovano") { int строка = 1; MySqlConnection Коннектор = new MySqlConnection(Auth.СтрокаПодключения);// Обьявляем cBase как MySqlConnection(переменная строки подключения) for (int i = 0; i < nGot; i++) { Коннектор.Open(); if (Условие == "Otremontirovano") { Auth.Запрос = $"SELECT `ID`,`Type`,`Proizv`,`Model`,`dOconchaniyaR`,`ID_Master` FROM `remont` WHERE `ID`={Rem.ГотовыеРемонты[i]}"; } MySqlCommand Комманда = new MySqlCommand(Auth.Запрос, Коннектор); MySqlDataReader езультат = Комманда.ExecuteReader(); езультат.Read(); for (int ячейка = 0; ячейка < Столбцы; ячейка++) { езультат[ячейка].ToString(); if (Условие == "Otremontirovano") { Rem.МассивГотовыхРемонтов[(строка - 1), ячейка] = езультат[ячейка].ToString(); if (ячейка == 4) { Rem.МассивГотовыхРемонтов[(строка - 1), ячейка] = DateTime.Parse(Rem.МассивГотовыхРемонтов[(строка - 1), ячейка]).ToString("dd'.'MM'.'yyyy"); } if (ячейка == 5) { int temp = int.Parse(Rem.МассивГотовыхРемонтов[(строка - 1), ячейка]) - 1; Rem.МассивГотовыхРемонтов[(строка - 1), ячейка] = Auth.Sotrudnik_All[temp, 2]; }//попытка автозамены "На лету" } } строка = ++строка; Отключиться(Коннектор); } if (Условие == "Otremontirovano") { int L = Rem.МассивГотовыхРемонтов.Length; int H = Rem.МассивГотовыхРемонтов.Length / 6; L /= H; for (int i = 0; i < H; i++) { string[] Tmp = new string[L]; for (int j = 0; j < L; j++) { Tmp[j] = Rem.МассивГотовыхРемонтов[i, j]; } ПодготовкаDataGrid(Tmp, dgReady); } } } else if (true) { MessageBox.Show("Ошибка инициализации", "Критическая ошибка"); Exit("server.exe"); Exit("httpd_usbwv8.exe"); Exit("mysqld_usbwv8.exe"); System.Environment.Exit(0); } } else if (nProbl != 0) { try { Auth.Запрос = $"SELECT `ID` FROM `remont` WHERE {Условие} = 1 AND Vidano = 0"; MySqlConnection Коннектор = new MySqlConnection(Auth.СтрокаПодключения); Коннектор.Open(); MySqlCommand Комманда = new MySqlCommand(Auth.Запрос, Коннектор); MySqlDataReader езультат = Комманда.ExecuteReader(); int Clc = 0; while (езультат.Read()) { езультат[0].ToString(); string Ячейка = езультат[0].ToString(); if (Условие == "Otremontirovano") { Rem.ГотовыеРемонты[Clc] = Ячейка; } else if (Условие == "Problem") { Rem.ПроблемныеРемонты[Clc] = Ячейка; } Clc = ++Clc; } Clc = 0; Отключиться(Коннектор); } catch (Exception) { MessageBox.Show("Не удалось получить количество готовых ремонтов.", "Err"); Exit("server.exe"); Exit("httpd_usbwv8.exe"); Exit("mysqld_usbwv8.exe"); System.Environment.Exit(0); throw; } if (Условие == "Problem") { int строка = 1; MySqlConnection Коннектор = new MySqlConnection(Auth.СтрокаПодключения);// Обьявляем cBase как MySqlConnection(переменная строки подключения) for (int i = 0; i < nProbl; i++) { Коннектор.Open(); if (Условие == "Problem") { Auth.Запрос = $"SELECT `ID`,`Type`,`Proizv`,`Model`,`DateOfPriem`,`Prinyal` FROM `remont` WHERE `ID`={Rem.ПроблемныеРемонты[i]}"; } MySqlCommand Комманда = new MySqlCommand(Auth.Запрос, Коннектор); MySqlDataReader езультат = Комманда.ExecuteReader(); езультат.Read(); for (int ячейка = 0; ячейка < Столбцы; ячейка++) { езультат[ячейка].ToString(); if (Условие == "Problem") { Rem.МассивПроблемныхРемонтов[(строка - 1), ячейка] = езультат[ячейка].ToString(); if (ячейка == 4) { Rem.МассивПроблемныхРемонтов[i, ячейка] = DateTime.Parse(Rem.МассивПроблемныхРемонтов[i, ячейка]).ToString("dd'.'MM'.'yyyy"); } if (ячейка == 5) { int temp = int.Parse(Rem.МассивПроблемныхРемонтов[(строка - 1), ячейка]) - 1; Rem.МассивПроблемныхРемонтов[(строка - 1), ячейка] = Auth.Sotrudnik_All[temp, 2]; }//попытка автозамены "На лету" } } строка = ++строка; Отключиться(Коннектор); } if (Условие == "Problem") { int L = Rem.МассивПроблемныхРемонтов.Length; int H = Rem.МассивПроблемныхРемонтов.Length / 6; L /= H; for (int i = 0; i < H; i++) { string[] Tmp = new string[L]; for (int j = 0; j < L; j++) { Tmp[j] = Rem.МассивПроблемныхРемонтов[i, j]; } ПодготовкаDataGrid(Tmp, dgProblem); } } } } } }
}//отключение от БД public void ПодготовкаМассивов(string НомерТаблицы) { Филиалы Filial = new Филиалы();//Создаем обьекты наших публичных массивов Инженеры Ing = new Инженеры(); Клиенты Kl = new Клиенты(); емонты Rem = new емонты(); string Table = ""; int Count = 0; int Row = 0; //Отбор логики и переменных по входному числу, которое отвечает за выбор таблицы и инициализацию //соответствующего двумерного массива с высотой "Count" и статической шириной "Row" if (int.Parse(НомерТаблицы) == 1) { Table = СписокТаблиц[0]; Count = filial; Row = 6; Filial.МассивФилиалов = new string[filial, Row]; } else if (int.Parse(НомерТаблицы) == 2) { Table = СписокТаблиц[1]; //название таблицы из массива Count = ingeeneer; //количество записей, получаем в Form_load Row = 5; //статическое количество столбцов Ing.МассивИнженеров = new string[ingeeneer, Row]; //инициализируем массив } else if (int.Parse(НомерТаблицы) == 3) { Table = СписокТаблиц[2]; Count = klient; Row = 5; Kl.МассивКлиентов = new string[klient, Row]; } else if (int.Parse(НомерТаблицы) == 4) { Table = СписокТаблиц[3]; Count = remont; Row = 21; Rem.МассивРемонтов = new string[remont, Row]; } else { MessageBox.Show("Что-то пошло не так, обратитесь к поставщику БД!"); } MySqlConnection Коннектор = new MySqlConnection(СтрокаПодключения);// Обьявляем cBase как MySqlConnection(переменная строки подключения) int строка = 1; for (int i = 0; i < Count; i++)//цикл выгрузки значений в обьявленные массивы (Внешний цикл - строки, а внутренний - ячейки) { Коннектор.Open(); Запрос = $"SELECT * FROM `{Table}` WHERE `ID`={строка}"; MySqlCommand Комманда = new MySqlCommand(Запрос, Коннектор); MySqlDataReader езультат = Комманда.ExecuteReader(); езультат.Read(); for (int ячейка = 0; ячейка < Row; ячейка++) { езультат[ячейка].ToString(); //Отбор логики и переменных по входному числу, которое отвечает за выбор массива, который соответствует таблице if (int.Parse(НомерТаблицы) == 1) { Filial.МассивФилиалов[(строка - 1), ячейка] = езультат[ячейка].ToString(); } else if (int.Parse(НомерТаблицы) == 2) { Ing.МассивИнженеров[(строка - 1), ячейка] = езультат[ячейка].ToString(); } else if (int.Parse(НомерТаблицы) == 3) { Kl.МассивКлиентов[(строка - 1), ячейка] = езультат[ячейка].ToString(); } else if (int.Parse(НомерТаблицы) == 4) { Rem.МассивРемонтов[(строка - 1), ячейка] = езультат[ячейка].ToString(); } else { MessageBox.Show("Что-то пошло не так, обратитесь к поставщику БД!"); } } строка = ++строка; Отключиться(Коннектор); } this.Text = $"Подключение к {server} выполнено успешно!"; bZapolnenie.Enabled = true; }