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(); }
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(); }
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); } } } }
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); } }
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; } } }
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); } } }
/// <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); }
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); } } }