private void RemoveQuestion_Click(object sender, EventArgs e) { if (quest.Conditions.Count != 0) { for (int i = quest.Conditions.Count - 1; i >= 0; i--) { quest.Conditions.ElementAt(i).Attribute.Conditions.Remove(quest.Conditions.ElementAt(i)); int condId = quest.Conditions.ElementAt(i).Id; quest.Conditions.ElementAt(i).Question.Conditions.Remove(quest.Conditions.ElementAt(i)); cont.ConditionSet.Remove(cont.ConditionSet.Find(condId)); } } if (quest.Attributes.Count != 0) { for (int i = quest.Attributes.Count - 1; i >= 0; i--) { Attribute atr = quest.Attributes.ElementAt(i); atr.Questions.Remove(quest); quest.Attributes.Remove(atr); } } cont.QuestionSet.Remove(quest); cont.SaveChanges(); Hide(); FrMain fM = new FrMain(); fM.currentDBS = currentDB; fM.ShowDialog(); Close(); //cond.Question.Conditions. }
private void BackButton_Click(object sender, EventArgs e) { Hide(); FrMain CancelBut = new FrMain(); CancelBut.currentDBS = currentDB; CancelBut.ShowDialog(); Close(); }
private void CancelButton_Click(object sender, EventArgs e) { //переход на главную форму Hide(); FrMain main = new FrMain(); main.currentDBS = dBP.Id; main.ShowDialog(); Close(); }
//Возврат на главную рабочую страницу private void CancelButton_Click(object sender, EventArgs e) { Hide(); FrMain CancelButton = new FrMain(); CancelButton.currentDBS = DBP.Id; CancelButton.ShowDialog(); Close(); }
private void CancelBut_Click(object sender, EventArgs e) { Hide(); FrMain CancelBut = new FrMain(); CancelBut.currentDBS = ent.DataBaseProject.Id; CancelBut.ShowDialog(); Close(); }
//возвращение на главную форму private void BackButton_Click(object sender, EventArgs e) { Hide(); FrMain main = new FrMain(); main.currentDBS = curProjId; main.ShowDialog(); Close(); }
private void CancelButton_Click(object sender, EventArgs e) { //возвращение на главную форму Hide(); FrMain CancelButton = new FrMain(); CancelButton.currentDBS = DBP.Id; CancelButton.ShowDialog(); Close(); }
private void SaveButton_Click(object sender, EventArgs e) //кнопка сохранения атрибутов сущности { //атрибутов нет if (dataGridViewATT.Rows.Count == 0) { MessageBox.Show("Задайте атрибуты сущности!", "Ошибка!"); } else { //проверка на наличие первичных ключей int kolvo = 0; for (int i = 0; i < dataGridViewATT.RowCount; i++) { if ((string)dataGridViewATT.Rows[i].Cells[3].Value == "Первичный ключ") { kolvo++; } } //проверка, если первичных ключей нет или их более 1 if (kolvo == 0 || kolvo > 1) { MessageBox.Show("Для данной сущности первичный ключ задан некорректно - не задан вообще или несколько атрибутов имеют спецификатор 'Первичный ключ'. Пожалуйста, задайте данное значение для какого-либо одного атрибута сущности.", "Ошибка!"); TypeAttribute.Text = ""; } else { //обход строк таблиц for (int i = 0; i < dataGridViewATT.RowCount; i++) { //создание арибутов Attribute at = new Attribute { Name = dataGridViewATT.Rows[i].Cells[0].Value.ToString(), Description = dataGridViewATT.Rows[i].Cells[1].Value.ToString(), Type = dataGridViewATT.Rows[i].Cells[2].Value.ToString(), Specification = dataGridViewATT.Rows[i].Cells[3].Value.ToString(), }; // foreach (Entity en in DBP.Entities) //добавление атрибутов в текущую сущность { if (en.Name == comboBox1.Items[comboBox1.SelectedIndex].ToString()) { en.Attributes.Add(at); break; } } //cont.EntitySet.Find(((Entity)comboBox1.SelectedValue).Id).Attributes.Add(at); cont.SaveChanges(); } //переход на главную форму Hide(); FrMain SaveButton = new FrMain(); SaveButton.currentDBS = DBP.Id; SaveButton.ShowDialog(); Close(); } } }
//не полное решение, не работает, если у сущности есть формы или запросы private void butDeleteEntity_Click(object sender, EventArgs e) { //Поиск сущности foreach (Entity en in cont.EntitySet) { if (en.Name == NameEntityCB.Text) { ent = en; } } DataBaseProject dbs = ent.DataBaseProject; //Удаление значений атрибутов сущности foreach (Forma f in ent.Forms) { foreach (ControlElement ce in f.ControlElements) { } } foreach (AttributeValue atv in cont.AttributeValueSet) { if (atv.Attribute.Entity == ent) { cont.AttributeValueSet.Remove(atv); } } //Удаление связей сущности foreach (Relation rel in cont.RelationSet) { if (rel.Source.Entity == ent || rel.Target.Entity == ent) { cont.RelationSet.Remove(rel); } } //Удаление атрибутов сущности foreach (Attribute at in cont.AttributeSet) { if (at.Entity == ent) { cont.AttributeSet.Remove(at); } } //Удаление сущности cont.EntitySet.Remove(ent); cont.SaveChanges(); Hide(); FrMain butDeleteEntity = new FrMain(); butDeleteEntity.currentDBS = dbs.Id; butDeleteEntity.ShowDialog(); Close(); }
private void OpenProject_Click(object sender, EventArgs e) { //открытие данных, связанных с проектом if (ProjectsList.Items.Count != 0) //проверяем количество существующих в бд проектов { DataBaseProject dBS = new DataBaseProject(); foreach (DataBaseProject dbs in cont.DataBaseProjectSet) //обход проектов в бд { if (dbs == ProjectsList.Items[ProjectsList.SelectedIndex]) { dBS = dbs; //запоминается выбранный проект } } Hide(); FrMain fM = new FrMain(); fM.currentDBS = dBS.Id; //передаем ид текущего проекта fM.ShowDialog(); //переход на главную форму Close(); } else { MessageBox.Show("Нет ни одного проекта в БД"); } }
private void CreateForma_Click(object sender, EventArgs e) { //создание формы if (dGVAttributes.Rows.Count != 0) { if (FormNameTB.Text != "") { bool inDb = false; foreach (Entity en in dBP.Entities) { foreach (Forma f in en.Forms) { if (f.Name == FormNameTB.Text) { inDb = true; //есть форма с таким названием } } } if (!inDb) { //формы с таким названием нет Forma newForm = new Forma(); //создание новой формы newForm.Name = FormNameTB.Text; newForm.Description = DescriptionFormTB.Text; selectedEvent.Forms.Add(newForm); selectedEntity.Forms.Add(newForm); TypeControlElement label = new TypeControlElement(); TypeControlElement textB = new TypeControlElement(); TypeControlElement comboB = new TypeControlElement(); TypeControlElement checkB = new TypeControlElement(); foreach (TypeControlElement tce in cont.TypeControlElementSet) { if (tce.Name == "Label") { label = tce; } if (tce.Name == "TextBox") { textB = tce; } if (tce.Name == "ComboBox") { comboB = tce; } if (tce.Name == "CheckBox") { checkB = tce; } } int y = 70; foreach (DataGridViewRow dgvr in dGVAttributes.Rows) { //создание новых контрольных элементов на форме int x = 10; switch (selectedEvent.Name) { case "Добавление": case "Изменение": case "Удаление": foreach (Attribute at in selectedEntity.Attributes) { if (dgvr.Cells[0].Value == at.Name) { //добавление элемента label ControlElement cEL = new ControlElement { Name = at.Name, Enabled = false, PositionX = x, PositionY = y, Length = 80, Width = 15 }; newForm.ControlElements.Add(cEL); label.ControlElements.Add(cEL); at.ControlElements.Add(cEL); x += 100; switch (at.Specification) //обход спецификаций атрибутов { case "Первичный ключ": //добавление textbox ControlElement cETE = new ControlElement { Name = at.Name, Enabled = false, PositionX = x, PositionY = y, Length = 15, Width = 15 }; newForm.ControlElements.Add(cETE); textB.ControlElements.Add(cETE); at.ControlElements.Add(cETE); break; case "Скалярное поле": if (at.Type != "bool") { //добавление textbox ControlElement cET = new ControlElement { Name = at.Name, Enabled = false, PositionX = x, PositionY = y, Length = 120, Width = 15 }; newForm.ControlElements.Add(cET); textB.ControlElements.Add(cET); at.ControlElements.Add(cET); } else { //добавление checkbox ControlElement cECh = new ControlElement { Name = at.Name, Enabled = false, PositionX = x, PositionY = y, Length = 15, Width = 15 }; newForm.ControlElements.Add(cECh); checkB.ControlElements.Add(cECh); at.ControlElements.Add(cECh); } break; case "Внешний ключ": //добавление combobox ControlElement cEC = new ControlElement { Name = at.Name, Enabled = false, PositionX = x, PositionY = y, Length = 80, Width = 15 }; newForm.ControlElements.Add(cEC); comboB.ControlElements.Add(cEC); at.ControlElements.Add(cEC); break; } y += 30; } } break; case "Поиск": foreach (Attribute at in selectedEntity.Attributes) { if (dgvr.Cells[0].Value == at.Name) { ControlElement cEL = new ControlElement { Name = at.Name, Enabled = false, PositionX = x, PositionY = y, Length = 80, Width = 15 }; newForm.ControlElements.Add(cEL); label.ControlElements.Add(cEL); at.ControlElements.Add(cEL); x += 100; ControlElement cEC = new ControlElement { Name = at.Name, Enabled = true, PositionX = x, PositionY = y, Length = 80, Width = 15 }; newForm.ControlElements.Add(cEC); comboB.ControlElements.Add(cEC); at.ControlElements.Add(cEC); y += 30; } } break; case "Просмотр": foreach (Attribute at in selectedEntity.Attributes) { if (dgvr.Cells[0].Value == at.Name) { ControlElement cEL = new ControlElement { Name = at.Name, Enabled = false, PositionX = x, PositionY = y, Length = 80, Width = 15 }; newForm.ControlElements.Add(cEL); label.ControlElements.Add(cEL); at.ControlElements.Add(cEL); x += 100; switch (at.Specification) { case "Первичный ключ": ControlElement cETE = new ControlElement { Name = at.Name, Enabled = false, PositionX = x, PositionY = y, Length = 15, Width = 15 }; newForm.ControlElements.Add(cETE); textB.ControlElements.Add(cETE); at.ControlElements.Add(cETE); break; case "Скалярное свойство": if (at.Type != "bool") { ControlElement cET = new ControlElement { Name = at.Name, Enabled = false, PositionX = x, PositionY = y, Length = 120, Width = 15 }; newForm.ControlElements.Add(cET); textB.ControlElements.Add(cET); at.ControlElements.Add(cET); } else { ControlElement cECh = new ControlElement { Name = at.Name, Enabled = false, PositionX = x, PositionY = y, Length = 15, Width = 15 }; newForm.ControlElements.Add(cECh); checkB.ControlElements.Add(cECh); at.ControlElements.Add(cECh); } break; case "Внешний ключ": ControlElement cEC = new ControlElement { Name = at.Name, Enabled = false, PositionX = x, PositionY = y, Length = 80, Width = 15 }; newForm.ControlElements.Add(cEC); comboB.ControlElements.Add(cEC); at.ControlElements.Add(cEC); break; } y += 30; } } break; } } cont.SaveChanges(); Hide(); FrMain main = new FrMain(); main.currentDBS = dBP.Id; main.ShowDialog(); Close(); } else { MessageBox.Show("В базе есть форма с таким названием"); } } else { MessageBox.Show("Не введено название формы."); } } else { MessageBox.Show("Не выбраны атрибуты? на основе которых будет создаваться форма"); } }
//генерация отчета не работает из-за того, что не создается Excel.Application (метод //класса Report, SaveReport private void ReportGeneration_Click(object sender, EventArgs e) { //генерация отчетов if (ReportName.Text != "") { bool inDb = false; foreach (Entity en in dBP.Entities) { foreach (Attribute at in en.Attributes) { foreach (Question qu in at.Questions) { foreach (Report rt in qu.Reports) if (rt.Name == ReportName.Text) { inDb = true; break; } } if (inDb) break; } if (inDb) break; } if (!inDb) //в текущем проекте нет ни одного отчета с таким же именем { //запоминается путь до файла string pathToXML = Environment.CurrentDirectory + "\\" + dBP.Id.ToString() + "." + ReportName.Text + "xlsx"; Report newRt = new Report { Name = ReportName.Text, Description = pathToXML, Format = FormatList.Text }; currentQuest.Reports.Add(newRt); cont.SaveChanges(); if (newRt.SaveReport(dBP.Id, pathToXML)) //создание отчета { //cont.SaveChanges(); Hide(); FrMain main = new FrMain(); main.currentDBS = dBP.Id; main.ShowDialog(); Close(); } else { currentQuest.Reports.Remove(newRt); cont.ReportSet.Remove(newRt); cont.SaveChanges(); newRt = new Report(); MessageBox.Show("Запрос пустой"); } } else MessageBox.Show("Отчет с таким названием уже есть в данном проекте"); } else MessageBox.Show("Название отчета не введено"); }
private void SaveQuestion_Click(object sender, EventArgs e) { //сохранение запросов if (QuestName.Text != "") { if (dGVConditions.Rows.Count != 0) { bool inDB = false; foreach (Entity en in dBP.Entities) { foreach (Attribute at in en.Attributes) { foreach (Question que in at.Questions) { if (que.Name == QuestName.Text) { inDB = true; } } } } if (!inDB) //запросы с подобным именем есть в текущем проекте { Question quest = new Question { Name = QuestName.Text, Description = QuestDesc.Text }; cont.QuestionSet.Add(quest); //добавление запроса в бд Entity ent = new Entity(); foreach (DataGridViewRow dgvr in dGVAttributes.Rows) { foreach (Entity en in dBP.Entities) { if (en.Name == dgvr.Cells[4].Value.ToString()) { ent = en; break; } } foreach (Attribute at in ent.Attributes) { if (at.Name == dgvr.Cells[0].Value.ToString() && at.Description == dgvr.Cells[1].Value.ToString() && at.Type == dgvr.Cells[2].Value.ToString() && at.Specification == dgvr.Cells[3].Value.ToString()) { at.Questions.Add(quest); quest.Attributes.Add(at); //запросы связываются с атрибутами } } } foreach (DataGridViewRow dgvr in dGVConditions.Rows) { foreach (Entity en in cont.EntitySet) { if (en.Name == dgvr.Cells[2].Value.ToString()) { ent = en; } } Attribute atr = new Attribute(); foreach (Attribute at in ent.Attributes) { if (at.Name == dgvr.Cells[3].Value.ToString()) { atr = at; } } Condition cond = new Condition { Operation = dgvr.Cells[0].Value.ToString(), Not = (bool)dgvr.Cells[1].Value, Compare = dgvr.Cells[4].Value.ToString(), Value = dgvr.Cells[5].Value.ToString() }; quest.Conditions.Add(cond); //запросы связываются с условиями atr.Conditions.Add(cond); } cont.SaveChanges(); Hide(); FrMain main = new FrMain(); main.currentDBS = dBP.Id; main.ShowDialog(); Close(); } else { MessageBox.Show("Запрос с таким названием уже есть в базе данных"); } } else { MessageBox.Show("Нет ни одного условия"); } } else { MessageBox.Show("Не введено название запроса"); } }
//нажатие на кнопку добавления связей private void BAddRelation_Click(object sender, EventArgs e) { //название связи не введено или не выбраны сущности и кратности if (NameTBRelation.TextLength == 0 || ComboBoxEntity1.Text == "" || ComboBoxEntity2.Text == "" || ComboBoxK.Text == "") { MessageBox.Show("Нельзя создать связь. Пожалуйста, введите ее название, а также выберите сущность и кратность.", "Ошибка!"); } else { bool flag = false; foreach (Relation r in cont.RelationSet) //проверка существующих связей { if (r.Name == NameTBRelation.Text) { flag = true; } } if (flag == true) { MessageBox.Show("Связь с таким именем уже имеется в системе. Пожалуйста, придумайте другое название.", "Ошибка!"); } else { if (TextBAtt1.TextLength == 0) { MessageBox.Show("Нельзя добавить атрибут. Пожалуйста, введите его название, описание (необязательно), тип данных и тип атрибута.", "Ошибка!"); TextBAtt1.Clear(); TextBAttDesc1.Clear(); } else { bool flag1 = false; foreach (Attribute at in cont.AttributeSet) { if (at.Entity.Name == ComboBoxEntity1.Text) { if (at.Name == TextBAtt1.Text) { flag1 = true; } } } if (flag1 == true) { MessageBox.Show("Данная сущность уже имеет атрибут с таким именем. Пожалуйста, придумайте другое название.", "Ошибка!"); TextBAtt1.Clear(); TextBAttDesc1.Clear(); } else { //для разных кратностей разные действия switch (ComboBoxK.Items[ComboBoxK.SelectedIndex].ToString()) { //добавляем атрибуты case "0..1:0..1": case "0..1:1": case "0..1:*": case ":0..1": case "1:1": case "1:*": case "*:0..1": case "*:1": //добавление в бд новых атрибутов, которые связываются с сущностями Attribute atr1 = new Attribute { Name = TextBAtt1.Text, Description = TextBAttDesc1.Text, Type = "int", Specification = "Внешний ключ" }; ent1.Attributes.Add(atr1); Attribute atr2 = new Attribute { Name = TextBAtt2.Text, Description = TextBAttDesc2.Text, Type = "int", Specification = "Внешний ключ" }; ent2.Attributes.Add(atr2); //добавление связи Relation rel = new Relation { Name = NameTBRelation.Text, Description = DescTBRelation.Text, Multiplicity = ComboBoxK.Text //Source = atr1, //Target = atr2 }; //атрибуты связываются с созданной связью atr1.RelToTarget.Add(rel); atr2.RelFromSource.Add(rel); cont.SaveChanges(); break; case "*:*": //создание связи многие со многими //создаются новые атрибуты для выбранных сущностей Attribute atr11 = new Attribute { Name = TextBAtt1.Text, Description = TextBAttDesc1.Text, Type = "int", Specification = "Внешний ключ" }; ent1.Attributes.Add(atr11); Attribute atr21 = new Attribute { Name = TextBAtt2.Text, Description = TextBAttDesc2.Text, Type = "int", Specification = "Внешний ключ" }; ent2.Attributes.Add(atr21); //создается промежуточная сущность с ид первой и второй сущности Entity ent3 = new Entity { Name = ent1.Name + ent2.Name, Description = "Таблица, связывающая таблицы " + ent1.Name + " и " + ent2.Name + " в связи *:*." }; //создаются атрибуты для промежуточной сущности Attribute atr31 = new Attribute { Name = TextBAtt1.Text, Description = TextBAttDesc1.Text, Type = "int", Specification = "Внешний ключ" }; ent3.Attributes.Add(atr31); Attribute atr32 = new Attribute { Name = TextBAtt2.Text, Description = TextBAttDesc2.Text, Type = "int", Specification = "Внешний ключ" }; ent3.Attributes.Add(atr32); //создаются связи, которые связывают выбранные сущности с промежуточной связью Relation rel1 = new Relation { Name = NameTBRelation.Text, Description = DescTBRelation.Text, Multiplicity = "1:*" //Source = atr1, //Target = atr2 }; DBP.Entities.Add(ent3); atr11.RelToTarget.Add(rel1); atr31.RelFromSource.Add(rel1); Relation rel2 = new Relation { Name = NameTBRelation.Text, Description = DescTBRelation.Text, Multiplicity = "1:*" //Source = atr1, //Target = atr2 }; atr21.RelToTarget.Add(rel2); atr32.RelFromSource.Add(rel2); cont.SaveChanges(); break; } //после добавления возвращаемся на главную форму Hide(); FrMain AddR = new FrMain(); AddR.currentDBS = DBP.Id; AddR.ShowDialog(); Close(); } } } } }