Interdire la saisie de certains type de données dans un champ Text [Résolu]

Signaler
Messages postés
99
Date d'inscription
jeudi 17 janvier 2008
Statut
Membre
Dernière intervention
25 juillet 2013
-
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
-
En effet dans mon Application, il est question de noter des élèves, aussi je souhaiterais interdire des nombres négatifs et des nombres supérieurs à 20. voici ce que j'ai fait:
if (cboMatricule.Text != null ||
txtCodePersonnel.Text != " " ||
cboClasse.Text != null ||
cboMatiere.Text != null ||
cboTypeEvaluation.Text != null ||
cboTrimestres.Text != null ||
txtCoefficiente.Text != "" ||
txtNoteObtenue.Text != "" ||
txtAnnee.Text != "0000-0000")
{
//Declaration d'une boite de dialogue "YesNo"
//Si l'utilisateur confirme l'Enregistrement on exécute la requette
if (MessageBox.Show("Êtes-vous sûr de vouloir Ajouter" + "\n" +
"un nouvel enregistrement?", "Enregistrement...", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
string chaine1, chaine2, chaine3;
chaine1 = txtNoteObtenue.Text;
chaine2 = "20";
chaine3 = "0";
int i = chaine1.CompareTo(chaine2);
int j = chaine1.CompareTo(chaine3);
Boolean egal = chaine1.Equals(chaine2);
Boolean meme = chaine1.Equals(chaine3);

if (i 0 || i -1)
{
//if (j 0 || j 1)
//{

try
{

// Connexion à la base de test
OleDbConnection Conex = new OleDbConnection(strConex);
Conex.Open();

OleDbCommand Comd = new OleDbCommand("INSERT INTO Notation([code_eleve], [code_personnel], [classe], [matiere], [type_evaluation], [note_obtenue], [date_evaluation], [trimestre], [annee], [coefficient]) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", Conex);
Comd.Parameters.Add(new OleDbParameter("code_eleve", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, txtCodeEleve.Text));
Comd.Parameters.Add(new OleDbParameter("code_personnel", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, txtCodePersonnel.Text));
Comd.Parameters.Add(new OleDbParameter("classe", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, cboClasse.Text));
Comd.Parameters.Add(new OleDbParameter("matiere", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, cboMatiere.Text));
Comd.Parameters.Add(new OleDbParameter("type_evaluation", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, cboTypeEvaluation.Text));
Comd.Parameters.Add(new OleDbParameter("note_obtenue", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, txtNoteObtenue.Text));
Comd.Parameters.Add(new OleDbParameter("date_evaluation", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, txtDateNote.Text));
Comd.Parameters.Add(new OleDbParameter("trimestre", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, cboTrimestres.Text));
Comd.Parameters.Add(new OleDbParameter("annee", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, txtAnnee.Text));
Comd.Parameters.Add(new OleDbParameter("coefficient", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, txtCoefficiente.Text));

Comd.ExecuteNonQuery();
Conex.Close();

// Active les autres boutons
this.btnAjouter.Enabled = true;
this.btnAjouter.Text = "&Annuler";
this.btnPrecedent.Enabled = false;
this.btnSuivant.Enabled = false;
this.btnModifier.Enabled = false;
this.btnSupprimer.Enabled = false;

// Affiche le premier elève inscrit
this.cboMatricule.Text = null;
this.txtNomEleve.Text = "";
this.txtPrenomEleve.Text = "";
this.txtCodeEleve.Text = "";
this.txtSexe.Text = "";
this.txtClasse.Text = "";
this.txtIDEleve.Text = "";
this.txtNoteObtenue.Text = "";
this.cboMatricule.Text = "Selection";
this.cboMatricule.SelectAll();
this.cboMatricule.Focus();
}
catch //(FileNotFoundException ex) //(Exception ex)
{
//MessageBox.Show(ex.Message, "Erreur");
MessageBox.Show("Veuillez renseigner tous les Champs", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
this.txtCodePersonnel.Focus();
}
//}
}
MessageBox.Show("La note ne peut-être supérieure à 20",this.Text,MessageBoxButtons.OK,MessageBoxIcon.Information);
this.txtNoteObtenue.Text = " ";
this.txtNoteObtenue.SelectAll();
this.txtNoteObtenue.Focus();
}

Il se trouve que ça marche pour ce qui concerne les nombres supérieurs à 20, mais pour les nombres négatifs ça ne marche pas. Si quelqu'un pourrait orienter mes recherches pour que je m'en sorte. Merci d'avance.
A voir également:

4 réponses

Messages postés
65
Date d'inscription
jeudi 1 septembre 2011
Statut
Membre
Dernière intervention
22 juillet 2014
8
Bonjour,

Au lieu d'utiliser la fonction CompareTo, tu pourrais faire un test de la valeur entrée comme suit :

if (Float.TryParse(txtNoteObtenue.Text))
{
   float temp = Float.Parse(txtNoteObtenue.Text);
   if (temp > 20)||(temp < 0)
      MessageBox.Show("La note entrée n'est pas correcte.");
   else
   {
      // Ton code
   }
}
else
  MessageBox.Show("Vous n'avez pas entré un nombre.");

BinKentsu
Messages postés
99
Date d'inscription
jeudi 17 janvier 2008
Statut
Membre
Dernière intervention
25 juillet 2013
1
Merci pour ta précieuse aide avec ce bout de code; j'ai du le retoucher un tout petit peu.
Dans la zone de déclaration
private float temp;

if(float.TryParse(this.txtNoteObtenue.Text,out temp))
temp=float.Parse(this.txtNoteObtenue.Text);
if ((temp > 20) || (temp < 0))
{
MessageBox.Show("La note doit être \ncomprise entre 20 et 0", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
Ton Code
}
{

Merci encore à vous BinKentsu
Messages postés
99
Date d'inscription
jeudi 17 janvier 2008
Statut
Membre
Dernière intervention
25 juillet 2013
1
Merci pour le tuyau je vais l'essayer et vous donner la suite.
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
48
Salut,

Inutile de rappeler la méthode float.Parse derrière.

La méthode float.TryParse(strin text, out float val) renvoie true si la conversion a été possible, false sinon. Mais si elle a été possible, la valeur a automatiquement été enregistrée dans val (d'où le mot-clé out).

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -