Beispiel #1
0
        private void tsbDown_Click(object sender, EventArgs e)
        {
            DataRow curr_row = GreenLight.Tools.FindCurrentRow(dgTableConfig);
            int     curr_id  = (int)curr_row["TableConfigID"];

            //Получим следующий номер
            object next_id_obj = DBFunctions.ReadScalarFromDB("SELECT TableConfigID From tableconfig WHERE TableConfigID > " + Convert.ToString(curr_row["TableConfigID"]) +
                                                              " AND TableDBName = '" + curr_row["TableDBName"] + "' ORDER BY TableConfigID LIMIT 1");

            int next_id;

            if (next_id_obj != null)
            {
                next_id = (int)next_id_obj;
            }
            else
            {
                return;
            }


            DBFunctions.ExecuteScript("CALL SwapLinesInTableConfig(" + Convert.ToString(curr_id) + "," + Convert.ToString(next_id) + ")");

            int rw  = dgTableConfig.CurrentCell.RowIndex;
            int col = dgTableConfig.CurrentCell.ColumnIndex;

            FillDataGrid();

            dgTableConfig.CurrentCell = dgTableConfig[col, rw + 1];
        }
        private void tsbEdit_Click(object sender, EventArgs e)
        {
            DataRow current_row = GreenLight.Tools.FindCurrentRow(dgTableData);

            if (current_row == null)
            {
                return;
            }
            var tre = new Forms.TableRecordEditorNew(cbTables.Text, current_row, HaveWriteRights());

            if (tre.ShowDialog() == DialogResult.OK)
            {
                bool row_added = false;
                if (current_row.RowState == DataRowState.Added)
                {
                    row_added = true;
                }
                DBFunctions.WriteToDB(dt_table_data, ts);

                if (row_added)
                {
                    current_row["ID"] = Convert.ToInt32(DBFunctions.ReadScalarFromDB("SELECT LAST_INSERT_ID()"));
                }
            }
            else
            {
                dt_table_data.RejectChanges();
            }
        }
        public UniversalQuestionaryOfferSelect(int c_id, DataTable dt)
        {
            InitializeComponent();

            client_id = c_id;

            dt_offers = new DataTable();

            dt_offers.Columns.Add("Selected", Type.GetType("System.Boolean"));
            dt_offers.Columns.Add("ID", Type.GetType("System.Int32"));
            dt_offers.Columns.Add("Bank_LK", Type.GetType("System.String"));
            dt_offers.Columns.Add("Programma", Type.GetType("System.String"));

            foreach (DataRow row in dt.Rows)
            {
                DataRow newrow = dt_offers.Rows.Add();
                newrow["Selected"] = false;
                newrow["ID"]       = row["ID"];
                //2014_11_08
                //newrow["Bank_LK"] = row["Банк,ЛК(ф)(ю)"];
                //newrow["Programma"] = row["Программа(ф)(ю)"];
                Dictionary <string, object> parameters = new Dictionary <string, object>();
                parameters.Add("id", row["ID"]);
                newrow["Bank_LK"]   = DBFunctions.ReadScalarFromDB("SELECT bank_lk FROM table_credprogr WHERE id=@id", parameters);
                newrow["Programma"] = DBFunctions.ReadScalarFromDB("SELECT programma FROM table_credprogr WHERE id=@id", parameters);
                //2014_11_08
            }
        }
        void SaveElement()
        {
            if (tvReference.SelectedNode == null)
            {
                return;
            }

            foreach (DataColumn dc in dt_elem.Columns)
            {
                try
                {
                    if (dc.DataType.Name == "String")
                    {
                        dt_elem.Rows[0][dc] = edit_controls[dc.ColumnName].Text;
                    }
                    else if (dc.DataType.Name == "Int32")
                    {
                        dt_elem.Rows[0][dc] = Convert.ToInt32(edit_controls[dc.ColumnName].Text);
                    }
                    else if (dc.DataType.Name == "Single")
                    {
                        dt_elem.Rows[0][dc] = Convert.ToSingle(edit_controls[dc.ColumnName].Text);
                    }
                }
                catch (Exception) { };
            }

            DBFunctions.WriteToDB(dt_elem, ref_table_struct);

            if (tvReference.SelectedNode.Tag == null)
            {
                tvReference.SelectedNode.Tag = Convert.ToInt32(DBFunctions.ReadScalarFromDB("SELECT LAST_INSERT_ID()"));

                //Добавим этот элемент во все мультирефы, в которых выбран его родитель
                Dictionary <string, object> parameters = new Dictionary <string, object>();
                parameters.Add("ref_db_name", reference_db_name);
                DataTable dtMultirefFields = DBFunctions.ReadFromDB("SELECT tabledbname,columndbname FROM tableconfig WHERE referencemultiselect=1 and columnreference=@ref_db_name", parameters);

                foreach (DataRow multirefFieldRow in dtMultirefFields.Rows)
                {
                    parameters.Clear();
                    parameters.Add("id_string", "{" + Convert.ToString(tvReference.SelectedNode.Tag) + "}");
                    parameters.Add("id", dt_elem.Rows[0]["ParentID"]);
                    string query = @"UPDATE table_" + ((string)multirefFieldRow["tabledbname"]) + @" SET " + ((string)multirefFieldRow["columndbname"]) +
                                   @" = CONCAT(" + ((string)multirefFieldRow["columndbname"]) + @",@id_string) 
                        WHERE POSITION(CONCAT('{',(SELECT parentid FROM ref_data_" + reference_db_name + @" WHERE id=@id),'}') IN " + ((string)multirefFieldRow["columndbname"]) + ") > 0";

                    DBFunctions.ExecuteCommand(query, parameters);
                }
            }

            tvReference.SelectedNode.Text = (string)dt_elem.Rows[0]["RefName"];

            new_node = null;
        }
Beispiel #5
0
        private void update_activity_timer_Tick(object sender, EventArgs e)
        {
            //Проверим не пора ли нам завершить работу
            bool shut_down_needed = Convert.ToBoolean(DBFunctions.ReadScalarFromDB("SELECT shutdown FROM force_shutdown"));

            if (shut_down_needed)
            {
                Close();
            }

            UpdateSessionInfo();
        }
Beispiel #6
0
        private void UpdateSessionInfo()
        {
            DBFunctions.ExecuteScript("DELETE FROM active_sessions WHERE SessionID = " + Convert.ToString(Session_ID));

            DateTime curr_datetime = (DateTime)DBFunctions.ReadScalarFromDB("SELECT current_timestamp()");

            DBFunctions.ExecuteScript("INSERT INTO active_sessions SET SessionID = " + Convert.ToString(Session_ID) + ","
                                      + "Computer_Name='" + Environment.MachineName + "',"
                                      + "DomainUser='******',"
                                      + "LastActivity='" + curr_datetime.ToString("s") + "',"
                                      + "SessionStart='" + session_start.ToString("s") + "'");
        }
Beispiel #7
0
        public static void RecreateRefStatements()
        {
            DataTable References = DBFunctions.ReadFromDB("SELECT DISTINCT ReferenceDBName FROM referencesconfig");

            foreach (DataRow row in References.Rows)
            {
                //Создадим хранимые процедуры и триггеры
                string ref_create_script = (string)DBFunctions.ReadScalarFromDB("SELECT script FROM scripts WHERE script_name = 'Reference_Create'");

                ref_create_script = ref_create_script.Replace("[RefDBName]", (string)row["ReferenceDBName"]);

                DBFunctions.ExecuteScript(ref_create_script);
            }
        }
        public DataTable SelectOffers()
        {
            string query_text = (string)DBFunctions.ReadScalarFromDB("SELECT script FROM scripts WHERE script_name = 'OfferSelect'");

            query_text = query_text.Replace("[ClientID]", Convert.ToString(ClientID));

            DataTable dt;

            try
            {
                dt = DBFunctions.ReadFromDB(query_text);
            }
            catch (Exception e)
            {
                System.Windows.Forms.MessageBox.Show("Ошибка в условии. " + e.Message, "Ошибка", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                return(null);
            }

            return(dt);
        }
        private void FillDataGrid()
        {
            dgFilter.AutoGenerateColumns = false;
            dgFilter.Columns.Clear();
            dt_filter = new DataTable();
            dt_filter.Columns.Add("ID вопроса", Type.GetType("System.Int32"));
            DataGridViewTextBoxColumn dgc = new DataGridViewTextBoxColumn();

            dgc.Name             = "ID вопроса";
            dgc.DataPropertyName = "ID вопроса";
            dgc.Frozen           = true;
            dgFilter.Columns.Add(dgc);
            dt_filter.Columns.Add("Текст вопроса", Type.GetType("System.String"));
            dgc                  = new DataGridViewTextBoxColumn();
            dgc.Name             = "Текст вопроса";
            dgc.DataPropertyName = "Текст вопроса";
            dgc.Frozen           = true;
            dgc.Width            = dgc.Width * 4;
            dgFilter.Columns.Add(dgc);

            string ColumnDBName = (string)DBFunctions.ReadScalarFromDB("SELECT filter_name_field FROM questionary WHERE id = " + Convert.ToString(questionary_id));

            string query_text = "SELECT id, " + ColumnDBName + " AS name FROM table_credprogr";

            if (tscbFields.SelectedIndex != -1 && (string)(tscbFields.Items[tscbFields.SelectedIndex]) != " ")
            {
                query_text += " WHERE " +
                              (string)DBFunctions.ReadScalarFromDB("SELECT ColumnDBName FROM tableconfig WHERE ColumnName = '" + tscbFields.Items[tscbFields.SelectedIndex] + "'") +
                              " LIKE '%" + tstbOtbor.Text + "%'";
            }

            DataTable dt_programs = DBFunctions.ReadFromDB(query_text);

            foreach (DataRow program_row in dt_programs.Rows)
            {
                DataColumn clm = dt_filter.Columns.Add(Convert.ToString(program_row["id"]), Type.GetType("System.Boolean"));

                DataGridViewCheckBoxColumn dg_cb_clmn = new DataGridViewCheckBoxColumn();
                dg_cb_clmn.Name             = (string)program_row["name"] + " (" + Convert.ToString(program_row["id"]) + ")";
                dg_cb_clmn.DataPropertyName = Convert.ToString(program_row["id"]);
                dg_cb_clmn.TrueValue        = true;
                dg_cb_clmn.FalseValue       = false;
                dgFilter.Columns.Add(dg_cb_clmn);
            }

            dgFilter.DataSource = dt_filter;


            DataTable dt_questions = DBFunctions.ReadFromDB("SELECT question_id,question_text FROM questionary_questions WHERE questionary_id = " + Convert.ToString(questionary_id));

            DataTable dt_filter_pairs = DBFunctions.ReadFromDB("SELECT CONCAT(question_id,'-',filter_id) FROM questionary_filter WHERE questionary_id = " + Convert.ToString(questionary_id));

            DataColumn[] keys = { dt_filter_pairs.Columns[0] };

            dt_filter_pairs.PrimaryKey = keys;

            foreach (DataRow q_row in dt_questions.Rows)
            {
                DataRow new_row = dt_filter.Rows.Add(new object[] { q_row["question_id"], q_row["question_text"] });
                foreach (DataColumn q_column in dt_filter.Columns)
                {
                    if (dt_filter.Columns.IndexOf(q_column) < 2)
                    {
                        continue;
                    }
                    if (dt_filter_pairs.Rows.Find(Convert.ToString(q_row["question_id"]) + "-" + q_column.ColumnName) != null)
                    {
                        new_row[q_column] = true;
                    }
                    else
                    {
                        new_row[q_column] = false;
                    }
                }
            }
            dt_filter.AcceptChanges();
        }
Beispiel #10
0
        private void LoadData()
        {
            questionary_id            = (int)DBFunctions.ReadScalarFromDB("SELECT id FROM questionary WHERE Name = '" + questionary_names[cbQuestionaries.SelectedIndex] + "'");
            questionary_table_db_name = (string)DBFunctions.ReadScalarFromDB("SELECT TableDBName FROM questionary WHERE Name = '" + questionary_names[cbQuestionaries.SelectedIndex] + "'");
            questionary_use_filter    = (bool)DBFunctions.ReadScalarFromDB("SELECT use_filter FROM questionary WHERE Name = '" + questionary_names[cbQuestionaries.SelectedIndex] + "'");

            tsbEditFilter.Enabled = questionary_use_filter;

            dt_questions = DBFunctions.ReadFromDB("SELECT * FROM questionary_questions WHERE questionary_id = " + Convert.ToString(questionary_id));

            dt_questions.TableNewRow += new DataTableNewRowEventHandler(dt_TableNewRow);

            dgQuestions.Columns.Clear();
            dgQuestions.DataSource = dt_questions;

            dgQuestions.Columns["question_id"].HeaderText                  = "ID";
            dgQuestions.Columns["questionary_id"].Visible                  = false;
            dgQuestions.Columns["question_text"].HeaderText                = "Текст вопроса";
            dgQuestions.Columns["question_variation"].HeaderText           = "Разветвление";
            dgQuestions.Columns["question_type"].HeaderText                = "Тип";
            dgQuestions.Columns["question_next"].HeaderText                = "ID след. вопроса";
            dgQuestions.Columns["question_dest_column_db_name"].HeaderText = "Поле таблицы";
            dgQuestions.Columns["question_hint"].HeaderText                = "Подсказка";

            dgQuestions.Columns["question_input_type"].HeaderText   = "Тип элемента ввода(веб)";
            dgQuestions.Columns["question_web_position"].HeaderText = "Положение на странице(веб)";

            DataGridViewComboBoxColumn column_type = new DataGridViewComboBoxColumn();

            column_type.Items.Add("Строка50");
            column_type.Items.Add("Строка300");
            column_type.Items.Add("Число с плавающей точкой");
            column_type.Items.Add("Справочник");
            column_type.Items.Add("Целое число");
            column_type.Items.Add("Формула");
            column_type.Width            = 200;
            column_type.FlatStyle        = FlatStyle.Flat;
            column_type.Name             = "Тип";
            column_type.DataPropertyName = "question_type";
            dgQuestions.Columns.Remove("question_type");
            dgQuestions.Columns.Add(column_type);

            DataGridViewComboBoxColumn column_ref = new DataGridViewComboBoxColumn();
            DataTable reference_list = DBFunctions.ReadFromDB("SELECT DISTINCT ReferenceDBName FROM referencesconfig");

            foreach (DataRow ref_row in reference_list.Rows)
            {
                column_ref.Items.Add(ref_row["ReferenceDBName"]);
            }
            column_ref.Width            = 200;
            column_ref.FlatStyle        = FlatStyle.Flat;
            column_ref.Name             = "Имя справочника";
            column_ref.DataPropertyName = "question_reference";
            dgQuestions.Columns.Remove("question_reference");
            dgQuestions.Columns.Add(column_ref);

            DataGridViewComboBoxColumn column_table_column = new DataGridViewComboBoxColumn();
            DataTable columns_list = DBFunctions.ReadFromDB("SELECT DISTINCT ColumnDBName FROM tableconfig WHERE ReferenceMultiSelect = 0 AND TableDBName = '" +
                                                            questionary_table_db_name + "' ORDER BY ColumnDBName");

            foreach (DataRow col_row in columns_list.Rows)
            {
                column_table_column.Items.Add(col_row["ColumnDBName"]);
            }
            column_table_column.Width            = 200;
            column_table_column.FlatStyle        = FlatStyle.Flat;
            column_table_column.Name             = "Поле таблицы";
            column_table_column.DataPropertyName = "question_dest_column_db_name";
            dgQuestions.Columns.Remove("question_dest_column_db_name");
            dgQuestions.Columns.Add(column_table_column);
        }
Beispiel #11
0
        public Questionary(int t_r_id = -1, string q_name = "Анкета клиента", int [] filt_ids = null)
        {
            InitializeComponent();

            questionary_name = q_name;

            questionary_id            = (int)DBFunctions.ReadScalarFromDB("SELECT id FROM questionary WHERE Name = '" + questionary_name + "'");
            questionary_table_db_name = (string)DBFunctions.ReadScalarFromDB("SELECT TableDBName FROM questionary WHERE Name = '" + questionary_name + "'");
            current_question_id       = (int)DBFunctions.ReadScalarFromDB("SELECT first_question_id FROM questionary WHERE Name = '" + questionary_name + "'");

            questionary_use_filter = (bool)DBFunctions.ReadScalarFromDB("SELECT use_filter FROM questionary WHERE Name = '" + questionary_name + "'");

            if (questionary_use_filter)
            {
                filter_ids = (int[])filt_ids.Clone();
                string query_text = "SELECT DISTINCT question_id FROM questionary_filter WHERE questionary_id=@q_id AND filter_id IN (";
                foreach (int filter_id in filter_ids)
                {
                    query_text += filter_id.ToString() + ",";
                }

                query_text = query_text.TrimEnd(',') + ")";

                Dictionary <string, object> parameters = new Dictionary <string, object>();
                parameters.Add("q_id", questionary_id);

                dt_filter_allowed_questions = DBFunctions.ReadFromDB(query_text, parameters);

                //Дойдем до первого разрешенного вопроса
                while (current_question_id != -1)
                {
                    if (dt_filter_allowed_questions.Select("question_id = " + Convert.ToString(current_question_id)).Length > 0)
                    {
                        break;
                    }

                    parameters = new Dictionary <string, object>();
                    parameters.Add("questionary_id", questionary_id);
                    parameters.Add("q_id", current_question_id);
                    object new_question_id = DBFunctions.ReadScalarFromDB("SELECT question_next FROM questionary_questions WHERE questionary_id=@questionary_id AND question_id = @q_id", parameters);
                    if (new_question_id == DBNull.Value)
                    {
                        current_question_id = -1;
                    }
                    else
                    {
                        current_question_id = (int)new_question_id;
                    }
                }
            }

            question_history = new List <QuestionInfo>();

            table_record_id = t_r_id;
            //Подгрузим инфо о записи таблицы или пустую строку
            ts            = new TableStruct();
            dt_table_data = Tables.GetTableWODataGrid(questionary_table_db_name, ref ts, table_record_id);
            if (dt_table_data.Rows.Count > 0)
            {
                row_table_record = dt_table_data.Rows[0];
            }
            else
            {
                row_table_record = dt_table_data.NewRow();
                dt_table_data.Rows.Add(row_table_record);
            }
        }
Beispiel #12
0
        private void btnNext_Click(object sender, EventArgs e)
        {
            bool is_variation = (bool)row_question["question_variation"];


            object next_question = DBNull.Value;

            //Если анкета с фильтром, то щелкаем вопросы, пока не найдем подходящий
            if (!questionary_use_filter)
            {
                if (is_variation && tbAnswer.Tag != null)
                {
                    next_question = DBFunctions.ReadScalarFromDB("SELECT answer_next_question_id FROM questionary_answers WHERE question_id = " + current_question_id +
                                                                 " AND answer = " + tbAnswer.Tag);
                }
                ;

                if (next_question == DBNull.Value)
                {
                    next_question = row_question["question_next"];
                }
            }
            else
            {
                object answerTag = tbAnswer.Tag;

                if (is_variation && tbAnswer.Tag != null)
                {
                    next_question = DBFunctions.ReadScalarFromDB("SELECT answer_next_question_id FROM questionary_answers WHERE question_id = " + current_question_id +
                                                                 " AND answer = " + tbAnswer.Tag);
                }
                ;

                if (next_question == DBNull.Value || next_question == null)
                {
                    next_question = row_question["question_next"];
                }

                Dictionary <string, object> parameters;

                while (next_question != DBNull.Value)
                {
                    if (dt_filter_allowed_questions.Select("question_id = " + Convert.ToString(next_question)).Length > 0)
                    {
                        break;
                    }

                    parameters = new Dictionary <string, object>();
                    parameters.Add("questionary_id", questionary_id);
                    parameters.Add("q_id", next_question);
                    next_question = DBFunctions.ReadScalarFromDB("SELECT question_next FROM questionary_questions WHERE questionary_id=@questionary_id AND question_id = @q_id", parameters);
                }
            }

            QuestionInfo qi = new QuestionInfo();

            qi.question_id   = current_question_id;
            qi.answer_text   = tbAnswer.Text;
            qi.question_text = lbQuestionText.Text;
            try
            {
                qi.answer_id = (int)tbAnswer.Tag;
            }
            catch (Exception) { };

            if ((string)row_question["question_type"] == "Справочник")
            {
                row_table_record[(string)row_question["question_dest_column_db_name"]] = qi.answer_id;
            }
            else
            {
                row_table_record[(string)row_question["question_dest_column_db_name"]] = qi.answer_text;
            }

            question_history.Add(qi);

            UpdateQuestionHistory();

            if (next_question == DBNull.Value)
            {
                //Завершаем анкетирование, пишем в базу
                DBFunctions.WriteToDB(dt_table_data, ts);
                Close();
                return;
            }

            current_question_id = (int)next_question;

            LoadQuestion();
        }
        static void UpdateReferenceStructure(string ref_db_name)
        {
            //Получим требуемую структуру
            DataTable neededStructure = DBFunctions.ReadFromDB("SELECT * FROM referencesconfig WHERE ReferenceDBName = '" + ref_db_name + "'");

            if (neededStructure.Rows.Count == 0)
            {
                System.Windows.Forms.MessageBox.Show("Неверное наименование справочника.", "Ошибка", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                return;
            }

            bool hierarchical = Convert.ToBoolean(neededStructure.Rows[0]["Hierarchycal"]);

            //Проверим есть ли такая таблица в БД
            bool ref_data_exists      = Convert.ToBoolean(DBFunctions.ReadFromDB("Show tables like 'ref_data_" + ref_db_name + "'").Rows.Count);
            bool ref_hierarchy_exists = Convert.ToBoolean(DBFunctions.ReadFromDB("Show tables like 'ref_hierarchy_" + ref_db_name + "'").Rows.Count);

            if ((hierarchical && ref_data_exists && ref_hierarchy_exists) || //Иерархический, есть обе таблицы
                (!hierarchical && ref_data_exists && !ref_hierarchy_exists)  //Не иерархический, есть одна таблица
                )
            {
                //Всё ок, проверим соответствие состава колонок
                DataTable CurrentStrurture = DBFunctions.ReadFromDB("SHOW COLUMNS FROM ref_data_" + ref_db_name);

                //Создаем и меняем строки
                foreach (DataRow row in neededStructure.Rows)
                {
                    //Ищем колонку
                    DataRow[] foundRows = CurrentStrurture.Select("Field = '" + row["ColumnDBName_Old"] + "'");
                    if (foundRows.Length == 0)
                    {
                        //Добавляем колонку
                        DBFunctions.ExecuteCommand("ALTER TABLE ref_data_" + ref_db_name + " ADD `" + row["ColumnDBName"] + "` " + ConvertTypeToSQL((string)row["ColumnType"]));
                    }
                    else
                    {
                        //Проверяем соответствие имени
                        if ((string)foundRows[0]["Field"] != (string)row["ColumnDBName"])
                        {
                            //Переименовываем колонку
                            try
                            {
                                DBFunctions.ExecuteCommand("ALTER TABLE `ref_data_" + ref_db_name + "` CHANGE `" + row["ColumnDBName_Old"] + "` `" + row["ColumnDBName"] + "` " + ConvertTypeToSQL((string)row["ColumnType"]));
                                row["ColumnDBName_Old"] = row["ColumnDBName"];
                            }
                            catch (Exception)
                            {
                                System.Windows.Forms.MessageBox.Show("Невозможно изменить тип столбца.", "Ошибка", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                            }
                        }
                        else if ((string)foundRows[0]["Type"] != ConvertTypeToSQL((string)row["ColumnType"]))
                        {
                            //Меняем тип
                            try
                            {
                                DBFunctions.ExecuteCommand("ALTER TABLE `ref_data_" + ref_db_name + "` MODIFY `" + row["ColumnDBName"] + "` " + ConvertTypeToSQL((string)row["ColumnType"]));
                            }
                            catch (Exception)
                            {
                                System.Windows.Forms.MessageBox.Show("Невозможно изменить тип столбца.", "Ошибка", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                            }
                        }
                    }
                }

                //Внесем изменения конфигурационную таблицу
                if (neededStructure.GetChanges() != null)
                {
                    TableStruct ts = new TableStruct();
                    ts.TableName = "referencesconfig";
                    string[] p_keys = { "ReferenceConfigID" };
                    ts.p_keys = p_keys;
                    string[] columns = { "ColumnDBName_Old" };
                    ts.columns = columns;

                    DBFunctions.WriteToDB(neededStructure, ts);
                }

                //Удалим лишние колонки
                foreach (DataRow row in CurrentStrurture.Rows)
                {
                    if ((string)row["Field"] == "id" || (string)row["Field"] == "ID")
                    {
                        continue;
                    }
                    if ((string)row["Field"] == "parentid" || (string)row["Field"] == "ParentID")
                    {
                        continue;
                    }
                    DataRow[] foundRows = neededStructure.Select("ColumnDBName = '" + row["Field"] + "'");
                    if (foundRows.Length == 0)
                    {
                        //Удаляем колонку
                        DBFunctions.ExecuteCommand("ALTER TABLE ref_data_" + ref_db_name + " DROP `" + row["Field"] + "`");
                    }
                }

                //Создадим хранимые процедуры и триггеры
                string ref_create_script = (string)DBFunctions.ReadScalarFromDB("SELECT script FROM scripts WHERE script_name = 'Reference_Create'");

                ref_create_script = ref_create_script.Replace("[RefDBName]", ref_db_name);

                DBFunctions.ExecuteScript(ref_create_script);

                return;
            }

            if (ref_data_exists || ref_hierarchy_exists)
            {
                if (System.Windows.Forms.MessageBox.Show("Сменился тип справочника " + ref_db_name + " данные справочника будут удалены. Продолжить?", "Вопрос", System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.No)
                {
                    return;
                }
            }

            //Удалим таблицы
            if (ref_data_exists)
            {
                DBFunctions.ExecuteCommand("DROP TABLE `ref_data_" + ref_db_name + "`");
            }

            if (ref_hierarchy_exists)
            {
                DBFunctions.ExecuteCommand("DROP TABLE `ref_hierarchy_" + ref_db_name + "`");
            }

            //Создадим новые таблицы
            //Таблица с данными
            string CommandText = "CREATE TABLE `ref_data_" + ref_db_name + "` (";

            CommandText += "`ID` int(11) NOT NULL AUTO_INCREMENT";
            CommandText += ",`ParentID` int(11) DEFAULT 0";


            foreach (DataRow row in neededStructure.Rows)
            {
                if (row["ColumnType"] == System.DBNull.Value)
                {
                    continue;
                }
                string field_type = ConvertTypeToSQL((string)row["ColumnType"]);
                if (field_type != null)
                {
                    CommandText += ",`" + row["ColumnDBName"] + "` " + field_type + " DEFAULT NULL";
                }
            }

            CommandText += ", PRIMARY KEY (`ID`)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8";
            DBFunctions.ExecuteCommand(CommandText);

            //Таблица с иерархией
            if (hierarchical)
            {
                CommandText  = "CREATE TABLE `ref_hierarchy_" + ref_db_name + "` (";
                CommandText += "`ElemID` int(11) NOT NULL";
                CommandText += ",`ParentID` int(11) NOT NULL";
                CommandText += ",`Level` int(11) NOT NULL";
                CommandText += ", PRIMARY KEY (`ElemID`,`ParentID`,`Level`)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8";
                DBFunctions.ExecuteCommand(CommandText);
            }

            //Создадим хранимые процедуры и триггеры
            string ref_create_script_inner = (string)DBFunctions.ReadScalarFromDB("SELECT script FROM scripts WHERE script_name = 'Reference_Create'");

            ref_create_script_inner = ref_create_script_inner.Replace("[RefDBName]", ref_db_name);

            DBFunctions.ExecuteScript(ref_create_script_inner);
        }
Beispiel #14
0
        private void MainForm_Load(object sender, EventArgs e)
        {
            //Загрузим параметры, проверим валидность
            LocalParameters.LoadParameters();

            string parameters_error_text = "Необходимо заполнить следующие параметры: " + Environment.NewLine;
            bool   parameters_error      = false;

            if (LocalParameters.MySQLServer == "")
            {
                parameters_error       = true;
                parameters_error_text += "   - Сервер MySQL" + Environment.NewLine;
            }

            if (LocalParameters.MySQLDatabase == "")
            {
                parameters_error       = true;
                parameters_error_text += "   - База данных MySQL" + Environment.NewLine;
            }

            if (LocalParameters.MySQLUser == "")
            {
                parameters_error       = true;
                parameters_error_text += "   - Логин MySQL" + Environment.NewLine;
            }

            if (LocalParameters.MySQLPassword == "")
            {
                parameters_error       = true;
                parameters_error_text += "   - Пароль MySQL" + Environment.NewLine;
            }

            if (parameters_error)
            {
                MessageBox.Show(parameters_error_text, "Необходимо заполнить параметры.");
                LocalParameters.EditParameters();
            }

            if (LocalParameters.MySQLServer == "" ||
                LocalParameters.MySQLDatabase == "" ||
                LocalParameters.MySQLUser == "" ||
                LocalParameters.MySQLPassword == "")
            {
                MessageBox.Show("Не все обязательные параметры были заполнены. Работа программы будет завершена.");
                Close();
            }

            DBFunctions.m_frm = this;

            update_activity_timer = new Timer();

            DBFunctions.login_from_parameters = true;
            DBFunctions.Init();

            Auth.AuthForm af = new Auth.AuthForm();
            if (af.ShowDialog() != System.Windows.Forms.DialogResult.OK)
            {
                Close();
                return;
            }

            UpdateVisibility();

            //Если включен режим завершения работы, то не дадим пользователю запустить систему
            bool shut_down_needed = Convert.ToBoolean(DBFunctions.ReadScalarFromDB("SELECT shutdown FROM force_shutdown"));

            if (shut_down_needed)
            {
                ShowAutoClosingMessageBox("На сервере установлен запрет на запуск программы. Программа будет закрыта", "Запрет на запуск");//, MessageBoxButtons.OK, MessageBoxIcon.Error);
                Close();
            }

            UpdateVisibility();

            session_start = (DateTime)DBFunctions.ReadScalarFromDB("SELECT current_timestamp()");
            Session_ID    = (int)DBFunctions.ReadScalarFromDB("SELECT new_session_id()");

            UpdateSessionInfo();

            update_activity_timer.Tick    += new EventHandler(update_activity_timer_Tick);
            update_activity_timer.Interval = 20000;
            update_activity_timer.Start();
        }
Beispiel #15
0
 public static string GetRefName(string ref_db_name, int id)
 {
     return((string)DBFunctions.ReadScalarFromDB("SELECT RefName FROM ref_data_" + ref_db_name + " WHERE ID = " + Convert.ToString(id)));
 }
        private void StringReplaseSettings_Load(object sender, EventArgs e)
        {
            //Получим наименование ключевого поля
            try
            {
                key_field_db_name = DBFunctions.GetGlobalParameter("StringReplaceKeyField");
            }
            catch (Exception err)
            {
                System.Windows.Forms.MessageBox.Show(err.Message, "Ошибка", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                Close();
            }

            //Теперь пользовательское наименование для размещения в label на тулстрипе
            Dictionary <string, object> parameters = new Dictionary <string, object>();

            parameters.Add("coldbname", key_field_db_name);
            tslKeyFieldName.Text = (string)DBFunctions.ReadScalarFromDB("SELECT ColumnName FROM tableconfig WHERE ColumnDBName = @coldbname", parameters);

            //Получим все возможные значения ключевого поля
            cbKeyFieldValues.Items.Clear();
            key_field_values = new ArrayList();
            DataTable dt_key_field_values = DBFunctions.ReadFromDB("SELECT DISTINCT " + key_field_db_name + " AS key_field FROM table_credprogr ORDER BY " + key_field_db_name);

            foreach (DataRow kf_row in dt_key_field_values.Rows)
            {
                cbKeyFieldValues.Items.Add(kf_row["key_field"]);
                key_field_values.Add(kf_row["key_field"]);
            }

            //Заполним справочники
            reference_db_names = new ArrayList();

            DataTable dt_references = DBFunctions.ReadFromDB("SELECT referencesconfig.ReferenceDBName,referencesconfig.ReferenceName FROM referencesconfig ORDER BY referencename");

            foreach (DataRow ref_row in dt_references.Rows)
            {
                cbReferenceNames.Items.Add(ref_row["ReferenceName"]);
                reference_db_names.Add(ref_row["ReferenceDBName"]);
            }

            dgReplaceStrings.AutoGenerateColumns = false;
            dgReplaceStrings.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;

            DataGridViewTextBoxColumn ref_id_column = new DataGridViewTextBoxColumn();

            ref_id_column.Name             = "ref_id";
            ref_id_column.HeaderText       = "ID элемента справочника";
            ref_id_column.DataPropertyName = "table_reference_id";
            ref_id_column.Visible          = false;
            dgReplaceStrings.Columns.Add(ref_id_column);

            DataGridViewComboBoxColumn ref_name_column = new DataGridViewComboBoxColumn();

            ref_name_column.Name             = "ref_name";
            ref_name_column.HeaderText       = "Элемент справочника";
            ref_name_column.DataPropertyName = "table_reference_value";
            dgReplaceStrings.Columns.Add(ref_name_column);

            DataGridViewTextBoxColumn replace_string_column = new DataGridViewTextBoxColumn();

            replace_string_column.Name             = "replace_string";
            replace_string_column.HeaderText       = "Строка для замены";
            replace_string_column.DataPropertyName = "replace_string";
            dgReplaceStrings.Columns.Add(replace_string_column);

            dt_replaces = new DataTable();

            dgReplaceStrings.DataSource = dt_replaces;

            cbReferenceNames.SelectedIndex = 0;
            cbKeyFieldValues.SelectedIndex = 0;

            TestRights();
        }