Gestion d'erreur avec ErrorProvider

Signaler
Messages postés
52
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
14 mai 2020
-
Messages postés
642
Date d'inscription
mercredi 10 septembre 2008
Statut
Membre
Dernière intervention
9 février 2017
-
Bonjour à tous

Bien, Je suis dans le développement d’une application simple d’inscription des élèves dans une Base de données. Jusque là tout vas bien sauf que j’aimerai avoir une aide de qui voudra bien.
Au fait j’arrive à bien gérer l’erreur grâce à la gestion des exceptions disons qu’un champ ID élève n’est peut pas être vide ect ;
C’est de la que viens mon soucis, au fait selon le règle de gestion de l école deux élève ne peuvent pas avoir le même numéro de téléphone, et encore moins la même adresse Émail.
Situation bien gérer puisque lorsque l’utilisateur met deux adresse ou numéro de téléphone il reçoit comme message : Modification non effectues risque de doublons dans un champ index clé principale…
Mais le problème est comment faire pour que l’utilisateur sache que c’est plutôt le champ Numéro de téléphone qui pose problème , Adresse Émail ou les deux , ou finalement ID Élève(parce qu’il donne le même résultat en cas d’erreur ) au fait le but serait de place un indicateur du genre errorProvider prêt du contrôle qui pose problème.
J’espère avoir était claire dans mes explications et vous remercie déjà d’avance pour votre aide.

Bonne Journée

8 réponses

salut,
inscription des élèves dans une Base de données

nous devons connaitre la base des données que chez toi.
et si tu veux tu fais une suite de saisie contrôlée à chaque Presses ou Leave selon tes gouts


Soyons Toujours à la disposition des autres
Messages postés
52
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
14 mai 2020

Bonjour Mindongo

Au fait cette Idée m'est passe par tête , mais j'ai trouve qu' en faisant cela je risque de sature mon code je veux qu'il soit le plus claire possible
Et la base de données utilisé est Access 2007.
Try Catch est plus simple par qu’il gère les erreurs de saisie au niveau de la base du coup j'ai un Label qui m 'indique le genre d’exception générer je le trouve plus simple est plus adapter . Mais seulement je voudrais lie une exception au contrôle concerne par l’exception

Merci
Messages postés
52
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
14 mai 2020

voici l’aperçu du code. Notez qu' ici il y a des classes et des variables de classe déjà créer donc je vous montre seulement la fonction qui appelle les variable de classe DataAcess et ses méthodes

public void Enregistrement()
{
int test = 0;




Requette = "INSERT INTO Eleve (IDEtudiant,Prenom,Nom,PostNom,Sexe,Date_Naissance,AdresseEmail,NumeroPhone,AdresseDomicile,Ville,Commune,Quartier,Niveau,Salle,Remarque) VALUES" + "('" + Txt_IDEtudiant.Text + "','" + Txt_Prenom.Text + "','" + Txt_Nom.Text + "','" + Txt_PostNom.Text + "','" + CmbSexe.Text + "','" + Date_Naissance.Text + "','" + Txt_AdresseEmail.Text + "','" + Txt_NumeroPhone.Text + "','" + Txt_AdresseDomicile.Text + "','" + Cmb_Villde.Text + "','" + Txt_Commune.Text + "','" + Txt_Quartier.Text + "','" + Cmb_Niveau.Text + "','" + Cmb_Salle.Text + "','" + textBox1.Text + "')";
test = LaConnection.MiseAJourDonnee(Requette);

if (test == 0)
{
//ReSultatConnection est la variable de classe qui récupère l'exception
label19.Text = LaConnection.ResultatConnection ;


}

else
{
label19.Text ="Enregistement reussi";
}
Messages postés
642
Date d'inscription
mercredi 10 septembre 2008
Statut
Membre
Dernière intervention
9 février 2017
6
Salut,

Alors ton message n'est pas du tout facile à lire et comprendre. Je vais tenter de répondre avec ce que j'ai compris. Si tu veux savoir si l'enregistrement existe, tu peux, avant d'enregistrer dans ta table, faire un SELECT avec comme critère ta clé primaire, si tu as un résultat alors tu compares la ligne que tu as eu en retour avec celle que tu tentes d'insérer en base et comme ça tu auras les champs qui sont identiques et tu l'indique à l'utilisateur.

@++

SD
dans ce cas, tu doit placer plus des label en fonctions de tes textbx que tu veux controlé et g te passe des codes par exemples pour vérifié si un enregistrement existe ou pas dans quelques minutes svp


Soyons Toujours à la disposition des autres
svp j'ai utilisé odbc et tu peut le changer et mon datareader et les codes modifie les selon ta facon de faire svp
void EnregistrerEtudiant()
        {
            //ta ligne de connexion
            //int abcd;
//pour vérifier si un enregistrement existe....
            try
            {
                cnx.Open();
            }
            catch
            {
                MessageBox.Show("Erreure de la Connexion");
            }
            finally
            {
                OdbcCommand cmd;

cmd new OdbcCommand("select * from  Etudiant where IDEtudiant?", cnx);
                cmd.Parameters.Add("IDEtudiant", Txt_IDEtudiant.Text);
                cmd.Connection = cnx;
                OdbcDataReader dtr;

                try
                {
                    dtr = cmd.ExecuteReader();
                    if (dtr.Read())
                    {
                        MessageBox.Show(this, "ID Existant", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        Txt_IDEtudiant.Text.Text = "";
                        Txt_IDEtudiant.Text.Focus();
                    }
else
                       
                        dtr.Close();
//tu place tes codes
Requette = "INSERT INTO Eleve (IDEtudiant,Prenom,Nom,PostNom,Sexe,Date_Naissance,AdresseEmail,NumeroPhone,AdresseDomicile,Ville,Commune,Quartier,Niveau,Salle,Remarque) VALUES" + "('" + Txt_IDEtudiant.Text + "','" + Txt_Prenom.Text + "','" + Txt_Nom.Text + "','" + Txt_PostNom.Text + "','" + CmbSexe.Text + "','" + Date_Naissance.Text + "','" + Txt_AdresseEmail.Text + "','" + Txt_NumeroPhone.Text + "','" + Txt_AdresseDomicile.Text + "','" + Cmb_Villde.Text + "','" + Txt_Commune.Text + "','" + Txt_Quartier.Text + "','" + Cmb_Niveau.Text + "','" + Cmb_Salle.Text + "','" + textBox1.Text + "')"; 
test = LaConnection.MiseAJourDonnee(Requette); 

if (test == 0) 
{ 
//ReSultatConnection est la variable de classe qui récupère l'exception 
label19.Text = LaConnection.ResultatConnection ; 
} 
else 
{ 
label19.Text ="Enregistement reussi"; 
} ..............;;


Soyons Toujours à la disposition des autres
Messages postés
52
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
14 mai 2020

Bonjour à tous
Et déjà merci a ceux qui ont tenté de résoudre mon problème
J'avoue que ce pas facile de faire comprendre
Voila j'ai besoin que mon contrôle TextBox1 notifie l'utilisateur qu'il aurait commis une erreur de saisie grâce à ErrorProvider mais seulement la notification dépendant de l’exception générer par la base grâce au mécanisme Try Catch

Merci et bonne journée
Messages postés
642
Date d'inscription
mercredi 10 septembre 2008
Statut
Membre
Dernière intervention
9 février 2017
6
Re,

Tu dois pouvoir rajouter une contrainte d'unicité dans ta base de données pour tes champs qui doivent l'être.
Ensuite, lors de l'insertion en base, tu récupères une erreur que tu peux intercepter pour la suite du traitement. Si tu interceptes une erreur c'est qu'un des champs n'est pas correct et tu l'indiques à ton utilisateur via un messagebox ou autre...

@++

SD