Пример #1
0
        public void reloadTables()
        {
            classesOfMetods cls = new classesOfMetods();

            cls.reloadInfo();
            loadTables();
        }
        public void FiledEditListControl_ControlRemoved(object sender, ControlEventArgs e)
        {
            if (SyncController.HasRight(id))
            {
                save_data();
            }
            classesOfMetods cl = new classesOfMetods();

            cl.reloadInfo();
        }
Пример #3
0
        private void button3_Click(object sender, EventArgs e)
        {
            List <itemObjOrdered> listt2 = new List <itemObjOrdered>(listt);

            gf.SaveGroup((comboBox1.SelectedItem as itemObj).Id_o, (comboBox1.SelectedItem as itemObj).Name_o, textBox2.Text);
            foreach (itemObjOrdered it in listt)
            {
                bool del = true;
                foreach (itemObjOrdered it2 in listBox1.Items)
                {
                    if (it.Id_o == it2.Id_o)
                    {
                        del = false;
                        break;
                    }
                }
                if (del)
                {
                    gf.DeleteTableFromGroup((comboBox1.SelectedItem as itemObj).Id_o, it.Id_o);
                }
            }

            foreach (itemObjOrdered it in listBox1.Items)
            {
                bool add = true;
                foreach (itemObjOrdered it2 in listt)
                {
                    if (it.Id_o == it2.Id_o)
                    {
                        add = false;
                        break;
                    }
                }
                if (add)
                {
                    gf.MoveTableToGroup((comboBox1.SelectedItem as itemObj).Id_o, it.Id_o);
                }
            }
            for (int i = 0; i < listBox1.Items.Count; i++)
            {
                if ((listBox1.Items[i] as itemObjOrdered).order != i)
                {
                    (listBox1.Items[i] as itemObjOrdered).order = i;
                    gf.SetOrderTableInGroup((comboBox1.SelectedItem as itemObj).Id_o, (listBox1.Items[i] as itemObjOrdered).Id_o, (listBox1.Items[i] as itemObjOrdered).order);
                }
            }
            comboBox1_SelectedIndexChanged(this, null);

            var cls = new classesOfMetods();

            Program.tablegroups_info = cls.loadTablesGroupsInfo();
            Program.mainFrm1.layerItemsView1.RefreshLayers();
        }
Пример #4
0
        private void button2_Click(object sender, EventArgs e)
        {
            if (listBox1.SelectedItem != null)
            {
                int idTable   = -1;
                int typetable = -1;
                foreach (tablesInfo ti in Program.tables_info)
                {
                    if (ti.idTable == ((itemObj)listBox1.SelectedItem).Id_o)
                    {
                        idTable   = ti.idTable;
                        typetable = ti.type;
                        break;
                    }
                }
                List <itemObj> list_tables = new List <itemObj>();
                if (typetable == 3) // если интервал
                {
                    SqlWork sqlCmd = new SqlWork();
                    sqlCmd.sql = "SELECT id_table,name_db FROM " + Program.scheme + ".table_field_info WHERE ref_table=" + idTable;
                    sqlCmd.Execute(false);
                    while (sqlCmd.CanRead())
                    {
                        list_tables.Add(new itemObj(sqlCmd.GetInt32(0), sqlCmd.GetString(1), sqlCmd.GetString(1)));
                    }
                    sqlCmd.Close();
                }

                DialogResult dr = DialogResult.Cancel;
                switch (typetable)
                {
                case 1:
                    dr = QuestionDelete.ShowDialog(Rekod.Properties.Resources.TLE_DeletingLayer,
                                                   Rekod.Properties.Resources.TLE_DeletingLayerAsk,
                                                   Rekod.Properties.Resources.FELC_Forever);
                    break;

                case 2:
                    dr = QuestionDelete.ShowDialog(Rekod.Properties.Resources.TLE_DeletingCatalog,
                                                   Rekod.Properties.Resources.TLE_Attention + "\n" + Rekod.Properties.Resources.TLE_DeletingCatalogAsk,
                                                   Rekod.Properties.Resources.FELC_Forever);
                    break;

                case 3:
                    dr = QuestionDelete.ShowDialog(Rekod.Properties.Resources.TLE_DeletingInterval,
                                                   Rekod.Properties.Resources.TLE_Attention + "\n" + Rekod.Properties.Resources.TLE_DeletingIntervalAsk,
                                                   Rekod.Properties.Resources.FELC_Forever, SystemIcons.Warning);
                    break;

                case 4:
                    dr = QuestionDelete.ShowDialog(Rekod.Properties.Resources.TLE_DeletingTable,
                                                   Rekod.Properties.Resources.TLE_Attention + "\n" + Rekod.Properties.Resources.TLE_DeletingTableAsk,
                                                   Rekod.Properties.Resources.FELC_Forever);
                    break;
                }
                if (dr != DialogResult.Cancel)
                {
                    SqlWork sqlCmd = new SqlWork();
                    foreach (itemObj io in list_tables)
                    {
                        sqlCmd     = new SqlWork();
                        sqlCmd.sql = "UPDATE " + Program.scheme + ".table_info SET default_style=true,style_field='style' WHERE id=" + io.Id_o + " AND style_field='" + io.Name_o + "'";
                        sqlCmd.Execute(true);
                        sqlCmd.Close();
                    }
                    // удалить все ссылки на связанные таблицы
                    sqlCmd     = new SqlWork();
                    sqlCmd.sql = String.Format("UPDATE {0}.table_field_info SET ref_table=null, ref_field=null, ref_field_name=null, is_reference=false, is_interval = FALSE WHERE ref_table={1};", Program.scheme, idTable);
                    sqlCmd.Execute(true);
                    sqlCmd.Close();
                    sqlCmd     = new SqlWork();
                    sqlCmd.sql = "SELECT " + Program.scheme + ".delete_table(" + ((itemObj)listBox1.SelectedItem).Id_o + "," + (dr == DialogResult.Yes).ToString() + ")";
                    sqlCmd.Execute(true);
                    sqlCmd.Close();
                    classesOfMetods.DeleteLayerInMap(((itemObj)listBox1.SelectedItem).Id_o);
                    try
                    {
                        SyncController.DeleteTable(((itemObj)listBox1.SelectedItem).Id_o, false);
                    }
                    catch (Exception ex)
                    {
                        Classes.workLogFile.writeLogFile(ex, false, true);
                    }
                    classesOfMetods cls = new classesOfMetods();

                    cls.reloadInfo();
                    loadTables();

                    MessageBox.Show(((dr == DialogResult.Yes) ? Rekod.Properties.Resources.TLE_DeleteForever : Rekod.Properties.Resources.TLE_DeleteNoForever));
                    Control[] cntrs = parent.Controls.Find("CloseButton", true);
                    if (cntrs.Length == 1)
                    {
                        ((CloseButton)cntrs[0]).CloseBox(e);
                    }
                }
            }
        }
Пример #5
0
        private void button2_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "" && textBox2.Text.Trim() != "" && textBox1.Text.IndexOf(" ") < 0 && textBox3.Text.Trim() != "")
            {
                if (comboBox1.SelectedItem != null)
                {
                    var ti = classesOfMetods.getTableInfo(this.idT);
                    if (!upd)
                    {
                        try
                        {
                            bool   existField = false;
                            string nameField  = textBox1.Text;
                            int    countt     = 0;
                            var    fieldNames = new List <string>();

                            if (classesOfMetods.isReservedName(nameField))
                            {
                                MessageBox.Show(Rekod.Properties.Resources.AEAtr_ReservedName +
                                                "\n" + Rekod.Properties.Resources.AEAtr_NotSaveField +
                                                "\n" + Rekod.Properties.Resources.AEAtr_RenameInDB,
                                                Rekod.Properties.Resources.AEAtr_CreatingAttribute, MessageBoxButtons.OK, MessageBoxIcon.Information);
                                return;
                            }

                            using (SqlWork sqlCmd = new SqlWork())
                            {
                                sqlCmd.sql = String.Format("SELECT column_name FROM information_schema.columns WHERE table_schema = '{0}' AND table_name = '{1}';",
                                                           ti.nameSheme, ti.nameDB);
                                sqlCmd.ExecuteReader();
                                while (sqlCmd.CanRead())
                                {
                                    fieldNames.Add(sqlCmd.GetString(0));
                                }
                                sqlCmd.Close();//считали все поля таблицы с базы и занеесли в лист
                                while (fieldNames.Contains(nameField))
                                {
                                    existField = true;
                                    countt++;
                                    nameField = textBox1.Text + countt.ToString();//если такое имя уже существует пробуем другое имя
                                }
                                if (existField)
                                {
                                    DialogResult dr = MessageBox.Show(String.Format(Rekod.Properties.Resources.AEAtr_SaveRenameField, nameField),
                                                                      Rekod.Properties.Resources.AEAtr_CreatingAttribute, MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
                                    if (dr == DialogResult.Cancel)
                                    {
                                        MessageBox.Show(Rekod.Properties.Resources.AEAtr_NotSaveField +
                                                        "\n" + Rekod.Properties.Resources.AEAtr_RenameInDB,
                                                        Rekod.Properties.Resources.AEAtr_CreatingAttribute, MessageBoxButtons.OK, MessageBoxIcon.Information);
                                        return;
                                    }
                                }
                            }

                            int?id_f = null;
                            using (SqlWork sqlCmd = new SqlWork())
                            {
                                sqlCmd.sql = "SELECT " + Program.scheme + ".create_field(" + idT.ToString() + ",@field_name_db,@field_name_map," + ((itemObj)comboBox1.SelectedItem).Id_o.ToString() + ",@field_name_lable)";
                                var parms = new Params[]
                                {
                                    new Params
                                    {
                                        paramName = "@field_name_db",
                                        typeData  = NpgsqlTypes.NpgsqlDbType.Text,
                                        value     = nameField
                                    },
                                    new Params
                                    {
                                        paramName = "@field_name_map",
                                        typeData  = NpgsqlTypes.NpgsqlDbType.Text,
                                        value     = textBox2.Text
                                    },
                                    new Params
                                    {
                                        paramName = "@field_name_lable",
                                        typeData  = NpgsqlTypes.NpgsqlDbType.Text,
                                        value     = textBox3.Text
                                    }
                                };

                                sqlCmd.ExecuteReader(parms);
                                if (sqlCmd.CanRead())
                                {
                                    id_f = sqlCmd.GetInt32(0);
                                }
                            }
                            if (id_f != null)
                            {
                                using (SqlWork sqlCmd = new SqlWork())
                                {
                                    sqlCmd.sql = "UPDATE " + Program.scheme + ".table_field_info " +
                                                 "SET read_only = " + checkBox1.Checked.ToString() + ", visible = " +
                                                 !checkBoxHidden.Checked +
                                                 " WHERE id = " + id_f.ToString();
                                    sqlCmd.Execute(false);
                                }
                            }

                            var cls = new classesOfMetods();
                            cls.reloadInfo();
                            field_edit.loadFields(idT);
                            parent.CloseModalElem();
                        }
                        catch (Exception ex)
                        {
                            Rekod.Classes.workLogFile.writeLogFile(Rekod.Properties.Resources.AEAtr_ErrorCreateAtrField + " " +
                                                                   Rekod.Properties.Resources.DGBH_ErrorHeader + ": " + ex.Message, true, true);
                        }
                    }
                    else
                    {
                        if (checkBoxHidden.Checked)
                        {
                            SqlWork sqlCmd = new SqlWork();
                            sqlCmd.sql = "SELECT COUNT(*) FROM " + Program.scheme + ".table_field_info WHERE id_table=" + idT +
                                         " AND visible=true";
                            if (sqlCmd.Execute(false))
                            {
                                if (sqlCmd.CanRead())
                                {
                                    if (sqlCmd.GetInt64(0) == 1)
                                    {
                                        MessageBox.Show(Rekod.Properties.Resources.AEAtr_ErrorAllFieldHiden,
                                                        Rekod.Properties.Resources.AEAtr_TableAttributesHeader, MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                                        checkBoxHidden.Checked = false;
                                    }
                                }
                            }
                            sqlCmd.Close();
                        }
                        SqlWork sqlCmd2 = new SqlWork();
                        sqlCmd2.sql = "UPDATE " + Program.scheme + ".table_field_info " +
                                      "SET name_map =@field_name_map, name_lable =@field_name_lable, read_only = @read_only, visible = @visible WHERE id = " + id.ToString();

                        Params[] parms = new Params[4];
                        parms[0]           = new Params();
                        parms[0].paramName = "@field_name_map";
                        parms[0].typeData  = NpgsqlTypes.NpgsqlDbType.Text;
                        parms[0].value     = textBox2.Text;

                        parms[1]           = new Params();
                        parms[1].paramName = "@field_name_lable";
                        parms[1].typeData  = NpgsqlTypes.NpgsqlDbType.Text;
                        parms[1].value     = textBox3.Text;

                        parms[2]           = new Params();
                        parms[2].paramName = "@read_only";
                        parms[2].typeData  = NpgsqlTypes.NpgsqlDbType.Boolean;
                        parms[2].value     = checkBox1.Checked;

                        parms[3]           = new Params();
                        parms[3].paramName = "@visible";
                        parms[3].typeData  = NpgsqlTypes.NpgsqlDbType.Boolean;
                        parms[3].value     = !checkBoxHidden.Checked;

                        sqlCmd2.ExecuteNonQuery(parms);
                        sqlCmd2.Close();

                        classesOfMetods cls = new classesOfMetods();
                        cls.reloadInfo();
                        field_edit.loadFields(idT);
                        parent.CloseModalElem();
                    }

                    DBTablesEdit.SyncController.ReloadTable(idT);
                }
                else
                {
                    MessageBox.Show(Rekod.Properties.Resources.AEAtr_NotSelectType, Properties.Resources.AEAtr_CreatingAttribute, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                MessageBox.Show(Rekod.Properties.Resources.AEAtr_NotPutName, Rekod.Properties.Resources.Mes_Error,
                                MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
Пример #6
0
        private void button1_Click(object sender, EventArgs e)
        {
            var fi = classesOfMetods.getFieldInfo(id);
            var ti = classesOfMetods.getTableInfo(fi.idTable);

            if (comboBox8.SelectedIndex == 1)
            {
                if (comboBox1.SelectedItem != null &&
                    comboBox2.SelectedItem != null &&
                    comboBox3.SelectedItem != null)
                {
                    string sql = "";
                    if (ti.style_field == fi.nameDB && (((itemObj)comboBox1.SelectedItem).Id_o != fi.ref_table ||
                                                        ((itemObj)comboBox2.SelectedItem).Id_o != fi.ref_field ||
                                                        ((itemObj)comboBox3.SelectedItem).Id_o != fi.ref_field_name))
                    {
                        if (MessageBox.Show(Rekod.Properties.Resources.FELC_DeletingFieldStyle + Environment.NewLine +
                                            Rekod.Properties.Resources.PFC_EditingFieldsAsk,
                                            Rekod.Properties.Resources.PFC_EditingFields,
                                            MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) != DialogResult.Yes)
                        {
                            return;
                        }
                        else
                        {
                            sql = "UPDATE " + Program.scheme + ".table_info SET default_style=true, style_field='style' WHERE id=" + ti.idTable + ";";
                        }
                    }

                    SqlWork sqlCmd = new SqlWork();
                    sqlCmd.sql = sql + "UPDATE " + Program.scheme + ".table_field_info SET is_reference = true, is_interval=false, " +
                                 "ref_table = " + ((itemObj)comboBox1.SelectedItem).Id_o + ", " +
                                 "ref_field = " + ((itemObj)comboBox2.SelectedItem).Id_o + ", " +
                                 "ref_field_name = " + ((itemObj)comboBox3.SelectedItem).Id_o + " " +
                                 " WHERE id =" + id;
                    sqlCmd.Execute(true);
                    sqlCmd.Close();
                    parent.CloseModalElem();
                    classesOfMetods cls = new classesOfMetods();
                    cls.reloadInfo();
                    DBTablesEdit.SyncController.ReloadTable(ti.idTable);
                    return;
                }
                else
                {
                    MessageBox.Show(Rekod.Properties.Resources.PFC_AllFieldsFill);
                    return;
                }
            }
            else
            if (comboBox8.SelectedIndex == 3)
            {
                if (comboBox9.SelectedItem != null &&
                    comboBox10.SelectedItem != null &&
                    comboBox11.SelectedItem != null)
                {
                    string sql = "";
                    if (ti.style_field == fi.nameDB && (((itemObj)comboBox9.SelectedItem).Id_o != fi.ref_table ||
                                                        ((itemObj)comboBox10.SelectedItem).Id_o != fi.ref_field ||
                                                        ((itemObj)comboBox11.SelectedItem).Id_o != fi.ref_field_name))
                    {
                        if (MessageBox.Show(Rekod.Properties.Resources.FELC_DeletingFieldStyle + Environment.NewLine +
                                            Rekod.Properties.Resources.PFC_EditingFieldsAsk,
                                            Rekod.Properties.Resources.PFC_EditingFields,
                                            MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) != DialogResult.Yes)
                        {
                            return;
                        }
                        else
                        {
                            sql = "UPDATE " + Program.scheme + ".table_info SET default_style=true, style_field='style' WHERE id=" + ti.idTable + ";";
                        }
                    }

                    SqlWork sqlCmd = new SqlWork();
                    sqlCmd.sql = sql + "UPDATE " + Program.scheme + ".table_field_info SET is_reference = true, is_interval=false, " +
                                 "ref_table = " + ((itemObj)comboBox9.SelectedItem).Id_o + ", " +
                                 "ref_field = " + ((itemObj)comboBox10.SelectedItem).Id_o + ", " +
                                 "ref_field_name = " + ((itemObj)comboBox11.SelectedItem).Id_o + " " +
                                 " WHERE id =" + id;
                    sqlCmd.Execute(true);
                    sqlCmd.Close();
                    parent.CloseModalElem();
                    classesOfMetods cls = new classesOfMetods();
                    cls.reloadInfo();
                    DBTablesEdit.SyncController.ReloadTable(ti.idTable);
                    return;
                }
                else
                {
                    MessageBox.Show(Rekod.Properties.Resources.PFC_AllFieldsFill);
                    return;
                }
            }
            else
            {
                if (comboBox8.SelectedIndex == 2)
                {
                    if (comboBox4.SelectedItem != null &&
                        comboBox5.SelectedItem != null &&
                        comboBox6.SelectedItem != null &&
                        comboBox7.SelectedItem != null)
                    {
                        string sql = "";
                        if (ti.style_field == fi.nameDB && (((itemObj)comboBox4.SelectedItem).Id_o != fi.ref_table ||
                                                            ((itemObj)comboBox5.SelectedItem).Id_o != fi.ref_field ||
                                                            ((itemObj)comboBox6.SelectedItem).Id_o != fi.ref_field_end ||
                                                            ((itemObj)comboBox7.SelectedItem).Id_o != fi.ref_field_name))
                        {
                            if (MessageBox.Show(Rekod.Properties.Resources.FELC_DeletingFieldStyle + Environment.NewLine +
                                                Rekod.Properties.Resources.PFC_EditingFieldsAsk,
                                                Rekod.Properties.Resources.PFC_EditingFields,
                                                MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) != DialogResult.Yes)
                            {
                                return;
                            }
                            else
                            {
                                sql = "UPDATE " + Program.scheme + ".table_info SET default_style=true, style_field='style' WHERE id=" + ti.idTable + ";";
                            }
                        }
                        SqlWork sqlCmd = new SqlWork();
                        sqlCmd.sql = sql + "UPDATE " + Program.scheme + ".table_field_info SET is_reference = false, is_interval=true, " +
                                     "ref_table = " + ((itemObj)comboBox4.SelectedItem).Id_o + ", " +
                                     "ref_field = " + ((itemObj)comboBox5.SelectedItem).Id_o + ", " +
                                     "ref_field_end = " + ((itemObj)comboBox6.SelectedItem).Id_o + ", " +
                                     "ref_field_name = " + ((itemObj)comboBox7.SelectedItem).Id_o + " " +
                                     " WHERE id =" + id;
                        sqlCmd.Execute(true);
                        sqlCmd.Close();
                        //MessageBox.Show("Настройки зафиксированы!");
                        parent.CloseModalElem();
                        classesOfMetods cls = new classesOfMetods();
                        cls.reloadInfo();
                        DBTablesEdit.SyncController.ReloadTable(ti.idTable);
                        return;
                    }
                    else
                    {
                        MessageBox.Show(Rekod.Properties.Resources.PFC_AllFieldsFill);
                        return;
                    }
                }
                else
                {
                    string sql = "";

                    if (ti.Style.DefaultStyle != true && ti.style_field == fi.nameDB && fi.ref_table != null)
                    {
                        if (MessageBox.Show(Rekod.Properties.Resources.FELC_DeletingFieldStyle + Environment.NewLine +
                                            Rekod.Properties.Resources.PFC_EditingFieldsAsk,
                                            Rekod.Properties.Resources.PFC_EditingFields,
                                            MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                        {
                            sql = "UPDATE " + Program.scheme + ".table_info SET default_style=true, style_field='style' WHERE id=" + ti.idTable + ";";
                        }
                        else
                        {
                            return;
                        }
                    }
                    SqlWork sqlCmd = new SqlWork();
                    sqlCmd.sql = sql + "UPDATE " + Program.scheme + ".table_field_info SET is_reference = false, is_interval = false, is_style = false, ref_table = NULL, ref_field = NULL, ref_field_end = NULL, ref_field_name = NULL " +
                                 " WHERE id =" + id.ToString();
                    sqlCmd.Execute(true);
                    sqlCmd.Close();
                    parent.CloseModalElem();
                    classesOfMetods cls = new classesOfMetods();
                    cls.reloadInfo();
                    DBTablesEdit.SyncController.ReloadTable(ti.idTable);
                    return;
                }
            }
        }
Пример #7
0
        public void Create(object parameter = null)
        {
            if (CanCreate)
            {
                cti.ThreadProgress.ShowWait(_progressKey);
                try
                {
                    CanLoad    = false;
                    _tableInfo = CreateTable();

                    if (_tableInfo != null)
                    {
                        DataGrid importGrid = parameter as DataGrid;
                        var      headers    = FindChild <StackPanel>(importGrid, "HeaderStackPanel");

                        List <FieldMatch> fields = new List <FieldMatch>();
                        for (int i = 0; i < headers.Count - 1; i++)
                        {
                            bool loadField = (bool)FindChild <CheckBox>(importGrid, "LoadField")[i + 1].IsChecked;
                            if (!loadField)
                            {
                                continue;
                            }
                            string          nameDB      = FindChild <TextBox>(importGrid, "headerDBName")[i + 1].Text;
                            string          nameSystem  = FindChild <TextBox>(importGrid, "headerSystemName")[i + 1].Text;
                            string          name        = (string)importGrid.Columns[i].Header;
                            var             type_item   = FindChild <ComboBox>(importGrid, "headerFieldTypeCb")[i + 1].SelectedValue;
                            EnumWrapper     enumWrapper = type_item as EnumWrapper;
                            AbsM.EFieldType eFieldType  = (AbsM.EFieldType)enumWrapper.Value;

                            if (loadField)
                            {
                                var field = CreateField(nameDB, nameSystem, (int)eFieldType, name, _tableInfo);
                                if (field != null)
                                {
                                    fields.Add(field);
                                }
                            }
                        }

                        var cls = new classesOfMetods();
                        Program.field_info = cls.loadFieldInfo();

                        _importer.SetTableInfo(_tableInfo);
                        if (_importer is SHPImporter)
                        {
                            (_importer as SHPImporter).Load(fields, _tableType == AbsM.ETableType.MapLayer);
                        }
                        else
                        {
                            _importer.Load(fields);
                        }
                        if (Program.sscUser != null)
                        {
                            DBTablesEdit.SyncController.RegisterTable(_tableInfo.idTable, Group.name);
                        }
                    }
                    else
                    {
                        cti.ThreadProgress.Close(_progressKey);
                        CanLoad = true;
                    }
                }
                catch (Exception ex)
                {
                    cti.ThreadProgress.Close(_progressKey);
                    CanLoad = true;
                    MessageBox.Show(ex.Message, Resources.AET_CreatingTable, MessageBoxButton.OK, MessageBoxImage.Information);
                }
            }
        }
Пример #8
0
        /// <summary>
        /// Создание таблицы
        /// </summary>
        /// <returns>Информация о таблице</returns>
        public tablesInfo CreateTable()
        {
            bool   exist_table = false;
            bool   find_name   = false;
            string name_table  = _nameDB;
            int    countt      = 0;

            if (classesOfMetods.isReservedName(name_table))
            {
                cti.ThreadProgress.Close(_progressKey);
                name_table += "_";
                if (MessageBox.Show(
                        string.Format(Resources.AET_NameIsReserved + Environment.NewLine + Resources.AET_SaveTableRename, name_table),
                        Resources.AET_CreatingTable, MessageBoxButton.OKCancel, MessageBoxImage.Warning) == MessageBoxResult.Cancel)
                {
                    MessageBox.Show(Resources.AET_ConNotSave + Environment.NewLine +
                                    Resources.AET_ChangeTable, Resources.AET_CreatingTable, MessageBoxButton.OK, MessageBoxImage.Information);
                    return(null);
                }
            }

            while (!find_name)
            {
                find_name = true;
                using (SqlWork sqlCmd = new SqlWork())
                {
                    sqlCmd.sql = "SELECT count(*) FROM pg_tables WHERE tablename='" + name_table + "' AND schemaname='" + _scheme + "';";
                    sqlCmd.ExecuteReader();
                    if (sqlCmd.CanRead())
                    {
                        if (sqlCmd.GetInt32(0) > 0)
                        {
                            exist_table = true;
                            find_name   = false;
                            countt++;
                        }
                    }
                    if (!find_name)
                    {
                        name_table = _nameDB + countt.ToString();
                    }
                }
            }
            if (exist_table)
            {
                cti.ThreadProgress.Close(_progressKey);
                if (MessageBox.Show(
                        string.Format(Resources.AET_AlreadyExistsTable + Environment.NewLine + Resources.AET_SaveTableRename, name_table),
                        Resources.AET_CreatingTable, MessageBoxButton.OKCancel, MessageBoxImage.Warning) == MessageBoxResult.Cancel)
                {
                    MessageBox.Show(Resources.AET_ConNotSave + Environment.NewLine +
                                    Resources.AET_ChangeTable, Resources.AET_CreatingTable, MessageBoxButton.OK, MessageBoxImage.Information);
                    return(null);
                }
                cti.ThreadProgress.ShowWait(_progressKey);
            }

            int id = -1;

            using (SqlWork sqlCmd = new SqlWork())
            {
                sqlCmd.sql = "SELECT " + Program.scheme + ".create_table(@val1,@val2,@val3,@val4,@val5,@val6,@val7,@val8,@val9)";
                var parms = new IParams[]
                {
                    new Params
                    {
                        paramName = "@val1",
                        typeData  = NpgsqlTypes.NpgsqlDbType.Text,
                        value     = _scheme
                    },
                    new Params
                    {
                        paramName = "@val2",
                        typeData  = NpgsqlTypes.NpgsqlDbType.Text,
                        value     = name_table
                    },
                    new Params
                    {
                        paramName = "@val3",
                        typeData  = NpgsqlTypes.NpgsqlDbType.Text,
                        value     = _nameSystem
                    },
                    new Params
                    {
                        paramName = "@val4",
                        typeData  = NpgsqlTypes.NpgsqlDbType.Integer,
                        value     = (int)_tableType
                    },
                    new Params
                    {
                        paramName = "@val5",
                        typeData  = NpgsqlTypes.NpgsqlDbType.Integer,
                        value     = _geomType
                    },
                    new Params
                    {
                        paramName = "@val6",
                        typeData  = NpgsqlTypes.NpgsqlDbType.Integer,
                        value     = _srid != -1 ? _srid : 4326
                    },
                    new Params
                    {
                        paramName = "@val7",
                        typeData  = NpgsqlTypes.NpgsqlDbType.Boolean,
                        value     = false
                    },
                    new Params
                    {
                        paramName = "@val8",
                        typeData  = NpgsqlTypes.NpgsqlDbType.Boolean,
                        value     = false
                    },
                    new Params
                    {
                        paramName = "@val9",
                        typeData  = NpgsqlTypes.NpgsqlDbType.Integer,
                        value     = SystemGroup
                    }
                };
                try
                {
                    sqlCmd.ExecuteReader(parms);
                    if (sqlCmd.CanRead())
                    {
                        id = sqlCmd.GetInt32(0);
                    }
                    else
                    {
                        throw new Exception(Resources.AET_ErrorCreatingTable);
                    }
                }
                catch (Exception ex)
                {
                    cti.ThreadProgress.Close(_progressKey);
                    MessageBox.Show(ex.Message);
                    return(null);
                }
            }
            var cls = new classesOfMetods();

            Program.tables_info = cls.loadTableInfo();
            var ti = classesOfMetods.getTableInfo(id);

            return(ti);
        }
Пример #9
0
        private void button2_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "" && textBox2.Text != "")
            {
                if (Program.sscUser != null && this.sscGroupCmb.SelectedItem == null)
                {
                    MessageBox.Show("Не указана группа!", Rekod.Properties.Resources.error, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                string name_scheme = classesOfMetods.getTableInfo(idT).nameSheme;
                string name_table  = FindAcceptableTableName(textBox1.Text, name_scheme);
                if (String.IsNullOrEmpty(name_table))
                {
                    return;
                }

                string  nameField = "";
                int     id_filed = 0, id_table = 0;
                string  type_field = "", field_list = "", insert_sql = "", type_geom = "";
                SqlWork sqlCmd = new SqlWork();
                sqlCmd.sql = "SELECT nextval('sys_scheme.table_info_id_seq')::INTEGER";
                sqlCmd.Execute(false);
                if (sqlCmd.CanRead())
                {
                    id_table = sqlCmd.GetInt32(0);
                }
                sqlCmd.Close();
                sqlCmd     = new SqlWork();
                sqlCmd.sql = "SELECT type FROM geometry_columns WHERE f_table_schema like '" + classesOfMetods.getTableInfo(idT).nameSheme
                             + "' AND f_table_name like '" + classesOfMetods.getTableInfo(idT).nameDB +
                             "' AND f_geometry_column like '" + classesOfMetods.getTableInfo(idT).geomFieldName + "';";
                sqlCmd.Execute(false);
                if (sqlCmd.CanRead())
                {
                    type_geom = sqlCmd.GetValue <string>(0);
                }
                sqlCmd.Close();

                string sql = "CREATE TABLE " + name_scheme +
                             "." + name_table + " ( " +
                             classesOfMetods.getTableInfo(idT).pkField + " serial NOT NULL, ";
                for (int i = 0; checkedListBox1.CheckedItems.Count > i; i++)
                {
                    id_filed   = ((itemObj)checkedListBox1.CheckedItems[i]).Id_o;
                    field_list = field_list + id_filed + ",";
                    nameField  = classesOfMetods.getFieldInfo(id_filed).nameDB;
                    switch (classesOfMetods.getFieldInfo(id_filed).type)
                    {
                    case 1:
                        type_field = " integer DEFAULT 0, ";
                        break;

                    case 2:
                        type_field = " character varying, ";
                        break;

                    case 3:
                        type_field = " date, ";
                        break;

                    case 4:
                        type_field = " timestamp with time zone, ";
                        break;

                    case 5:
                        type_field = " geometry, ";
                        break;

                    case 6:
                        type_field = " numeric DEFAULT 0, ";
                        break;
                    }
                    sql        = sql + nameField + type_field;
                    insert_sql = insert_sql + nameField + ",";
                }
                List <fieldInfo> fInfo = classesOfMetods.getFieldInfoTable(idT);
                for (int i = 0; fInfo.Count > i; i++)
                {
                    itemObj item = new itemObj(fInfo[i].idField, fInfo[i].nameMap, fInfo[i].nameDB);
                    if (pk_field == fInfo[i].nameDB || geom_field == fInfo[i].nameDB)
                    {
                        field_list = field_list + fInfo[i].idField + ",";
                        insert_sql = insert_sql + fInfo[i].nameDB + ",";
                    }
                }

                field_list = field_list.Substring(0, field_list.Length - 1);
                insert_sql = insert_sql.Substring(0, insert_sql.Length - 1);
                sql        = sql + "CONSTRAINT " + name_table + "_pkey PRIMARY KEY (" + pk_field + ") );" +
                             "ALTER TABLE " + classesOfMetods.getTableInfo(idT).nameSheme + "." + name_table +
                             " OWNER TO admin_" + Program.connString["DataBase"] + ";";
                if (classesOfMetods.getTableInfo(idT).type == 1)
                {
                    sql = sql + " SELECT AddGeometryColumn('" + classesOfMetods.getTableInfo(idT).nameSheme +
                          "', '" + name_table + "','" + geom_field + "'," +
                          classesOfMetods.getTableInfo(idT).srid.ToString() + ",'" + type_geom + "',2); ";
                }
                sql = sql + "INSERT INTO sys_scheme.table_info( " +
                      "id, scheme_name, name_db, name_map, lablefiled, map_style, geom_field, " +
                      "style_field, geom_type, type, default_style, fontname, fontcolor, " +
                      "fontframecolor, fontsize, symbol, pencolor, pentype, penwidth, " +
                      "brushbgcolor, brushfgcolor, brushstyle, brushhatch, read_only, " +
                      "id_style, pk_fileld, is_style, source_layer, image_column, " +
                      "angle_column, use_bounds, min_scale, max_scale, default_visibl, " +
                      "range_colors, range_column, " +
                      "precision_point, type_color, min_color, min_val, max_color, max_val, " +
                      "use_min_val, null_color, use_null_color, hidden, use_max_val) " +
                      "SELECT " + id_table.ToString() + ", scheme_name, '" + name_table + "', '" +
                      textBox2.Text + "', lablefiled, map_style, geom_field, " +
                      "style_field, geom_type, type, default_style, fontname, fontcolor, " +
                      "fontframecolor, fontsize, symbol, pencolor, pentype, penwidth, " +
                      "brushbgcolor, brushfgcolor, brushstyle, brushhatch, read_only, " +
                      "id_style, pk_fileld, is_style, source_layer, image_column, " +
                      "angle_column, use_bounds, min_scale, max_scale, default_visibl, " +
                      "range_colors, range_column, " +
                      "precision_point, type_color, min_color, min_val, max_color, max_val, " +
                      "use_min_val, null_color, use_null_color, hidden, use_max_val " +
                      "FROM sys_scheme.table_info " +
                      "WHERE id = " + idT.ToString() + ";";
                sql = sql + "INSERT INTO sys_scheme.table_field_info( " +
                      "id_table, name_db, name_map, type_field, visible, name_lable, " +
                      "is_reference, is_interval, is_style, ref_table, ref_field, ref_field_end, " +
                      "ref_field_name, read_only) " +
                      "SELECT " + id_table.ToString() + ", name_db, name_map, type_field, visible, name_lable, " +
                      "is_reference, is_interval, is_style, ref_table, ref_field, ref_field_end, " +
                      "ref_field_name, read_only " +
                      "FROM sys_scheme.table_field_info " +
                      "WHERE id in (" + field_list + ") ORDER BY num_order;";
                sql = sql + " INSERT INTO " + classesOfMetods.getTableInfo(idT).nameSheme +
                      "." + name_table + " (" + insert_sql + ") SELECT " + insert_sql + " FROM " +
                      classesOfMetods.getTableInfo(idT).nameSheme + "." + classesOfMetods.getTableInfo(idT).nameDB + ";";
                sql += string.Format(
                    "INSERT INTO {0}.table_right (id_table, id_user, read_data, write_data) SELECT {1}, id, true, true FROM {0}.user_db WHERE admin=true;",
                    Program.scheme,
                    id_table);
                if (!Program.user_info.admin)
                {
                    sql += string.Format(
                        "INSERT INTO {0}.table_right (id_table, id_user, read_data, write_data) VALUES({1},{2},true,true);",
                        Program.scheme,
                        id_table,
                        Program.user_info.id_user);
                }
                sqlCmd     = new SqlWork();
                sqlCmd.sql = sql;
                if (sqlCmd.Execute(true))
                {
                    //Установить значение сиквенса
                    string sequenceSetError = null;
                    try
                    {
                        sqlCmd.sql =
                            String.Format("SELECT \"{0}\" FROM \"{1}\".\"{2}\" ORDER BY \"{0}\" DESC LIMIT 1",
                                          pk_field,
                                          name_scheme,
                                          name_table);
                        int?lastGid = sqlCmd.ExecuteScalar <int?>();
                        sqlCmd.CloseReader();
                        if (lastGid != null)
                        {
                            sqlCmd.sql =
                                String.Format("SELECT pg_get_serial_sequence('{0}.{1}', '{2}')",
                                              name_scheme,
                                              name_table,
                                              pk_field);
                            sqlCmd.Connection.Open();
                            String sequenceName = sqlCmd.ExecuteScalar <String>();
                            sqlCmd.CloseReader();

                            sqlCmd.sql = String.Format("SELECT setval('{0}', {1})", sequenceName, lastGid);
                            sqlCmd.Connection.Open();
                            sqlCmd.ExecuteNonQuery();
                        }
                    }
                    catch (Exception ex)
                    {
                        sequenceSetError = ex.Message;
                    }
                    String messageBoxText = Rekod.Properties.Resources.DGBH_OperSuccess;
                    if (sequenceSetError != null)
                    {
                        messageBoxText = messageBoxText + "\nError while setting sequence: " + sequenceSetError;
                    }

                    MessageBox.Show(messageBoxText, Properties.Resources.AET_CreatingTable, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    classesOfMetods cls = new classesOfMetods();
                    cls.reloadInfo();
                    sqlCmd.Close();
                    DialogResult = System.Windows.Forms.DialogResult.OK;
                    Close();
                }
                if (Program.sscUser != null && classesOfMetods.getTableInfo(id_table).type == 1)
                {
                    SyncController.RegisterTable(id_table, ((RESTLib.Model.REST.Group) this.sscGroupCmb.SelectedItem).name);
                }
            }
        }