/// <summary> /// Устанавливает новый пароль администратора /// </summary> ///<remarks>Изменённая строка соединения с базой записывается в реестр</remarks> private void bntSetPassword_Click(object sender, System.EventArgs e) { //проверяем пароль if ((tbPassword.Text != "") && (fdcr.conStr.IndexOf("Password="******"") && (tbNewPassword.Text == tbNewPasswordConf.Text)) { //меняем пароль в базе if (fdcr.SetPassword(tbPassword.Text, tbNewPassword.Text, "InComeUser") == false) { MessageBox.Show("Не удалось поменять пароль администратора!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); return; } else //сохраняем соединение в реестре if (fdcr.setRegValue("SOFTWARE\\InCome", "connection", fdcr.conStr) == false) { MessageBox.Show("Не удалось записать строку соединения с новым паролем в реестр!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); return; } MessageBox.Show("Пароль был изменён!", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); tbPassword.Text = tbNewPassword.Text = tbNewPasswordConf.Text = ""; btnLog.Visible = true; btnChangePassword.Visible = true; btnCancel.Visible = true; Height = 60; } else { MessageBox.Show("Введён неправильный старый пароль либо новый пароль подтверждён неверно!", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); } }
/// <summary> /// Создаёт новую базу InCome либо только прописывает в реестре строку соединения с базой /// </summary> /// <remarks>Предварительно запускает процедуру автризации пользователя</remarks> private void btnNewDB_Click(object sender, System.EventArgs e) { fmAdminLog adminLog = new fmAdminLog(); if (adminLog.logAdmin(ref dcr) == true) { //если пересоздаем базу if (MessageBox.Show("Вы действительно хотите пересоздать базу InCome (при этом вся существующая информация будет потеряна, административный пароль изменится на стандартный)? Если да, удостоверьтесь, что база в данный момент никем не используется", "Предупреждение", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes) { dcr = new CDbCreator("SOFTWARE\\InCome"); if (dcr.setConStr() != true) //не задана строка соединения { MessageBox.Show("Не была задана строка соединения c MS SQL Server!", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); } else { Cursor = Cursors.WaitCursor; Refresh(); if (dcr.createDB() == false) { MessageBox.Show("Не удалось создать базу InCome на выбранном MS SQL Server. Приложение не может продолжать работать!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); this.Close(); return; } else //пишем в реестр строку соединения и версию { //подменяем пользователя и базу на стандартные int p1 = dcr.conStr.IndexOf("User ID="); int p2 = dcr.conStr.IndexOf("Data Source="); dcr.conStr = dcr.conStr.Replace(dcr.conStr.Substring(p1, p2 - p1), "User ID=InComeUser;Initial Catalog=InCome;"); if ((dcr.setRegValue("SOFTWARE\\InCome", "connection", dcr.conStr) == false) || (dcr.setRegValue("SOFTWARE\\InCome", "sqlver", Convert.ToString((int)dcr.sqlVer)) == false)) { MessageBox.Show("Не удалось записать настройки соединения с базой InCome в реестр. Попробуйте перезапустить приложение и повторить настройку!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); this.Close(); return; } MessageBox.Show("Создана база InCome!", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); } Cursor = Cursors.Default; Refresh(); } } else //если меняем только строку соединения if (MessageBox.Show("Вы хотите изменить строку соединения с базой?", "Предупреждение", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes) { if (dcr.setConStr() != true) //не задана строка соединения { MessageBox.Show("Не была задана строка соединения c MS SQL Server!", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); } else //пишем в реестр строку соединения и версию { //подменяем пользователя и базу на стандартные int p1 = dcr.conStr.IndexOf("User ID="); int p2 = dcr.conStr.IndexOf("Data Source="); dcr.conStr = dcr.conStr.Replace(dcr.conStr.Substring(p1, p2 - p1), "User ID=InComeUser;Initial Catalog=InCome;"); if ((dcr.setRegValue("SOFTWARE\\InCome", "connection", dcr.conStr) == false) || (dcr.setRegValue("SOFTWARE\\InCome", "sqlver", Convert.ToString((int)dcr.sqlVer)) == false)) { MessageBox.Show("Не удалось записать настройки соединения с базой InCome в реестр. Попробуйте перезапустить приложение и повторить настройку!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); this.Close(); } MessageBox.Show("Строка соединения изменена!", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); } } } tbCode.Focus(); }
/// <summary> /// Обработчик события загрузки главной формы приложения /// </summary> /// <remarks>Проверяет реестр на наличие строки соединения с базой. В случае, когда строки соединения нет либо она задана неверно - предлагается проверить наличие базы InCome на сервере: </remarks> /// <remarks> - если базы нет, то создаётся новая</remarks> /// <remarks> - если база есть, то строка соединения записывается в реестр</remarks> private void fmMain_Load(object sender, System.EventArgs e) { dcr = new CDbCreator("SOFTWARE\\InCome"); if ((dcr.conStr == "") || (dcr.sqlVer == SqlVer.UNKNOWN) || (dcr.isDBase(dcr.conStr, dcr.sqlVer, "InCome") != 1)) //запустили впервые либо не задана строка соединения с базой { //задаём строку соединения с таблицей master MS SQL Server MessageBox.Show("Не была найдена строка соединения с базой InCome либо сама база. Возможно приложение запускается в первый раз на данном компьютере. Для определения наличия базы задайте строку соединения с базой master вашего MS SQL Server (при этом вы должны иметь административные права для записи в реестр)!", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); if (dcr.setConStr() != true) //не задана строка соединения { MessageBox.Show("Не была задана строка соединения. Приложение не может продолжать работу!", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); this.Close(); return; } else //задана строка соединения { //проверка, есть ли база int isBase = dcr.isDBase(dcr.conStr, dcr.sqlVer, "InCome"); bool crBase = false; switch (isBase) { case -1: if (MessageBox.Show("Не удалось установить, существует ли уже база InCome на заданном MS SQL Server! Создать базу заново (при этом существующая база, если она есть, будет удалена)? ", "Предупреждение", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Yes) { crBase = true; } break; case 0: if (MessageBox.Show("База InCome на заданном MS SQL Server не найдена! Создать базу заново? ", "Предупреждение", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes) { crBase = true; } else { MessageBox.Show("Приложение не может продолжать работу без базы InCome. Создайте базу на выбранном MS SQL Server либо укажите сервер, где она уже существует!", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); this.Close(); } break; case 1: if (MessageBox.Show("База InCome на заданном MS SQL Server уже существует! ", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == DialogResult.Yes) { crBase = false; } break; } //если нужно создать базу if ((crBase == true) && ((isBase == -1) || (isBase == 0))) { Cursor = Cursors.WaitCursor; Refresh(); if (dcr.createDB() == false) { MessageBox.Show("Не удалось создать базу InCome на выбранном MS SQL Server. Приложение не может продолжать работать!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); this.Close(); return; } else //пишем в реестр строку соединения и версию { //подменяем пользователя и базу на стандартные int p1 = dcr.conStr.IndexOf("User ID="); int p2 = dcr.conStr.IndexOf("Data Source="); dcr.conStr = dcr.conStr.Replace(dcr.conStr.Substring(p1, p2 - p1), "User ID=InComeUser;Initial Catalog=InCome;"); if ((dcr.setRegValue("SOFTWARE\\InCome", "connection", dcr.conStr) == false) || (dcr.setRegValue("SOFTWARE\\InCome", "sqlver", Convert.ToString((int)dcr.sqlVer)) == false)) { MessageBox.Show("Не удалось записать настройки соединения с базой InCome в реестр. Попробуйте перезапустить приложение и повторить настройку!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); this.Close(); return; } MessageBox.Show("Создана база InCome!", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); } Cursor = Cursors.Default; Refresh(); } //если нужно только задать строку соединения и записать её в реестр else { MessageBox.Show("Для продолжения работы укажите строку соединения с базой InCome для пользователя InComeUser (при этом вы должны иметь административные права для записи в реестр)!", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); if (dcr.setConStr() != true) //не задана строка соединения { MessageBox.Show("Не была задана строка соединения. Приложение не может продолжать работу!", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); this.Close(); return; } if (CDbCreator.getUserCon(dcr.conStr).ToUpper() != "INCOMEUSER") { MessageBox.Show("Задан отличный от InComeUser пользователь базы InCome. Приложение не может продолжать работу!", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); this.Close(); return; } if ((dcr.setRegValue("SOFTWARE\\InCome", "connection", dcr.conStr) == false) || (dcr.setRegValue("SOFTWARE\\InCome", "sqlver", Convert.ToString((int)dcr.sqlVer)) == false)) { MessageBox.Show("Не удалось записать настройки соединения с базой InCome в реестр. Попробуйте перезапустить приложение и повторить настройку!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); this.Close(); return; } MessageBox.Show("Была задана строка соединения с базой InCome!", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); Refresh(); } } } refreshEmployees(); }