Example #1
0
        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();
            }
        }
Example #2
0
        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);
        }