private void ChangeAddCycle(object sender, EventArgs e) { if (status == rowStatus.ADD && form.NumberOfSelectedRows == 1) { status = rowStatus.CHANGE; form.ChangeAddCirculation("Изменение", form.ValuesToInsert); } else if (status == rowStatus.CHANGE && form.NumberOfSelectedRows == 1) { status = rowStatus.CHANGE; form.ChangeAddCirculation("Изменение", form.ValuesToInsert); } else if (status == rowStatus.CHANGE && form.NumberOfSelectedRows < 1) { status = rowStatus.ADD; var ar = new ArrayList(); for (int i = 0; i < numberOfColumns; i++) { ar.Add(""); } form.ChangeAddCirculation("Добавление", ar); } //Ошибочные случаи else if (status == rowStatus.ADD && form.NumberOfSelectedRows != 1) { form.ShowChangeOrDeleteError(); } else if (status == rowStatus.CHANGE && form.NumberOfSelectedRows > 1) { form.ShowChangeOrDeleteError(); } }
private void TableChanged(object sender, EventArgs e) { //Из парсера взять правила по типам и зависимости для конкретной таблицы //отправить эти правила в форму columnReferencesTableNameKeys = new Dictionary <string, Dictionary <string, int> >(); columnReferencesTableKeyNames = new Dictionary <string, Dictionary <int, string> >(); status = rowStatus.ADD; string table = form.CurrentTable; columnNames = parser.GetDataBaseRules()[dataBase.GetTranslationToEng(table)].Select(x => dataBase.GetTranslationToRus(x.Key)).ToArray(); string[] columnTypes = parser.GetDataBaseRules()[dataBase.GetTranslationToEng(table)].Select(x => x.Value).ToArray(); numberOfColumns = columnNames.Length; var ss = parser.GetReferences()[dataBase.GetTranslationToEng(table)]; //Получаем названия внешних таблиц string[] refColumns = parser.GetReferences()[dataBase.GetTranslationToEng(table)].Select(x => dataBase.GetTranslationToRus(x.Key)).ToArray(); string[] outerTables = parser.GetReferences()[dataBase.GetTranslationToEng(table)].Select(x => dataBase.GetTranslationToRus(x.Value)).ToArray(); if (outerTables.Length > 0) { //Для каждой связной таблицы получаем айдишники и их текстовые представления для наглядности for (int i = 0; i < refColumns.Length; i++) { Dictionary <string, int> nameKeys = dataBase.IdAndRelevantNames(outerTables[i], parser.GetTablesColumnNames(dataBase.GetTranslationToEng(outerTables[i])).Select(x => dataBase.GetTranslationToRus(x)).ToArray()); Dictionary <int, string> keyNames = dataBase.IdAndRelevantNameReverse(outerTables[i], parser.GetTablesColumnNames(dataBase.GetTranslationToEng(outerTables[i])).Select(x => dataBase.GetTranslationToRus(x)).ToArray()); columnReferencesTableNameKeys.Add(refColumns[i], nameKeys); columnReferencesTableKeyNames.Add(refColumns[i], keyNames); } } form.GenerateInputFields(columnNames, columnTypes, columnReferencesTableNameKeys); DataTable s = dataBase.GetTableData(table); form.SetColumnNames(columnNames); form.SetData(s, columnReferencesTableKeyNames); var ar = new ArrayList(); for (int i = 0; i < numberOfColumns; i++) { ar.Add(""); } form.SetChangeDeleteRules(dataBase.GetRule(table)); form.ChangeAddCirculation("Добавление", ar); }