Verification de doublons dans une base de données Access

warzet Messages postés 44 Date d'inscription lundi 27 août 2007 Statut Membre Dernière intervention 1 novembre 2016 - 21 nov. 2013 à 10:23
Adrien2p Messages postés 53 Date d'inscription jeudi 14 février 2013 Statut Membre Dernière intervention 16 juillet 2014 - 17 déc. 2013 à 11:26
Bonjour à tous, j'ai besoin d'un coup de pouce pour trouver une solution à mon problème actuel qui est le suivant.
        #region BOUTON NOUVEAU

private void Click_Nouveau(object sender, EventArgs e)
{
#region NOUVEAU

if (this.btnNouveau.Text == "&Nouveau")
{
Defaut();
Montrer_btn(true);

this.txtDoublant.Text = "N";
this.txtEcoleExClasse.Text = "";
this.txtCodeEleve.Text = "";
this.txtCodeEnseignant.Text = " ";
this.txtCodeEnseignant.SelectAll();
this.txtCodeEnseignant.Focus();
this.txtCodeLieu.Text = "";
this.txtCodeSexe.Text = "";
this.txtCodeNationalite.Text = "";
this.txtCodeStatut.Text = "";
this.txtAffectation.Text = "";
this.txtCodeClasse.Text = "";
this.txtCodeAnneeScolaire.Text = "";
this.txtCodeDiplome.Text = "";
this.txtCodeEcole.Text = "";
this.txtCodeExClasse.Text = "";
this.txtCodeExAnnee.Text = "";
this.lblTotal.Visible = false;
this.cboExClasse.Enabled = false;
this.cboRedoublant.Text = "";

this.btnNouveau.Text = "&Sauver";
this.btnNouveau.BackColor = Color.Green;

this.btnAnnuler.Text = "&Annuler";
this.btnAnnuler.BackColor = Color.Green;

this.btnModifier.Enabled = false;
this.btnSupprimer.Enabled = false;
this.btnPrecedent.Enabled = false;
this.btnSuivant.Enabled = false;
this.btnPremier.Enabled = false;
this.btnDernier.Enabled = false;
this.lblPosition.Text = "00/00";
this.AcceptButton = this.btnNouveau;
this.dgvEleves.Visible = false;
}

#endregion

#region SAUVER

else
{
System.Data.OleDb.OleDbConnection Cnx = new System.Data.OleDb.OleDbConnection();
Cnx.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + Application.StartupPath + @"\GestionNotesScolaires.mdb;Jet OLEDB:Database Password=guehi_1964";
if ((this.txtCodeEnseignant.Text == "") || (this.txtCodeEnseignant.Text == " "))
{
MessageBox.Show("Le Code du Personnel\n est obligatoire", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.txtCodeEnseignant.Text = " ";
this.txtCodeEnseignant.Focus();
this.txtCodeEnseignant.SelectAll();
}
else
{

if ((this.txtCodeEleve.Text == "") || (this.txtCodeEleve.Text == " "))
{
MessageBox.Show("Le Matricule de l'Elève\n est obligatoire", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.txtCodeEleve.Text = " ";
this.txtCodeEleve.Focus();
this.txtCodeEleve.SelectAll();
}
else
{
if (string.IsNullOrEmpty(this.txtNomEleve.Text))// == "")
{
MessageBox.Show("Veuillez Saisir\nle Nom de l'Elève svp", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.txtNomEleve.Focus();
}
else
{
if (string.IsNullOrEmpty(this.txtPrenomEleve.Text))//=="")
{
MessageBox.Show("Veuillez Saisir\nle Prénom de l'Elève svp", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.txtPrenomEleve.Focus();
}
else
{
if (this.txtCodeLieu.Text == "")
{
MessageBox.Show("Veuillez choisir le Lieu de Naissance\ndans la liste déroulante", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.cboLieuNaissance.Text = "-----Select-----";
this.cboLieuNaissance.Focus();
this.cboLieuNaissance.SelectAll();
}
else
{
if (this.txtCodeSexe.Text == "")
{
MessageBox.Show("Veuillez choisir le Sexe\nde l'Elève dans la liste déroulante", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.cboSexe.Text = "-----Select-----";
this.cboSexe.Focus();
this.cboSexe.SelectAll();
}
else
{
if (this.txtCodeNationalite.Text == "")
{
MessageBox.Show("Veuillez choisir la Nationalité\ndans la liste déroulante", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.cboNationalite.Text = "-----Select-----";
this.cboNationalite.Focus();
this.cboNationalite.SelectAll();
}
else
{
if (this.txtCodeStatut.Text == "")
{
MessageBox.Show("Veuillez choisir le Statut de\nl'Elève dans la liste déroulante", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.cboStatut.Text = "-----Select-----";
this.cboStatut.Focus();
this.cboStatut.SelectAll();
}
else
{
if (this.txtCodeAffectation.Text == "")
{
MessageBox.Show("Veuillez choisir le N° de la Décision\nd'Affectation dans la liste déroulante", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.cboDecision.Text = "-----Select-----";
this.cboDecision.Focus();
this.cboDecision.SelectAll();
}
else
{
if (this.txtCodeClasse.Text == "")
{
MessageBox.Show("Veuillez choisir\nla Classe Actuelle\ndans la liste déroulante", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.cboClasse.Text = "--Select--";
this.cboClasse.Focus();
this.cboClasse.SelectAll();
}
else
{
if (this.txtCodeAnneeScolaire.Text == "")
{
MessageBox.Show("Veuillez choisir l'Année Scolaire\ndans la liste déroulante", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.cboAnneeScolaire.Text = "-Select-";
this.cboAnneeScolaire.Focus();
this.cboAnneeScolaire.SelectAll();
}
else
{
if (this.cboRedoublant.Text == "")
{
MessageBox.Show("Veuillez indiquer si l'Elève\nRedouble ou non", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.cboRedoublant.Text = "-----Select-----";
this.cboRedoublant.Focus();
this.cboRedoublant.SelectAll();
}
else
{
if (this.txtCodeRegime.Text == "")
{
MessageBox.Show("Veuillez indiquer si l'Elève\nest Boursier ou non", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.cboRegime.Text = "-----Select-----";
this.cboRegime.Focus();
this.cboRegime.SelectAll();
}
else
{
if (this.txtCodeEcole.Text == "")
{
MessageBox.Show("Veuillez choisir l'Ecole d'Origine\ndans la liste déroulante", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.cboEcole.Text = "------Select------";
this.cboEcole.Focus();
this.cboEcole.SelectAll();
}
else
{
if (this.txtCodeExClasse.Text == "")
{
MessageBox.Show("Veuillez choisir la Classe d'Origine\ndans la liste déroulante", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.cboExClasse.Text = "--Select--";
this.cboExClasse.Focus();
this.cboExClasse.SelectAll();
}
else
{
if (this.txtCodeExAnnee.Text == "")
{
MessageBox.Show("Veuillez choisir l'Année Scolaire\ndans la liste déroulante", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.cboExAnnee.Text = "--Select--";
this.cboExAnnee.Focus();
this.cboExAnnee.SelectAll();
}
else
{
if (this.txtCodeDiplome.Text == "")
{
MessageBox.Show("Veuillez choisir le Diplôme\ndans la liste déroulante", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.cboDiplome.Text = "-----Select-----";
this.cboDiplome.Focus();
this.cboDiplome.SelectAll();
}
else
{
if (this.pbxPhoto.Image == null)
{
MessageBox.Show("Veuillez Ajouter la photo de l'Elève", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
//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?", this.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
if (float.TryParse(this.txtMoyenne.Text, out temp))
{
if ((temp < 0) || (temp > 20))
{
MessageBox.Show("La Moyenne doit être \ncomprise entre 00 et 20", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.txtMoyenne.Text = " ";
this.txtMoyenne.SelectAll();
this.txtMoyenne.Focus();
}
else
{
try
{
// Tableau d'octets representant l'image au format jpeg
MemoryStream mstPhoto = new MemoryStream();
pbxPhoto.Image.Save(mstPhoto, System.Drawing.Imaging.ImageFormat.Jpeg);
bytPhoto = mstPhoto.GetBuffer();

Cnx.Open();
System.Data.OleDb.OleDbDataReader DtR;
String Sqlqueries = "SELECT * FROM [Eleves] where code_eleve=@p5;";
System.Data.OleDb.OleDbCommand Cmde = new System.Data.OleDb.OleDbCommand(Sqlqueries, Cnx);
Cmde.Parameters.Add(new OleDbParameter("p5", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, this.txtCodeEleve.Text));
DtR = Cmde.ExecuteReader();
if (DtR.Read() != true)
{
//Majuscule();
// Connexion à la base de données
OleDbConnection Conex = new OleDbConnection(strConex);
//Préparation des paramètres
OleDbParameter Param_CodeElv = new OleDbParameter("@CodeElv", OleDbType.VarWChar, 50); //0
OleDbParameter Param_NomElv = new OleDbParameter("@NomElv", OleDbType.VarWChar, 50); //1
OleDbParameter Param_PrenomElv = new OleDbParameter("@PrenomElv", OleDbType.VarWChar, 50); //2
OleDbParameter Param_Sexe = new OleDbParameter("@Sexe", OleDbType.Integer, 7);//3
OleDbParameter Param_DateNaiss = new OleDbParameter("@DateNaiss", OleDbType.Date, 8);//4
OleDbParameter Param_CodeLieu = new OleDbParameter("@CodeLieu", OleDbType.Integer, 7);//5
OleDbParameter Param_CodeNat = new OleDbParameter("@CodeNat", OleDbType.Integer, 7);//6
OleDbParameter Param_Pere = new OleDbParameter("@NomPere", OleDbType.VarWChar, 50);//7
OleDbParameter Param_Mere = new OleDbParameter("@NomMere", OleDbType.VarWChar, 50);//8
OleDbParameter Param_DateOps = new OleDbParameter("@DateOps", OleDbType.Date, 8);//9
OleDbParameter Param_Ecole = new OleDbParameter("@Ecole", OleDbType.Integer, 7);//10
OleDbParameter Param_Classe = new OleDbParameter("@Classe", OleDbType.Integer, 7);//11
OleDbParameter Param_Annee = new OleDbParameter("@Annee", OleDbType.Integer, 7);//12
OleDbParameter Param_CodeDip = new OleDbParameter("@CodeDip", OleDbType.Integer, 7);//13
OleDbParameter Param_Statut = new OleDbParameter("@Statut", OleDbType.Integer, 7);//14
OleDbParameter Param_Affect = new OleDbParameter("@Affect", OleDbType.Integer, 7);//15
OleDbParameter Param_Photo = new OleDbParameter("@Photo", OleDbType.VarBinary); //16
OleDbParameter Param_CodeEns = new OleDbParameter("@CodeEns", OleDbType.VarWChar, 50); //17
OleDbParameter Param_Transf = new OleDbParameter("@Transf", OleDbType.VarWChar, 50);//18

Param_CodeElv.Value = this.txtMatricule.Text; //0
Param_NomElv.Value = this.txtNomEleve.Text; //1
Param_PrenomElv.Value = this.txtPrenomEleve.Text; //2
Param_Sexe.Value = this.txtCodeSexe.Text; //3
Param_DateNaiss.Value = this.txtDateNaissance.Text; //4
Param_CodeLieu.Value = this.txtCodeLieu.Text; //5
Param_CodeNat.Value = this.txtCodeNationalite.Text; //6
Param_Pere.Value = this.txtNomPere.Text; //7
Param_Mere.Value = this.txtNomMere.Text;// 8
Param_DateOps.Value = this.txtDateInscription.Text; //9
Param_Ecole.Value = this.txtCodeEcole.Text;//10
Param_Classe.Value = this.txtCodeExClasse.Text;//11
Param_Annee.Value = this.txtCodeExAnnee.Text;//12
Param_CodeDip.Value = this.txtCodeDiplome.Text; //13
Param_Statut.Value = this.txtCodeStatut.Text;//14
Param_Affect.Value = this.txtCodeAffectation.Text;//15
Param_Photo.Value = this.bytPhoto; //16
Param_CodeEns.Value = this.txtCodeEnseignant.Text; //17
Param_Transf.Value = this.txtTransfert.Text;//18

string sInsertionSQL = string.Format("INSERT INTO Eleves([code_eleve], [nom_eleve], [prenom_eleve]," + "\n" +
"[code_civilite], [date_naissance], [code_lieu], [code_nationalite], [nom_pere]," + "\n" +
"[nom_mere], [date_inscription], [code_ecole], [code_classe], [code_annee], [code_diplome]," + "\n" +
"[code_statut], [code_affectation], [photo_eleve], [code_personnel], [num_transfert])" + "\n" +
"VALUES ({0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13},{14},{15},{16},{17},{18})",
Param_CodeElv.ParameterName, //0
Param_NomElv.ParameterName, //1
Param_PrenomElv.ParameterName, //2
Param_Sexe.ParameterName,//3
Param_DateNaiss.ParameterName, //4
Param_CodeLieu.ParameterName, //5
Param_CodeNat.ParameterName, //6
Param_Pere.ParameterName, //7
Param_Mere.ParameterName,// 8
Param_DateOps.ParameterName, //9
Param_Ecole.ParameterName,//10
Param_Classe.ParameterName,//11
Param_Annee.ParameterName,//12
Param_CodeDip.ParameterName,//13
Param_Statut.ParameterName,//14
Param_Affect.ParameterName,//15
Param_Photo.ParameterName,//16
Param_CodeEns.ParameterName,//17
Param_Transf.ParameterName);//18

OleDbCommand Comd = new OleDbCommand(sInsertionSQL.ToString(), Conex);

Comd.Parameters.Add(Param_CodeElv);//0
Comd.Parameters.Add(Param_NomElv);//1
Comd.Parameters.Add(Param_PrenomElv);//2
Comd.Parameters.Add(Param_Sexe);//3
Comd.Parameters.Add(Param_DateNaiss);//4
Comd.Parameters.Add(Param_CodeLieu);//5
Comd.Parameters.Add(Param_CodeNat);//6
Comd.Parameters.Add(Param_Pere);//7
Comd.Parameters.Add(Param_Mere);//8
Comd.Parameters.Add(Param_DateOps);//9
Comd.Parameters.Add(Param_Ecole);//10
Comd.Parameters.Add(Param_Classe);//11
Comd.Parameters.Add(Param_Annee);//12
Comd.Parameters.Add(Param_CodeDip);//13
Comd.Parameters.Add(Param_Statut);//14
Comd.Parameters.Add(Param_Affect);//15
Comd.Parameters.Add(Param_Photo);//16
Comd.Parameters.Add(Param_CodeEns);//17
Comd.Parameters.Add(Param_Transf);//18

Conex.Open();
Comd.ExecuteNonQuery();
MAJ_Reinscription();

Conex.Close();
Defaut_Ajout();
Montrer_btn(true);

this.txtEcoleExClasse.Text = "";
this.txtCodeEleve.Text = " ";
this.txtCodeEleve.Focus();
this.txtCodeEleve.SelectAll();
this.txtCodeLieu.Text = "";
this.txtCodeSexe.Text = "";
this.txtCodeNationalite.Text = "";
this.txtCodeStatut.Text = "";
this.txtAffectation.Text = "";
this.txtCodeClasse.Text = "";
this.txtCodeAnneeScolaire.Text = "";
this.txtCodeDiplome.Text = "";
this.txtCodeEcole.Text = "";
this.txtCodeExClasse.Text = "";
this.txtCodeExAnnee.Text = "";
this.txtCodeRegime.Text = "";
this.lblTotal.Visible = false;
this.cboExClasse.Enabled = false;
this.btnAnnuler.Enabled = true;
this.btnAnnuler.Text = "&Annuler";
this.btnAnnuler.BackColor = Color.Green;
this.btnNouveau.Text = "&Sauver";
this.btnNouveau.BackColor = Color.Green;
this.dgvEleves.Visible = false;
}
else
{
MessageBox.Show("Cet Elève est déjà\nEnregistré dans\nla Base de Donnéees", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
Defaut();
this.txtCodeEleve.Focus();
this.txtCodeEleve.SelectAll();
}
DtR.Close();
Cnx.Close();
}
catch (FileNotFoundException ex)
{
MessageBox.Show(ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}
else
{
MessageBox.Show("Vous n'avez pas entré un nombre", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
this.txtMoyenne.Text = " ";
this.txtMoyenne.SelectAll();
this.txtMoyenne.Focus();
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}

#endregion
}

#endregion

Lorsque je cherche à vérifier le bon fonctionnement en essayant d'enregistrer deux fois le même élève, l'erreur n'est pas interceptée par l'application mais le programme se plante me demandant de les règle intégrité dans ma base de données. J'ai besoin de votre aide. Merci

2 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
21 nov. 2013 à 12:37
Apparté :
A la place de ta cascade de if, utilise l'instruction elseif, cela rendra ton code plus lisible.
0
Adrien2p Messages postés 53 Date d'inscription jeudi 14 février 2013 Statut Membre Dernière intervention 16 juillet 2014 9
17 déc. 2013 à 11:26
Bonjour,

Si tu veux éviter les doublons, je te conseil de mettre les champs en clé primaire, comme sa ce sera indexé sans doublon. Il te faudra juste mettre un Try..Catch.. Pour capturer l'exception dans le cas d'un doublon.

Cordialement
0
Rejoignez-nous