Ejemplo n.º 1
0
 /// <summary>
 /// Иницирует процесс проверки административных прав
 /// </summary>
 /// <param name="dcr">Описывает строку соединения и тип версию SQL-сервера</param>
 /// <returns></returns>
 public bool logAdmin(ref CDbCreator dcr)
 {
     fdcr = dcr;
     ShowDialog();
     dcr = fdcr;
     return(isLog);
 }
Ejemplo n.º 2
0
        /// <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();
        }
Ejemplo n.º 3
0
        /// <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();
        }