public WizardCalendrier(TabloidConfigView view, string connectionString, Provider provider)
        {
            InitializeComponent();
            _connectionString = connectionString;
            _provider         = provider;
            _view             = view;

            string lastError;
            var    dt = DataTools.Data(SqlCommands.SqlGetColums(view.NomTable), connectionString, out lastError);//01

            //is there 2 timestamp
            cmbDeb.DataSource    = new DataView(dt, dt.Columns[1].ColumnName + " like 'timestamp%'", null, DataViewRowState.CurrentRows);
            cmbFin.DataSource    = new DataView(dt, dt.Columns[1].ColumnName + " like 'timestamp%'", null, DataViewRowState.CurrentRows);
            cmbDeb.DisplayMember = cmbFin.DisplayMember = dt.Columns[0].ColumnName;

            chkUtilDeb.Enabled = chkUtilFin.Enabled = cmbDeb.Items.Count != 0;//no timestamp field couldn't use existing fields

            //is there 1 or more character varying
            cmbTitre.DataSource  = dt;
            cmbTitre.ValueMember = dt.Columns[0].ColumnName;

            var nameField = cmbTitre.FindStringExact("nom_" + _view.NomTable);

            if (nameField > -1)
            {
                cmbTitre.SelectedIndex = nameField;
                chkExistTitre.Checked  = true;
            }

            ///create new field
            txtTitre.Text = "eve_" + view.NomTable;
            txtDebut.Text = "deb_" + view.NomTable;
            txtFin.Text   = "fin_" + view.NomTable;
        }
        /// <summary>
        /// add field list to combobox from sql request
        /// </summary>
        /// <param name="cmb">Combobox to populate</param>
        /// <param name="table">Table name</param>
        /// <param name="connectionString">connexction string</param>
        /// <param name="DbKeyName">if set field with DbKeyName is not shown</param>
        /// <param name="allowNull">Add selectable null item</param>
        /// <param name="hideTabloidField">if true Tabloid fields are hidden</param>
        public static void displayField(ComboBox cmb, string table, string connectionString, string schema = null, string DbKeyName = "", bool allowNull = false, bool hideTabloidField = true)
        {
            cmb.Items.Clear();
            string lastError;

            if (string.IsNullOrEmpty(schema))
            {
                schema = Program.AppSet.Schema;
            }

            var dc = DataTools.Data(SqlCommands.SqlGetColums(table, schema), connectionString, out lastError);//0

            if (allowNull)
            {
                cmb.Items.Add("");
            }
            foreach (DataRow dcr in dc.Rows)
            {
                if (hideTabloidField || TabloidFields.IstabloidField(dcr[0].ToString()) == -1)
                {
                    cmb.Items.Add(dcr[0].ToString());
                    if (dcr[0].ToString() == DbKeyName)
                    {
                        cmb.SelectedIndex = cmb.Items.Count - 1;
                    }
                }
            }

            if (cmb.Items.Count > 0)
            {
                cmb.SelectedIndex = 0;
            }
        }
        private void populateFieldList()
        {
            string lastError;

            lstChamp.Items.Clear();

            if (cmbTable.SelectedValue == null)
            {
                return;
            }

            var dc = DataTools.Data(SqlCommands.SqlGetColums(
                                        cmbTable.SelectedValue.ToString(),
                                        cmdSchema.SelectedValue.ToString()), ConnectionString, out lastError);//0

            foreach (DataRow dcr in dc.Rows)
            {
                if (TabloidFields.IstabloidField(dcr[0].ToString()) == -1)
                {
                    lstChamp.Items.Add(dcr[0].ToString());
                }
            }

            if (lstChamp.Items.Count > 0)
            {
                lstChamp.SelectedIndex = 0;
            }
        }
Beispiel #4
0
        void cmbTable_SelectedIndexChanged(object sender, EventArgs e)
        {
            string lastError;

            var dc = DataTools.Data(SqlCommands.SqlGetColums(cmbTable.Text), Program.AppSet.ConnectionString, out lastError);//c0

            cmbChamp.DisplayMember = cmbChamp.ValueMember = "column_name";
            cmbChamp.DataSource    = dc;
        }
        private void populateTableList()
        {
            string lastError;

            var dt = DataTools.Data(SqlCommands.SqlGetTable(cmdSchema.SelectedItem.ToString()), ConnectionString, out lastError);

            cmbTable.ValueMember = dt.Columns[0].ColumnName;
            cmbTable.DataSource  = dt;
        }
        /// <summary>
        /// Function creation wizard
        /// </summary>
        /// <param name="schema">Name of postgres schema or database name for mysql</param>
        public WizardFunction(string schema)
        {
            InitializeComponent();

            string lastError;

            var dt = DataTools.Data(WizardSQLHelper.BuildSQLFromFile("functionList.sql", new String[] { schema }), Program.AppSet.ConnectionString, out lastError);

            cmbFunction.DataSource    = dt;
            cmbFunction.DisplayMember = dt.Columns[1].ColumnName;
        }
        public static bool ExecuteSQLString(string sql, IWin32Window own)
        {
            string lastError;
            var    dc = DataTools.Data(sql, Program.AppSet.ConnectionString, out lastError);

            if (string.IsNullOrEmpty(lastError))
            {
                return(true);
            }

            MetroMessageBox.Show(own, Resources.Base_Modification_error + lastError, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
            return(false);
        }
Beispiel #8
0
        /// <summary>
        /// Search for a field name for a given table
        /// </summary>
        /// <param name="fieldName"></param>
        /// <param name="tableName"></param>
        /// <param name="schema"></param>
        /// <returns>true if exist</returns>
        public static bool isConstraintExist(string constraintName, string schema)
        {
            string lastError;
            var    ConstraintList = DataTools.Data(SqlCommands.SqlGetForeignKey(null, schema), Program.AppSet.ConnectionString, out lastError);//c0

            if (!string.IsNullOrEmpty(lastError))
            {
                throw new Exception(lastError);
            }

            var constraintColumnName = ConstraintList.Columns[3].ColumnName;

            return(ConstraintList.Select($"{constraintColumnName} {SqlConverter.GetSql(SqlConverter.SqlType.Ilike)} '{constraintName}'").Length > 0);
        }
Beispiel #9
0
        public static bool isTableExist(string tableName)
        {
            string lastError = "";
            var    result    = DataTools.Data(SqlCommands.SqlGetTable(), Program.AppSet.ConnectionString, out lastError);

            foreach (DataRow dr in result.Rows)
            {
                if (dr[0].ToString().ToLower() == tableName.ToLower())
                {
                    return(true);
                }
            }

            return(false);
        }
        /// <summary>
        /// execute sql script from given text file
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="param"></param>
        /// <param name="connectionString"></param>
        /// <param name="provider"></param>
        /// <returns></returns>
        public static bool ExecuteFromFile(string fileName, string[] param, string connectionString, IWin32Window own)
        {
            var sql = BuildSQLFromFile(fileName, param);

            string lastError;
            var    dc = DataTools.Data(sql, connectionString, out lastError);

            if (string.IsNullOrEmpty(lastError))
            {
                return(true);
            }

            MetroMessageBox.Show(own, Resources.Base_Modification_error + lastError, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
            return(false);
        }
Beispiel #11
0
        void SetFieldLists()
        {
            string lastError;

            cmbChView.DataSource = _view.Colonnes;
            var dc = DataTools.Data(SqlCommands.SqlGetColums(_view.NomTable), Program.AppSet.ConnectionString, out lastError);//c0

            cmbChTable.DisplayMember = cmbChTable.ValueMember = "column_name";
            cmbChTable.DataSource    = dc;

            var dt = DataTools.Data(SqlCommands.SqlGetTable(), Program.AppSet.ConnectionString, out lastError);

            cmbTable.DisplayMember = cmbTable.ValueMember = dt.Columns[0].ColumnName;
            cmbTable.DataSource    = dt;
        }
        /// <summary>
        /// Return primary key column name for a given table
        /// </summary>
        /// <param name="tableName">NAme of table to analyse</param>
        /// <returns></returns>
        public static string GetPrimaryKeyName(string tableName)
        {
            //get primary key
            string lastError;
            var    dc = DataTools.Data(SqlCommands.SqlGetColums(tableName), Program.AppSet.ConnectionString, out lastError);

            foreach (DataRow dcr in dc.Rows)
            {
                if (dcr[3].ToString().StartsWith("PRI", StringComparison.InvariantCulture))
                {
                    return(dcr[0].ToString());
                }
            }

            return(null);
        }
Beispiel #13
0
        /// <summary>
        /// Search for a field name for a given table
        /// </summary>
        /// <param name="fieldName"></param>
        /// <param name="tableName"></param>
        /// <param name="schema"></param>
        /// <returns>true if exist</returns>
        public static bool isFieldExist(string fieldName, string tableName, string schema)
        {
            string lastError;
            var    tableColumnsList = DataTools.Data(SqlCommands.SqlGetColums(tableName, schema), Program.AppSet.ConnectionString, out lastError);//c0

            if (!string.IsNullOrEmpty(lastError))
            {
                throw new Exception(lastError);
            }

            var fieldColumnName = tableColumnsList.Columns[0].ColumnName;

            fieldName = DataTools.StringToSql(fieldName);

            return(tableColumnsList.Select($"{fieldColumnName} like '{fieldName}'").Length > 0);//warning request with .net engine non need to convert like
        }
        private void update(object sender, DoWorkEventArgs e)
        {
            var args   = (object[])e.Argument;
            var worker = (BackgroundWorker)sender;
            var dtGrid = (MetroGrid)args[0];

            string lastError;

            worker.ReportProgress(0, new WaitingFormProperties(Properties.Resources.Chargement, Properties.Resources.DatabaseRead));

            _dt = DataTools.Data("Select id_role as id,titre_role as titre from roles", Program.AppSet.ConnectionString, out lastError);

            _dt.Columns.Add("Select.", typeof(bool));

            worker.ReportProgress(0, new WaitingFormProperties(Properties.Resources.Chargement, Properties.Resources.DataDisplaying));
        }
        /// <summary>
        /// search for a not used name
        /// </summary>
        /// <param name="baseName"></param>
        /// <param name="schema"></param>
        /// <returns></returns>
        static string SearchConstraintUniqueName(string baseName, string schema)
        {
            string error;
            var    constraints = DataTools.Data(SqlCommands.SqlGetForeignKey(null, schema), Program.AppSet.ConnectionString, out error);

            var constraintsArray = Common.TableToStringArray(constraints, constraints.Columns[3].ColumnName, false);
            var name             = baseName;
            var i = 0;

            while (Array.IndexOf(constraintsArray, name) > -1)
            {
                i++;
                name = baseName + i;
            }

            return(name);
        }
Beispiel #16
0
        public WizardTable(string connectionString, Provider provider)
        {
            _provider = provider;
            InitializeComponent();
            _connectionString = connectionString;
            txtSchema.Text    = Program.AppSet.Schema;

            string lastError;

            var dt = DataTools.Data(SqlCommands.SqlGetTable(), connectionString, out lastError);

            cmbTable.DataSource    = dt;
            cmbTable.DisplayMember = dt.Columns[0].ColumnName;

            chkDefaultView.Checked = TabloidConfig.Config.Views.Count == 0;

            setVisibility();
        }
Beispiel #17
0
        /// <summary>
        /// Delete column in table
        /// Remove constraint if exist
        /// </summary>
        /// <param name="table">Field table name without schema</param>
        /// <param name="schema"></param>
        public static void DropColumn(string table, string column, string schema, IWin32Window own)
        {
            string error;
            var    constraints = DataTools.Data(SqlCommands.SqlGetForeignKey(table, schema), Program.AppSet.ConnectionString, out error);

            var columnConstraints = new DataView(constraints,
                                                 constraints.Columns[0].ColumnName + " like '" + column + "'",
                                                 "", DataViewRowState.Unchanged);

            foreach (DataRowView dr in columnConstraints)
            {
                var param1 = new string[] { schema, dr[3].ToString(), table };
                WizardSQLHelper.ExecuteFromFile("DropForeignKey.sql", param1, Program.AppSet.ConnectionString, own);
            }

            var param = new string[] { schema + "." + table, ChampTools.RemoveTableName(column) };

            WizardSQLHelper.ExecuteFromFile("supField.sql", param, Program.AppSet.ConnectionString, own);
        }
Beispiel #18
0
        private void update(object sender, DoWorkEventArgs e)
        {
            var args = (object[])e.Argument;

            var v        = (Visibilites)args[0];
            var viewName = (string)args[1];
            var cString  = (string)args[2];

            var worker = (BackgroundWorker)sender;

            string lastError;

            worker.ReportProgress(0, new WaitingFormProperties(Properties.Resources.Chargement, Properties.Resources.DatabaseRead));
            var sqlSet = TableDefinition.DefSql(viewName, v, false, false, null, false, null, null, null);

            _dt = DataTools.Data(sqlSet.Select.Command, cString, out lastError);

            worker.ReportProgress(0, new WaitingFormProperties(Properties.Resources.Chargement, Properties.Resources.DataDisplaying));
        }
        /// <summary>
        /// Search join using constraint for a given table
        /// </summary>
        /// <param name="view">view of the table</param>
        /// <param name="connectionString"></param>
        /// <param name="lastError"></param>
        /// <param name="addToTable">if set to true search for field in table to set field join properties</param>
        /// <returns></returns>
        public static List <TabloidConfigJointure> SetJoinFromConstraint(TabloidConfigView view, string connectionString, ref string lastError, bool addToTable = true)
        {
            var result = new List <TabloidConfigJointure>();

            var dfk = DataTools.Data(SqlCommands.SqlGetForeignKey(view.NomTable, view.Schema), connectionString, out lastError);

            if (!string.IsNullOrEmpty(lastError))
            {
                return(null);
            }

            for (var a = 0; a < dfk.Rows.Count; a++)
            {
                var j = new TabloidConfigJointure
                {
                    ChampDeRef  = dfk.Rows[a][0].ToString(),
                    NomTable    = dfk.Rows[a][1].ToString(),
                    TableSource = view.NomTable,
                    DbKey       = dfk.Rows[a][2].ToString()
                };

                result.Add(j);

                if (addToTable)
                {
                    WizardTools.Tools.AddWithUniqueName(view.Jointures, j, "J");

                    foreach (var i in view.Colonnes.FindIndex(j.ChampDeRef))
                    {
                        view.Colonnes[i].Jointure = j.Nom;
                        view.Colonnes[i].Editeur  = TemplateType.ComboBoxPlus;
                        view.Colonnes[i].Type     = DbType.Int32;
                    }
                }
            }

            return(result);
        }
        /// <summary>
        /// List existing table in combobox from sql request
        /// </summary>
        /// <param name="lst"></param>
        /// <param name="connectionString"></param>
        /// <param name="selectTableName">Table Name to select</param>
        /// <param name="allowNull"></param>
        public static void displayTable(ListBox lst, string connectionString, string selectTableName = null, bool allowNull = false)
        {
            lst.Items.Clear();
            string lastError;
            var    dc = DataTools.Data(SqlCommands.SqlGetTable(), connectionString, out lastError);

            if (allowNull)
            {
                lst.Items.Add(" ");
            }
            foreach (DataRow dcr in dc.Rows)
            {
                lst.Items.Add(dcr[0].ToString());
                if (dcr[0].ToString() == selectTableName)
                {
                    lst.SelectedIndex = lst.Items.Count - 1;
                }
            }

            if (lst.SelectedIndex == -1)
            {
                lst.SelectedIndex = 0;
            }
        }
        private List <string> get1NList(string tableName, List <string> newList = null, List <string> treatedTable = null)
        {
            var lastError = "";

            if (newList == null)
            {
                newList = new List <string>();
            }
            if (treatedTable == null)
            {
                treatedTable = new List <string>();
            }

            treatedTable.Add(tableName);

            var sql = SqlCommands.SqlGet1NFromConstraint(tableName, Program.AppSet.Schema);

            var dt = DataTools.Data(sql, Program.AppSet.ConnectionString, out lastError);

            var currentList = dt
                              .AsEnumerable()
                              .Select(row => row.Field <string>("table_name"))
                              .ToList();

            foreach (var table in currentList.ToArray())
            {
                if (!treatedTable.Contains(table, StringComparer.InvariantCultureIgnoreCase))
                {
                    get1NList(table, currentList);
                }
            }

            newList.AddRange(currentList);

            return(newList);
        }
        public ExcludeTableForm(TabloidConfig config, string savePath)
        {
            InitializeComponent();
            _config   = config;
            _savePath = savePath;

            string lastError;

            var dt = DataTools.Data(SqlCommands.SqlGetTable(Program.AppSet.Schema), Program.AppSet.ConnectionString, out lastError);

            var defaultExcludedTable = LoadSelection();

            _initializing = true;

            foreach (DataRow item in dt.Rows)
            {
                var itemName  = item[dt.Columns[0].ColumnName].ToString();
                var isChecked = !defaultExcludedTable.Contains(itemName.ToLower());

                checkedListBox1.Items.Add(itemName, isChecked);
            }

            _initializing = false;
        }
        private void Analyse(object sender, DoWorkEventArgs e)
        {
            string lastError;

            var           dc        = DataTools.Data(SqlCommands.SqlGetTable(), Program.AppSet.ConnectionString, out lastError);
            List <string> tableList = new List <string>();

            //search in table list and attach corresponding view
            foreach (DataRow dcr in dc.Rows)
            {
                var attachedView = TabloidConfig.Config.Views.Where(c => string.Equals(c.NomTable, dcr[0].ToString(), StringComparison.InvariantCultureIgnoreCase)).ToList();
                tableList.Add(dcr[0].ToString());

                var result = new TableAnalysisResult
                {
                    TableName = dcr[0].ToString(),
                    Views     = attachedView
                };

                if (attachedView.Count == 0)
                {
                    result.Results.Add(new TableWithNoView(result, this));
                }
                _results.Add(result);
            }


            foreach (TabloidConfigView v in TabloidConfig.Config.Views)
            {
                var result = new TableAnalysisResult
                {
                    TableName = null
                };
                result.Views.Add(v);

                if (!tableList.Contains(v.NomTable, StringComparer.OrdinalIgnoreCase))//search view with no table
                {
                    result.Results.Add(new ViewWithNoTable(result, this));
                }


                var joinList = v.Jointures.GetJointures(VisibiliteTools.GetFullVisibilite(), true);
                if (joinList.Count > 0)
                {
                    var dfk = DataTools.Data(SqlCommands.SqlGetForeignKey(v.NomTable, v.Schema), Program.AppSet.ConnectionString, out lastError);

                    foreach (TabloidConfigJointure j in joinList)
                    {
                        if (j.Relation == "N:1" || string.IsNullOrEmpty(j.Relation))
                        {
                            var sql = $"{dfk.Columns[0].ColumnName}='{j.ChampDeRef}' and {dfk.Columns[1].ColumnName}='{j.NomTable}' and {dfk.Columns[2].ColumnName}='{j.DbKey}'";
                            if (dfk.Select(sql).Count() == 0)
                            {
                                result.Results.Add(new JoinWithNoConstraint(j, v, this));
                            }
                        }
                    }
                }

                if (result.Results.Count > 0)
                {
                    _results.Add(result);
                }
            }
        }
Beispiel #24
0
        public static void onConfigLoaded(string schema, IWin32Window own)
        {
            //for mysql verify if default schema is database name
            if (Program.AppSet.ProviderType == Provider.MySql && Program.AppSet.Schema != getDataBaseNameFromConnectionString(Program.AppSet.ConnectionString))
            {
                if (MetroMessageBox.Show(own, Properties.Resources.MySQLDifferentBaseName, Properties.Resources.Question, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    var connectionDataBaseName = getDataBaseNameFromConnectionString(Program.AppSet.ConnectionString);
                    WizardSQLHelper.SetAllViewSchema(connectionDataBaseName);
                    Program.AppSet.Schema = connectionDataBaseName;
                }
            }

            //verify role columun existance
            var tableColumns = new Dictionary <string, Dictionary <string, FieldDescriptionType> > {
                { "roles", new Dictionary <string, FieldDescriptionType> {
                      { "ad_group", new FieldDescriptionType {
                            type = DbType.String, extra = "(255)"
                        } },
                      { "droits_limiteecr", new FieldDescriptionType {
                            type = DbType.Int64, extra = "(20) DEFAULT 0"
                        } },                                                                                  //"numeric(20,0) DEFAULT 0"
                      { "droits_limite", new FieldDescriptionType {
                            type = DbType.Int64, extra = "(20) DEFAULT 1"
                        } }
                  } },
                { "utilisateurs", new Dictionary <string, FieldDescriptionType> {
                      { "theme", new FieldDescriptionType {
                            type = DbType.String, extra = "(100)"
                        } },
                      { "lastchatid", new FieldDescriptionType {
                            type = DbType.Int64, extra = " DEFAULT 0"
                        } },
                      { "password", new FieldDescriptionType {
                            type = DbType.String, extra = "(100)"
                        } },
                      { "token", new FieldDescriptionType {
                            type = DbType.String, extra = "(40)"
                        } },
                      { "ref", new FieldDescriptionType {
                            type = DbType.Boolean
                        } }
                  } }
            };

            foreach (var t in tableColumns)
            {
                string lastError;

                DataTable tableColumnsList = null;

                if (Program.AppSet.ProviderType == Provider.Postgres)
                {
                    foreach (var cschema in WizardTools.Tools.GetSearchPath(Program.AppSet.ConnectionString))
                    {
                        tableColumnsList = DataTools.Data(SqlCommands.SqlGetColums(t.Key, cschema), Program.AppSet.ConnectionString, out lastError);//c0
                        if (!string.IsNullOrEmpty(lastError))
                        {
                            throw new Exception(lastError);
                        }
                        if (tableColumnsList.Rows.Count > 0)
                        {
                            break;
                        }
                    }
                }
                else
                {
                    tableColumnsList = DataTools.Data(SqlCommands.SqlGetColums(t.Key, null), Program.AppSet.ConnectionString, out lastError);//c0
                    if (!string.IsNullOrEmpty(lastError))
                    {
                        throw new Exception(lastError);
                    }
                }

                var fieldColumnName = tableColumnsList.Columns[0].ColumnName;

                foreach (var c in t.Value)
                {
                    if (tableColumnsList.Select(fieldColumnName + "='" + c.Key + "'").Length == 0)//field doesn't exist
                    {
                        var param = new[] { t.Key, c.Key, c.Value.ToString(), Program.AppSet.Schema };

                        var result = WizardSQLHelper.ExecuteFromFile("addField.sql", param, Program.AppSet.ConnectionString, own);
                    }
                }
            }
            //Detect old role implementation
            if (!WizardTools.Tools.isTableExist("lst_roles"))
            {
                var result = MetroMessageBox.Show(own, Properties.Resources.WrongConfigVersion, Properties.Resources.Information, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation);

                if (result == DialogResult.Yes)
                {
                    AutomaticViewBuilder.setOldUtilisateurs(schema);       //.SetTable(schema);

                    var view = TabloidConfig.Config.Views["utilisateurs"]; //Todo role field could not be c4 on manual déclaration

                    WizardSQLHelper.ConvertSimpleList(view, view.Colonnes["c4"], "lst_roles", own);

                    removeView("utilisateurs");
                    removeView("roles");
                    removeView("lst_roles");
                    removeView("perso");
                }
            }

            //Detect roles/utilisateur/perso définition
            if (!TabloidConfig.Config.Views["roles"].AutomaticCreation ||
                !TabloidConfig.Config.Views["utilisateurs"].AutomaticCreation ||
                !TabloidConfig.Config.Views["perso"].AutomaticCreation)
            {
                var dr = MetroMessageBox.Show(own, Properties.Resources.CustumRoleUsed,
                                              Properties.Resources.Information, MessageBoxButtons.YesNo, MessageBoxIcon.Information);


                if (dr == DialogResult.Yes)
                {
                    removeView("roles");
                    removeView("utilisateurs");
                    removeView("perso");
                }
            }
            //Detect empty salt grain
            if (string.IsNullOrEmpty(Program.AppSet.grainDeSable))
            {
                Program.AppSet.grainDeSable = GetUniqueKey(7);
                TabloidConfig.Config.updateCurrentKey(Program.AppSet.grainDeSable);
            }
        }
Beispiel #25
0
        private void Button_end(object sender, PageEventArgs e)
        {
            var param = new string[] { txtSchema.Text, txtTable.Text, TxtRef.Text };

            if (radUseExistingTable.Checked)
            {
                string lastError;
                //find db key
                var dc = DataTools.Data(SqlCommands.SqlGetColums(cmbTable.Text), _connectionString, out lastError);//3

                param = new string[] { Program.AppSet.Schema, cmbTable.Text, dc.Select(dc.Columns[3].ColumnName + " like 'PRI%'")[0][0].ToString() };
            }

            var viewName = String.IsNullOrEmpty(txtNomVue.Text) ? param[1] : txtNomVue.Text;

            if (TabloidConfig.Config.Views.Contains(viewName))
            {
                MetroMessageBox.Show(this, TabloidWizard.Properties.Resources.ViewNameAlreadyExist, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
                e.Cancel = true;
                return;
            }


            //add new View
            CreatedView = new TabloidConfigView
            {
                Schema   = param[0],
                Nom      = viewName,
                Titre    = txtInititView.Text,
                NomTable = param[1],// String.IsNullOrEmpty(txtNomVue.Text) ? "" : txtNomVue.Text,
                DbKey    = param[2]
            };

            if (radUseExistingTable.Checked)
            {
                TabloidConfig.Config.Views.Add(CreatedView);

                //set as default view
                setAsDefaultView(viewName);

                //add to menu
                addToMenu(CreatedView);

                return;
            }

            e.Cancel = !WizardSQLHelper.ExecuteFromFile("table.sql", param, _connectionString, this);
            if (e.Cancel)
            {
                return;
            }

            var Tc = new TabloidConfigColonne
            {
                Champ   = "nom_" + param[1],
                Titre   = "Nom",
                Editeur = TemplateType.TextBox,
                Type    = DbType.String
            };

            Tools.AddWithUniqueName(CreatedView.Colonnes, Tc, "C");

            TabloidConfig.Config.Views.Add(CreatedView);

            //set as default view
            setAsDefaultView(viewName);

            //add to menu
            addToMenu(CreatedView);
        }
Beispiel #26
0
        private void btn_Click(object sender, EventArgs e)
        {
            var error = false;

            progressBar1.Maximum = 100;
            progressBar1.Value   = 0;

            var schema = txtSchema.Text == "" ? "public" : txtSchema.Text;

            object[] param = { txtHote.Text, txtUtil.Text, txtMdp.Text, txtBase.Text, schema };

            var connectionString = cmbType.SelectedIndex == 0
                ? string.Format("Datasource={0};Database={3};uid={1};pwd={2};", param)
                : string.Format("User ID={1};Password={2};Host={0};Port=5432;Database={3};SearchPath={4},public;", param);

            Program.AppSet = new AppSetting
            {
                ConnectionString = connectionString,
                ProviderType     = cmbType.SelectedIndex == 0 ? Provider.MySql : Provider.Postgres,
                Titre            = txtBase.Text,
                identParam       = cmbType.SelectedIndex == 0 ? "?" : "@",
                sqlDebug         = "oui"
            };

            Tools.SetDefaultProviderFromAppSet();

            lblState.Text = Resources.NewFromBaseForm_btn_Click_Récupération_des_Tables;
            lblState.Refresh();

            SqlCommands.Provider  = cmbType.SelectedIndex == 0 ? Provider.MySql : Provider.Postgres;
            Program.AppSet.Schema = schema;

            string lastError;

            var dt = DataTools.Data(SqlCommands.SqlGetTable(), connectionString, out lastError);

            if (dt == null)
            {
                MetroMessageBox.Show(this, Resources.NewFromBaseForm_btn_Click_ + lastError, Resources.Erreur,
                                     MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (!string.IsNullOrEmpty(lastError))
            {
                lblState.Text = lastError;
                error         = true;
            }
            else
            {
                TabloidConfig.Config = new TabloidConfig();

                TabloidConfig.Config.TabloidConfigApp.UseLockDatabaseField = chkLockInDB.Checked;

                var avt = new ArrayVerify();

                var config = new BuildFromBase.BaseImporterConfig
                {
                    RemoveTableName    = chkSuppNomTable.Checked,
                    ToUpperCase        = chkCasse.Checked,
                    ReplaceUnderscrore = chkUnderscrore.Checked,

                    ConnectionString = connectionString
                };

                if (dt.Rows.Count > 0)
                {
                    TabloidFields.TabloidFieldsArray = null;
                    //Program.AppSet.pageDefaut = "/tabloid/BSliste.aspx?table=" +
                    AppSetting.setDefaultPage(dt.Rows[0][0].ToString());
                    var delta = 100 / dt.Rows.Count;

                    //read Tables
                    foreach (DataRow dtr in dt.Rows)
                    {
                        progressBar1.Value += delta;
                        progressBar1.Refresh();

                        var dtName = dtr[0].ToString();

                        var tableConfig = new TabloidConfigView();

                        try
                        {
                            BuildFromBase.GetTable(this, dtName, schema, ref tableConfig, ref avt, config);
                            TabloidConfig.Config.Views.Add(tableConfig);
                        }
                        catch (Exception ex)
                        {
                            lblState.Text = ex.ToString();
                        }
                    }

                    if (error)
                    {
                        return;
                    }
                }

                //verify tabloid table existance
                if (!avt.IsThereAll(TabloidTables.TabloidTablesArray.Count()))
                {
                    var l = avt.NotInIndex(TabloidTables.TabloidTablesArray.Count()); //list unaviable tables
                    var r = DialogResult.Yes;

                    if (!chkAutoTable.Checked)
                    {
                        //Show message
                        var strCh = string.Join("\n\t- ",
                                                TabloidTables.TabloidTablesArray
                                                .Where((f, index) => l.Any(i => i == index))
                                                .Select((x, index) => x.Name).ToArray());

                        r = MetroMessageBox.Show(this,
                                                 string.Format(
                                                     Resources.NewFromBaseForm_tables_inutiles,
                                                     strCh),
                                                 Resources.Information,
                                                 MessageBoxButtons.YesNo,
                                                 MessageBoxIcon.Exclamation);
                    }

                    if (r == DialogResult.Yes)
                    {
                        var toCreate = TabloidTables.TabloidTablesArray
                                       .Where((f, index) => l.Any(i => i == index))
                                       .ToList();

                        TabloidTables.CreateTable(
                            toCreate, connectionString, this);

                        foreach (var t in toCreate)// table to config
                        {
                            var tableConfig = new TabloidConfigView();
                            try {
                                BuildFromBase.GetTable(this, t.Name, schema, ref tableConfig, ref avt, config);
                                TabloidConfig.Config.Views.Add(tableConfig);
                            }
                            catch (Exception ex)
                            {
                                lblState.Text = ex.ToString();
                            }
                        }
                    }
                }

                OlStyleCollection.olStyles = new List <OlStyle>();

                DialogResult = DialogResult.OK;
                Close();
            }
        }
Beispiel #27
0
        /// <summary>
        /// verify tabloid table aviability
        /// </summary>
        /// <param name="tableName">table to search</param>
        /// <param name="schema"></param>
        /// <param name="tableConfig"></param>
        /// <param name="avt"></param>
        /// <param name="connectionString"></param>
        /// <returns></returns>
        public static bool GetTable(IWin32Window own, string tableName, string schema, ref TabloidConfigView tableConfig, ref ArrayVerify avt, BaseImporterConfig config)
        {
            var indexTable = TabloidTables.IsTabloidTable(tableName, ref avt);
            var toShow     = indexTable == -1;

            if (!toShow)                                                       //this is a tabloid table
            {
                toShow = !TabloidTables.TabloidTablesArray[indexTable].Hidden; //for tabloid table verify hidden propertie
            }
            if (toShow)                                                        //this is not a tabloid table
            {
                tableConfig        = new TabloidConfigView();
                tableConfig.Nom    = tableConfig.Titre = tableName;
                tableConfig.Titre  = ModifyTitle(tableConfig.Titre, tableName, config);
                tableConfig.Schema = schema;

                string lastError;

                var dc = DataTools.Data(SqlCommands.SqlGetColums(tableName), config.ConnectionString, out lastError);//013

                if (!string.IsNullOrEmpty(lastError))
                {
                    throw new Exception(lastError);
                    //lblState.Text = lastError;
                    return(false);
                }
                //read Fields
                var avc  = new ArrayVerify();
                var cmpt = 0;

                foreach (DataRow dcr in dc.Rows)
                {
                    cmpt++;

                    if (TabloidFields.IstabloidField(dcr[0].ToString(), ref avc) == -1)
                    {
                        var colonneConfig = new TabloidConfigColonne();

                        if (dcr[3].ToString().StartsWith("PRI", StringComparison.InvariantCulture))
                        {
                            tableConfig.DbKey = dcr[0].ToString();
                        }
                        else
                        {
                            colonneConfig.Nom   = "C" + cmpt;
                            colonneConfig.Champ = colonneConfig.Titre = dcr[0].ToString();

                            colonneConfig.Titre = ModifyTitle(colonneConfig.Titre, tableName, config);



                            colonneConfig.Type = dataHelper.DbTypeConverter.Convert(dcr[1].ToString(), SqlCommands.Provider.ToString());

                            tableConfig.Colonnes.Add(colonneConfig);
                        }
                    }
                }

                if (!avc.IsThereAll(TabloidFields.TabloidFieldsArray.Count()))        //is all tabloid field there?
                {
                    var l = avc.NotInIndex(TabloidFields.TabloidFieldsArray.Count()); //list unaviable fields
                    var r = DialogResult.Yes;

                    if (!config.CreateAuto)
                    {
                        //Show message
                        var strCh = string.Join("\n\t- ",
                                                TabloidFields.TabloidFieldsArray
                                                .Where((f, index) => l.Any(i => i == index))
                                                .Select((x, index) => x.Name + "_" + tableName).ToArray());

                        r = MetroMessageBox.Show(own,
                                                 string.Format(
                                                     Resources.NewFromBaseForm_GetTable_,
                                                     tableName, strCh),
                                                 Resources.Information,
                                                 MessageBoxButtons.YesNo,
                                                 MessageBoxIcon.Exclamation);
                    }

                    if (r == DialogResult.Yes)
                    {
                        TabloidFields.CreateField(
                            TabloidFields.TabloidFieldsArray
                            .Where((f, index) => l.Any(i => i == index))
                            .ToList(), tableName, schema, config.ConnectionString);
                    }
                }

                var jr = WizardSQLHelper.SetJoinFromConstraint(tableConfig, config.ConnectionString, ref lastError); //getting join

                if (jr != null && !string.IsNullOrEmpty(lastError))
                {
                    throw new Exception(lastError);                                               //lblState.Text = lastError;
                }
                return(jr != null);
            }

            return(false);
        }