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

cs_warzet 99 Messages postés jeudi 17 janvier 2008Date d'inscription 25 juillet 2013 Dernière intervention - 20 juil. 2012 à 08:59 - Dernière réponse : krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention
- 24 juil. 2012 à 14:07
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.
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
cs_BinKentsu 66 Messages postés jeudi 1 septembre 2011Date d'inscription 22 juillet 2014 Dernière intervention - 20 juil. 2012 à 09:11
3
Merci
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

Merci cs_BinKentsu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de cs_BinKentsu
Meilleure réponse
cs_warzet 99 Messages postés jeudi 17 janvier 2008Date d'inscription 25 juillet 2013 Dernière intervention - 23 juil. 2012 à 08:56
3
Merci
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

Merci cs_warzet 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de cs_warzet
cs_warzet 99 Messages postés jeudi 17 janvier 2008Date d'inscription 25 juillet 2013 Dernière intervention - 20 juil. 2012 à 10:04
0
Merci
Merci pour le tuyau je vais l'essayer et vous donner la suite.
Commenter la réponse de cs_warzet
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 24 juil. 2012 à 14:07
0
Merci
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é. -
Commenter la réponse de krimog

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.