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