예제 #1
0
        // Заполнение данных для подключения к бд и подключение
        private void connectToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                // Оповещение о несохраненных изменениях, если переподключение
                if (b_Changes == true)
                {
                    SaveToolStripMenuItem_Click(sender, e);
                }
                // Если данные введены, пробуем подключаться
                DataConnection d_DataConnection = new DataConnection();
                if (d_DataConnection.ShowDialog().Equals(DialogResult.OK))
                {
                    //Вызов подключения
                    string s_ConnectString = "";
                    //если проверка подлинности Sql
                    if (d_DataConnection.GetAuthentication.Equals("Authentication SQL Server"))
                    {
                        s_ConnectString = @"Data Source=" + d_DataConnection.GetDataSource + ";Initial Catalog=" + d_DataConnection.GetDatabase + ";Persist Security Info=True;User ID="
                                          + d_DataConnection.GetUsername + ";Password="******"Data Source=" + d_DataConnection.GetDataSource + ";Initial Catalog=" + d_DataConnection.GetDatabase + ";Persist Security Info=True;Integrated Security=true";
                    }

                    // Очистка ресурсов (если переподключение к другой бд, например)
                    if (d_Database != null)
                    {
                        d_Database.Dispose();
                    }

                    // Новое подключение
                    d_Database = new Database(s_ConnectString);

                    // Построение дерева
                    t_StructDepartments.Nodes.Clear();
                    t_StructDepartments.Nodes.Add(StructureTree.BuildTree(d_Database));
                    t_StructDepartments.SelectedNode = t_StructDepartments.TopNode;

                    // Привязка событий к меню Сохранить и Удалить
                    m_Save.Click   += new System.EventHandler(this.SaveToolStripMenuItem_Click);
                    m_Cancel.Click += new System.EventHandler(this.CancelToolStripMenuItem_Click);
                }
            }
            catch (SqlException e_Ex)
            {
                new Notification("A connection to the database has not been established; check that the entered data is correct. The server may be inactive or the database does not exist.").ShowDialog();
                t_StructDepartments.Nodes.Clear();
                if (d_Database != null)
                {
                    d_Database.Dispose();
                }
                d_Table.Columns.Clear();
                l_Element.Text  = "";
                m_Save.Click   -= SaveToolStripMenuItem_Click;
                m_Cancel.Click -= CancelToolStripMenuItem_Click;
                m_Add.DropDownItems.Clear();
                m_Delete.DropDownItems.Clear();
            }
            catch (Exception e_Ex)
            {
                new Notification(e_Ex.Message).ShowDialog();
                t_StructDepartments.Nodes.Clear();
                if (d_Database != null)
                {
                    d_Database.Dispose();
                }
                d_Table.Columns.Clear();
                l_Element.Text  = "";
                m_Save.Click   -= SaveToolStripMenuItem_Click;
                m_Cancel.Click -= CancelToolStripMenuItem_Click;
                m_Add.DropDownItems.Clear();
                m_Delete.DropDownItems.Clear();
            }
        }
예제 #2
0
        // Сохранение изменений в БД
        private void SaveToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                // Если изменений нет, выход
                if (!b_Changes)
                {
                    return;
                }
                // Если пользователь подтвердил сохранение изменений
                if (new Verification("Confirmation of saving changes. Yes/No?").ShowDialog() == DialogResult.Yes)
                {
                    // Удаление столбца Age, если он есть
                    if (d_Table.Columns.Contains("c_Age"))
                    {
                        d_Table.Columns.Remove("c_Age");
                    }
                    // Сохранение изменений в бд
                    string[] s_Tag = t_StructDepartments.SelectedNode.Tag.ToString().Split('|');
                    d_Database.CallMethod("1|update", s_Tag[2]);

                    // Изменения сохранены
                    b_Changes = false;

                    //перестроение дерева и открытие нужного узла
                    List <List <string> > s_CopyNodes = new List <List <string> >();

                    //копирование всей ветки до данного элемента
                    TreeNode t_Node = t_StructDepartments.SelectedNode;
                    do
                    {
                        s_CopyNodes.Add(new List <string>()
                        {
                            t_Node.Name, t_Node.Tag.ToString()
                        });
                        if (t_Node.Parent != null)
                        {
                            t_Node = t_Node.Parent;
                        }
                    } while (t_Node.Parent != null);

                    //обновление дерева
                    t_StructDepartments.Nodes.Clear();
                    t_StructDepartments.Nodes.Add(StructureTree.BuildTree(d_Database));

                    // Выбор того же узла, либо его родителя
                    bool b_Test = false;
                    for (int i = 0; i < s_CopyNodes.Count && !b_Test; i++)
                    {
                        TreeNode[] t_FindNodes = t_StructDepartments.Nodes.Find(s_CopyNodes[i][0], true);
                        for (int j = 0; j < t_FindNodes.Length; j++)
                        {
                            if (t_FindNodes[j].Tag.Equals(s_CopyNodes[i][1]))
                            {
                                t_StructDepartments.SelectedNode = t_FindNodes[j];
                                b_Test = true;
                                break;
                            }
                        }
                    }
                }
                // Если не подтвердил, отмена
                else
                {
                    b_Changes = false;
                    // Вывод информации в таблицу
                    string[] s_Tag = t_StructDepartments.SelectedNode.Tag.ToString().Split('|');
                    Table.OutputInfoInTable(d_Table, s_Tag, d_Database);
                }
            }
            catch (SqlException e_Ex)
            {
                new Notification("Delete the children first!").ShowDialog();
                b_Changes = false;
                // Вывод информации в таблицу
                string[] s_Tag = t_StructDepartments.SelectedNode.Tag.ToString().Split('|');
                Table.OutputInfoInTable(d_Table, s_Tag, d_Database);
            }
        }