Exemple #1
0
        ///////////////////////////////////////////////////
        public override CResultAErreur VerifieDonnees(CObjetDonnee objet)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                CChampCustom champ = (CChampCustom)objet;

                if (champ.Nom == "")
                {
                    result.EmpileErreur(I.T("The custom field name cannot be empty|108"));
                }
                if (!CObjetDonneeAIdNumerique.IsUnique(champ, CChampCustom.c_champNom, champ.Nom))
                {
                    result.EmpileErreur(I.T("A custom field with this name already exist|109"));
                }

                if (champ.Role == null)
                {
                    result.EmpileErreur(I.T("The field usage cannot be empty|110"));
                }

                //Vérifie que toutes les valeurs sont du type du champ et qu'elles sont uniques
                C2iTypeDonnee typeDonnee   = champ.TypeDonneeChamp;
                Hashtable     tableValeurs = new Hashtable();
                Hashtable     tableDisplay = new Hashtable();
                foreach (CValeurChampCustom valeur in champ.ListeValeurs)
                {
                    object val = valeur.Value;
                    if (val == null)
                    {
                        val = DBNull.Value;
                    }
                    if (tableValeurs[val] != null)
                    {
                        result.EmpileErreur(I.T("The value '@1' appear several times in the value list|111", val.ToString()));
                    }
                    else
                    {
                        tableValeurs[val] = valeur;
                    }

                    if (tableDisplay[valeur.Display] != null)
                    {
                        result.EmpileErreur(I.T("The displayed value '@1' appear several times in the displayed values list|112", valeur.Display));
                    }
                    else
                    {
                        tableDisplay[valeur.Display] = valeur;
                    }

                    if (!typeDonnee.IsDuBonType(valeur.Value))
                    {
                        result.EmpileErreur(I.T("The value '@1' is not a @2 type|113", valeur.Value.ToString(), typeDonnee.Libelle));
                    }
                }

                //Vérifie que la valeur par défaut fait bien partie des valeurs possibles et qu'elle est du bon type
                if (champ.ValeurParDefaut != null && champ.ValeurParDefaut.ToString() != C2iTypeDonnee.c_ConstanteNull)
                {
                    if (!typeDonnee.IsDuBonType(champ.ValeurParDefaut))
                    {
                        result.EmpileErreur(I.T("The default value '@1' is not a @2 type|114", champ.ValeurParDefaut.ToString(), typeDonnee.Libelle));
                    }
                    if (tableValeurs[champ.ValeurParDefaut] == null && (tableValeurs.Count > 0))
                    {
                        result.EmpileErreur(I.T("The default value is not in the possible values list|115"));
                    }
                }

                if (champ.TypeDonneeChamp.TypeDonnee == TypeDonnee.tObjetDonneeAIdNumeriqueAuto)
                {
                    if (champ.LibellePourObjetParent.Trim() == "")
                    {
                        result.EmpileErreur(I.T("Indicate the label for the field seen by the parental object|116"));
                    }
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }
Exemple #2
0
        /// //////////////////////////////////////////////////////
        private void m_btnOk_Click(object sender, System.EventArgs e)
        {
            if (m_cmbType.SelectedItem == null || !(m_cmbType.SelectedItem is C2iTypeDonnee))
            {
                CFormAlerte.Afficher(I.T("Enter a data type|30023"), EFormAlerteType.Exclamation);
                return;
            }
            C2iExpression expression = GetExpression();

            if (expression == null)
            {
                return;
            }

            DataTable table = (DataTable)m_gridValeurs.DataSource;
            //Vérifie que toutes les données sont bien du type
            C2iTypeDonnee typeDonnees = (C2iTypeDonnee)m_cmbType.SelectedItem;
            ArrayList     lstValeurs  = new ArrayList();

            foreach (DataRow row in new ArrayList(table.Rows))
            {
                if (!typeDonnees.IsDuBonType(typeDonnees.ObjectToType(row[c_strColValeurStockee], null)))
                {
                    CFormAlerte.Afficher(I.T("The value @1 is not from type @2|30023", row[c_strColValeurStockee].ToString(), typeDonnees.Libelle), EFormAlerteType.Erreur);
                    return;
                }
                object val = typeDonnees.StringToType(row[c_strColValeurStockee].ToString(), null);
                lstValeurs.Add(new CValeurVariableDynamiqueSaisie(val, (string)row[c_strColValeurAffichee]));
            }

            if (typeDonnees.TypeDonnee == TypeDonnee.tDouble)
            {
                IClasseUnite classe = m_cmbSelectClasseUnite.SelectedValue as IClasseUnite;
                m_variable.ClasseUnite          = classe;
                m_variable.FormatAffichageUnite = m_txtFormatUnite.Text;
            }
            else
            {
                m_variable.ClasseUnite          = null;
                m_variable.FormatAffichageUnite = "";
            }


            m_variable.Nom          = m_txtNomVariable.Text.Replace(" ", "_").Trim();
            m_variable.TypeDonnee2i = (C2iTypeDonnee)m_cmbType.SelectedItem;

            m_variable.ExpressionValidation = expression;
            m_variable.DescriptionFormat    = m_txtDescriptionFormat.Text;
            m_variable.Valeurs.Clear();
            foreach (CValeurVariableDynamiqueSaisie valeur in lstValeurs)
            {
                m_variable.Valeurs.Add(valeur);
            }

            if (m_txtValeurParDefaut.Text.Trim() == "")
            {
                m_variable.ExpressionValeurParDefaut = null;
            }
            else
            {
                CContexteAnalyse2iExpression ctxAnalyse = new CContexteAnalyse2iExpression(new CFournisseurPropDynStd(), null);
                CResultAErreur resultExp = new CAnalyseurSyntaxiqueExpression(ctxAnalyse).AnalyseChaine(m_txtValeurParDefaut.Text);
                if (!resultExp)
                {
                    resultExp.EmpileErreur(I.T("Error in default value formula|30024"));
                    CFormAlerte.Afficher(resultExp);
                    return;
                }
                m_variable.ExpressionValeurParDefaut = (C2iExpression)resultExp.Data;
            }

            m_elementAVariables.OnChangeVariable(m_variable);
            DialogResult = DialogResult.OK;
            Close();
        }