//конструктор для редактируемой технологии public FreeTechnologyUserControl(BaseTechnology tech) { InitializeComponent(); this.tech = tech; LLOfOperations = new LinkedList <OperForFreeTechUserControl>(); LinkedListNode <OperForFreeTechUserControl> prevNode = null; for (int i = 0; i < tech.listOfOperations.Count; i++) { OperForFreeTechUserControl operationUC; if (i != 0) { operationUC = new OperForFreeTechUserControl(prevNode.Value.Top + prevNode.Value.Height + 5, prevNode.Value); LLOfOperations.AddAfter(prevNode, operationUC); operationUC.SetNameOfOper(tech.listOfOperations[i].name); operationUC.SetTextOfOper(tech.listOfOperations[i].text); operationUC.SetOsnastka(tech.listOfOperations[i].osnastka); } else // первая операция { operationUC = new OperForFreeTechUserControl(10); LLOfOperations.AddFirst(operationUC); operationUC.SetNameOfOper(tech.listOfOperations[i].name); operationUC.SetTextOfOper(tech.listOfOperations[i].text); operationUC.SetOsnastka(tech.listOfOperations[i].osnastka); } this.Controls.Add(operationUC); prevNode = LLOfOperations.Find(operationUC); } this.ControlAdded += new System.Windows.Forms.ControlEventHandler(this.FreeTechnologyUserControl_ControlAdded); this.ControlRemoved += new System.Windows.Forms.ControlEventHandler(this.FreeTechnologyUserControl_ControlRemoved); }
// обновить деталь в базе private void UpdateInBaseBtn_Click(object sender, EventArgs e) { if (comboBoxDet.SelectedIndex != -1) { string selectedNum = comboBoxDet.SelectedItem.ToString(); DialogResult result = DialogResult.No; OleDbConnection connection = new OleDbConnection(Globals.connectionString); string queryExist = "SELECT Number FROM Technology WHERE Number = '" + selectedNum + "'"; OleDbCommand commandExist = new OleDbCommand(queryExist, connection); connection.Open(); OleDbDataReader datareaderExist = commandExist.ExecuteReader(); if (datareaderExist.Read()) // если хоть что-то пришло в ответ { result = MessageBox.Show("Вы действительно хотите обновить деталь в базе данных?", "?", MessageBoxButtons.YesNo); } connection.Close(); if (result == DialogResult.Yes) { BaseTechnology tech = ftuc.MakeBaseTechnology(textBoxName.Text, selectedNum); if (tech.ApdateInDB()) { numberToBaseTech[selectedNum] = tech; ReNulUserControl(); } } } }
private void buttonAdd_Click(object sender, EventArgs e) { if (textBoxName.Text == "" || textBoxDetNum.Text == "") { MessageBox.Show("Введите номер и наименование детали"); return; } BaseTechnology tech = ftuc.MakeBaseTechnology(textBoxName.Text, textBoxDetNum.Text); tech.SaveToDB(); }
// создать базовую технологию из имеющихся OperForFreeTechUserControl public BaseTechnology MakeBaseTechnology(string name, string num) { List <Operation> listOfOperations = new List <Operation>(); for (LinkedListNode <OperForFreeTechUserControl> oper = LLOfOperations.First; oper != null; oper = oper.Next) { listOfOperations.Add(new Operation(oper.Value.GetNameOfOper(), oper.Value.GetTextOfOper(), oper.Value.GetOsnastka())); } BaseTechnology tech = new BaseTechnology(name, num, listOfOperations); return(tech); }
private void buttonMake_Click(object sender, EventArgs e) { name = textBoxName.Text; num = textBoxDetNum.Text; if (name == "" || num == "") { MessageBox.Show("Введите номер и наименование детали"); return; } List <Operation> listOfOperations = GetListOfOperations(); BaseTechnology tech = new BaseTechnology(name, num, listOfOperations); tech.SaveToDB(); }
private void comboBoxDet_SelectedIndexChanged(object sender, EventArgs e) { if (comboBoxDet.SelectedIndex != -1) { BaseTechnology technology = numberToBaseTech[comboBoxDet.SelectedItem.ToString()]; ftuc = new FreeTechnologyUserControl(technology); panelTech.Controls.Clear(); panelTech.Controls.Add(ftuc); textBoxName.Text = technology.name; buttonDelete.Enabled = true; } else { buttonDelete.Enabled = false; } }
// перенос базы данных из старого формата в новый private void button1_Click_1(object sender, EventArgs e) { string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data Source=" + @"D:\_ЛИЧМАН ДМИТРИЙ\7 Разное\C#\Л.Р\PrintApp v1.3\PrintApp\bin\Debug" + "\\DataBase.mdb"; string name; //string num; bool nagar; bool zabityKontrovki; bool deformedPlaces; bool magnit; bool LUM; bool pritirka; bool gidro; string pokritie; int ID; Dictionary <string, object[]> numberToSignature = new Dictionary <string, object[]>(); string query = "SELECT Number, Name, Nagar, Kontrovki, Gidro, Deform, Magnit, LUM, Pritirka, Cover.ShortName, Details.ID, CoverForDetail, Slesarka FROM Details LEFT JOIN Cover ON Details.Cover = Cover.ID ORDER BY Number;"; // object[] - str Number,str Name, bool Nagar, bool Kontrovki, bool Gidro, bool Deform, bool Magnit, bool LUM, bool Pritirka, str Cover.ShortName, int Details.ID, string CoverForDetail, string Slesarka // 0 1 2 3 4 5 6 7 8 9 10 11 12 OleDbConnection connection = new OleDbConnection(connectionString); OleDbCommand cmd = new OleDbCommand(query, connection); connection.Open(); OleDbDataReader datareader = cmd.ExecuteReader(); while (datareader.Read()) { comboBoxDet.Items.Add(datareader[0]); object[] signatureOfRepair = new object[] { datareader[1], datareader[2], datareader[3], datareader[4], datareader[5], datareader[6], datareader[7], datareader[8], datareader[9], datareader[10], datareader[11], datareader[12] }; numberToSignature.Add(datareader[0].ToString(), signatureOfRepair); // добавляем в словарь сигнатуру ремонта детали с номером datareader[0] } datareader.Close(); connection.Close(); foreach (string num in numberToSignature.Keys) { if (((numberToSignature[num])[0]) != DBNull.Value) { name = (string)((numberToSignature[num])[0]); } else { name = ""; } nagar = (bool)((numberToSignature[num])[1]); zabityKontrovki = (bool)((numberToSignature[num])[2]); gidro = (bool)((numberToSignature[num])[3]); deformedPlaces = (bool)((numberToSignature[num])[4]); magnit = (bool)((numberToSignature[num])[5]); LUM = (bool)((numberToSignature[num])[6]); pritirka = (bool)((numberToSignature[num])[7]); // свой текст в слесарке string myText; if (((numberToSignature[num])[11]) != DBNull.Value) { myText = "1. Удалить налёт, коррозию." + Environment.NewLine + "2. Зачистить забоины, заусенцы." + Environment.NewLine + (string)((numberToSignature[num])[11]); } else { myText = "1. Удалить налёт, коррозию." + Environment.NewLine + "2. Зачистить забоины, заусенцы."; } // покрытие для конкретной детали if (((numberToSignature[num])[8]) != DBNull.Value) { pokritie = (string)((numberToSignature[num])[8]) + " " + ((numberToSignature[num])[10]).ToString(); } else { pokritie = ""; } ID = (int)((numberToSignature[num])[9]); // пошёл техпроцесс List <Operation> listOfOperations = new List <Operation>(); listOfOperations.Add(new Operation("Дефектация", new string[] { "Визуальный контроль на соответствие чертежу", "и отсутствие внешних дефектов" })); if (nagar) { listOfOperations.Add(new Operation("Удаление нагара")); } if (zabityKontrovki) { listOfOperations.Add(new Operation("Координатно-расточная", new string[] { "ИОТ-36.262-2014", "Высверлить остатки контровочной проволоки." })); } if (deformedPlaces) { listOfOperations.Add(new Operation("Фрезерная", new string[] { "ИОТ-36.258-2014", "Вырезать деформированные места согласно чертежу." })); } // формируем слесарку Operation slesarka = new Operation("Слесарная"); List <string> sles = new List <string>() { "ИОТ-36.255-2014" }; List <string> my_Text = myText.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).ToList <string>(); // считываем отдельно строки с текстбокса со своим текстом слесарки string[] slesOsnastka = new string[] { "Надфиль", "80№4", "Шлиф. шкурка", "14AF1000/5C1" }; slesarka.osnastka = slesOsnastka; if (LUM) { sles.AddRange(my_Text); if (name.Contains("Болт")) { sles.Add("3. Подготовка под ЛЮМ1-ОВ"); } string[] slesText = sles.ToArray(); slesarka.text = slesText; listOfOperations.Add(slesarka); //new Operation("Слесарная", new string[] { "ИОТ-36.255-2014", "1. Удалить налёт, коррозию.", "2. Зачистить забоины, заусенцы", "3. Подготовка под ЛЮМ1-ОВ" }, new string[] { "Надфиль", "80№4", "Шлиф. шкурка", "14AF1000/5C1" })); listOfOperations.Add(new Operation("Моечная")); listOfOperations.Add(new Operation("Контрольная ЛЮМ1-ОВ")); } else { if (magnit) { sles.AddRange(my_Text); string[] slesText = sles.ToArray(); slesarka.text = slesText; listOfOperations.Add(slesarka); listOfOperations.Add(new Operation("Моечная")); listOfOperations.Add(new Operation("Контроль магнитопорошковый")); } else { sles.AddRange(my_Text); string[] slesText = sles.ToArray(); slesarka.text = slesText; listOfOperations.Add(slesarka); } } if (pritirka) { List <string> kalibr = new List <string>(); List <string> pritir = new List <string>(); string otpechatok = ""; string width = ""; query = "SELECT Type, Kalibr, Otpechatok, Width, Shifr FROM Pritir INNER JOIN (Shtuzer INNER JOIN Cone ON Shtuzer.ConeID = Cone.ID) ON Pritir.ID = Cone.Type WHERE Shtuzer.DetailID=" + ID.ToString(); connection = new OleDbConnection(connectionString); cmd = new OleDbCommand(query, connection); connection.Open(); datareader = cmd.ExecuteReader(); while (datareader.Read()) { if (!kalibr.Contains(datareader[1].ToString())) { kalibr.Add(datareader[1].ToString()); } if (!otpechatok.Contains(datareader[2].ToString())) { otpechatok += datareader[2].ToString() + "; "; } if (!width.Contains(datareader[3].ToString())) { width += datareader[3].ToString() + "; "; } if (!pritir.Contains(datareader[4].ToString())) { pritir.Add(datareader[4].ToString()); } } datareader.Close(); connection.Close(); string[] oper = new string[] { }; List <string> osnastka = new List <string>(); osnastka.Add("Установка"); osnastka.Add("У6872-1334"); osnastka.Add("Притир"); foreach (string s in pritir) { osnastka.Add(s); } osnastka.Add("Калибр"); foreach (string s in kalibr) { osnastka.Add(s); } osnastka.Add("Шкурка шлиф."); osnastka.Add("14AF1000/5C1"); osnastka.Add("Эталон"); osnastka.Add("У6367-00-9270"); osnastka.Add("Лазурь железная"); string[] _osnastka = osnastka.ToArray(); listOfOperations.Add(new Operation("Слесарная", new string[] { "ИОТ-36.256-2014", "1. Притереть конусную поверхность.", "2. Выполнить проверку конусной поверхности:", "а) равномерно, по всей окружности калибра нанести", "слой краски для калибров до просвечивания металла;", "Толщину нанесённого слоя определять путём", "сопоставления цветов краски на калибре и эталоне.", "Приготовление и нанесение - по инструкции 26/75Т", "б) сохраняя соосность пары конус штуцера - калибр,", "провернуть калибр вокруг его оси на угол 5°...10°", "2...3 раза, прижимая калибр к конусу штуцера", "Т.Т.: отпечаток должен быть в виде кольца без", "разрыва, иметь равномерную ширину, располагаться", "в пределах пояса контакта, огранчиченного разностью", "размеров от торца: " + otpechatok, "Ширина отпечатка: " + width } , _osnastka)); } if (gidro) { listOfOperations.Add(new Operation("Испытание на герметичность (ц.64)")); } if (pokritie != "") { listOfOperations.Add(new Operation("Покрытие", new string[] { pokritie })); } listOfOperations.Add(new Operation("Контрольная")); // сформировали ТП, отправляем в класс технологии BaseTechnology bte = new BaseTechnology(name, num, listOfOperations); numberToBaseTech.Add(num, bte); } foreach (string num in numberToBaseTech.Keys) { numberToBaseTech[num].SaveToDB(); } }