Modifier des donées dans une base Access [Résolu]

cs_warzet 99 Messages postés jeudi 17 janvier 2008Date d'inscription 25 juillet 2013 Dernière intervention - 11 mai 2012 à 10:28 - Dernière réponse : cs_warzet 99 Messages postés jeudi 17 janvier 2008Date d'inscription 25 juillet 2013 Dernière intervention
- 22 mai 2012 à 14:20
[private void btnEnregistrer_Click(object sender, EventArgs e)
{
//on verify que l'utilisateur à saisie quelque chosses avant d appeler la fonction ajouter
if (txtMatricule.Text != "Null" ||
txtNom.Text != "Null" ||
txtPrenom.Text != "Null" ||
txtDateNaissance.Text != "Null" ||
txtLieuNaissance.Text != "Null" ||
cboSexe.Text != "--Sélection--" ||
txtNomPere.Text != "Null" ||
txtNomMere.Text != "Null" ||
txtTuteur.Text != "Null" ||
txtAdresse.Text != "Null" ||
txtTelephone.Text != "Null" ||
pbxPhoto.Image != null ||
txtNomPhoto.Text != "NULL")
Majuscule();
{
//Declaration d'une boite de dialogue "YesNo"
DialogResult result;
//Message de ma boite de dialogue
result = MessageBox.Show("Voulez-vous ajouter un nouvel Elève ?", "Ajout", MessageBoxButtons.YesNo);
//Si l'utilisateur confirme la suppresion on effectue la requette
if (result.ToString() == "Yes")
{

try
{
// Tableau d'octets representant l'image au format jpeg
MemoryStream mstImage = new MemoryStream();
pbxPhoto.Image.Save(mstImage, System.Drawing.Imaging.ImageFormat.Jpeg);
bytPhoto = mstImage.GetBuffer();

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

// Insere l'image dans la base
OleDbCommand Comd = new OleDbCommand("INSERT INTO ELEVES([Matricule], [Nom], [Prenom], [DateNaissance], [LieuNaissance], [Sexe], [NomPere], [NomMere], [Tuteur], [Adresse], [Telephone], [Photo], [NomPhoto]) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", Conex);
Comd.Parameters.Add(new OleDbParameter("Matricule", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, txtMatricule.Text.Replace("'", "\\#\")));
Comd.Parameters.Add(new OleDbParameter("Nom", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, txtNom.Text.Replace("'", "\\#\")));
Comd.Parameters.Add(new OleDbParameter("Prenom", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, txtPrenom.Text.Replace("'", "\\#\")));
Comd.Parameters.Add(new OleDbParameter("DateNaissance", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, txtDateNaissance.Text.Replace("'", "\\#\")));
Comd.Parameters.Add(new OleDbParameter("LieuNaissance", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, txtLieuNaissance.Text.Replace("'", "\\#\")));
Comd.Parameters.Add(new OleDbParameter("Sexe", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, cboSexe.Text.Replace("'", "\\#\")));
Comd.Parameters.Add(new OleDbParameter("NomPere", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, txtNomPere.Text.Replace("'", "\\#\")));
Comd.Parameters.Add(new OleDbParameter("NomMere", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, txtNomMere.Text.Replace("'", "\\#\")));
Comd.Parameters.Add(new OleDbParameter("Tuteur", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, txtTuteur.Text.Replace("'", "\\#\")));
Comd.Parameters.Add(new OleDbParameter("Adresse", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, txtAdresse.Text.Replace("'", "\\#\")));
Comd.Parameters.Add(new OleDbParameter("Telephone", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, txtTelephone.Text.Replace("'", "\\#\")));
Comd.Parameters.Add(new OleDbParameter("Photo", OleDbType.VarBinary, bytPhoto.Length,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, bytPhoto));
Comd.Parameters.Add(new OleDbParameter("NomPhoto", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, txtNomPhoto.Text.Replace("'", "\\#\")));
Comd.ExecuteNonQuery();
Conex.Close();

// Déactive les boutons valider et annuler
btnEnregistrer.Enabled = false;
//btnAnnuler.Enabled = false;

// Active les autres boutons
btnPrecedent.Enabled = true;
btnSuivant.Enabled = true;
//btnAjouter.Enabled = true;

// Affiche la derniere image
frmEleves_Load(null, null);
}
catch (Exception ex)
{
//MessageBox.Show(string.Concat("Erreur: ", ex.Message));
MessageBox.Show("Veuillez renseigner tous les Champs " + ex.Message);//, ex.Message);
this.txtMatricule.Focus();
}
}
}
}][ private void btnModifier_Click(object sender, EventArgs e)
{
// Tableau d'octets representant l'image au format jpeg
MemoryStream mstImage = new MemoryStream();
pbxPhoto.Image.Save(mstImage, System.Drawing.Imaging.ImageFormat.Jpeg);
bytPhoto = mstImage.GetBuffer();

int nNbreLignes; // Nombre de lignes affectées
//Section OleDB
strCnx = " UPDATE ELEVES SET"
+ " Matricule="" + txtMatricule.Text.Replace("'", "\\#\") + "","
+ " Nom="" + txtNom.Text.Replace("'", "\\#\") + "","
+ " Prenom="" + txtPrenom.Text.Replace("'", "\\#\") + "","
+ " DateNaissance="" + txtDateNaissance.Text.Replace("'", "\\#\") + "","
+ " LieuNaissance="" + txtLieuNaissance.Text.Replace("'", "\\#\") + "","
+ " Sexe=" + cboSexe.Text.Replace("'", "\\#\") + ","
+ " NomPere=" + txtNomPere.Text.Replace("'", "\\#\") + ","
+ " NomMere="" + txtNomMere.Text.Replace("'", "\\#\") + "","
+ " Tuteur="" + txtTuteur.Text.Replace("'", "\\#\") + "","
+ " Adresse="" + txtAdresse.Text.Replace("'", "\\#\") + "","
+ " Telephone="" + txtTelephone.Text.Replace("'", "\\#\") + "","
+ " Photo="" + bytPhoto + "","
+ " NomPhoto="" + txtNomPhoto.Text.Replace("'", "\\#\") + "","
+ " WHERE ID="" + txtID.Text.Trim() + """;
try
{
OleDbCommand Comd = new OleDbCommand(strCnx, Conex);
//SqlCommand Comd = new SqlCommand(_requete, Conex);

nNbreLignes = Comd.ExecuteNonQuery();

MessageBox.Show((nNbreLignes != 1 ? "Lignes affectées : " + nNbreLignes.ToString() : "Mise à Jour réussie")
, ""
, MessageBoxButtons.OK
, MessageBoxIcon.Information);

Conex.Close();
frmEleves_Load(this, EventArgs.Empty);
}
catch(Exception ex)
{
MessageBox.Show("L'erreur suivante s'est produite : " + ex);
}
}]
Merci de porter une attention à ces deux; mon soucis, le 1er fonction pour enregistrer les éléments en cours dans une base ACCESS, mais l second coince, aussi si quelqu'un peu m'aider. Je vous remercie. D'autre part, comment verifier les doublons dans une base ACCESS sous C#
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Tupad 239 Messages postés lundi 5 décembre 2005Date d'inscription 27 août 2012 Dernière intervention - 11 mai 2012 à 10:50
3
Merci
Pourquoi tu n'utilises pas des paramètres dans la fonction d'update également?

Pour les doublons, il te faut un champ de référence.

Merci Tupad 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 82 internautes ce mois-ci

Commenter la réponse de Tupad
Meilleure réponse
Tupad 239 Messages postés lundi 5 décembre 2005Date d'inscription 27 août 2012 Dernière intervention - 11 mai 2012 à 12:42
3
Merci
Un but précis pour avoir mis les photos dans la base de données? Le plus simple c'est de les sauver dans un dossier extérieur et d'enregistrer dans la base de données les chemins d'accès complets. J'en ai parlé .

Petite aide
Pour les requeêtes d'insertion :
OleDbCommand Comd = new OleDbCommand("INSERT INTO Table_Test(field1,field2, field3) VALUES (?, ?, ?)", Conex); 
// pour un string
Comd.Parameters.Add(new OleDbParameter("field1", "field1Value");
// pour un int
Comd.Parameters.Add(new OleDbParameter("field2", 12);
// pour une variable
Comd.Parameters.Add(new OleDbParameter("field3", a);
Comd.ExecuteNonQuery();


Pour les updates :
OleDbCommand Comd new OleDbCommand("UPDATE Table_Test field1 ?,field2 = ?, field3 = ?) VALUES (?, ?, ?)", Conex); 
// pour un string
Comd.Parameters.Add(new OleDbParameter("field1", "field1Value");
// pour un int
Comd.Parameters.Add(new OleDbParameter("field2", 12);
// pour une variable
Comd.Parameters.Add(new OleDbParameter("field3", a);
Comd.ExecuteNonQuery();

Merci Tupad 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 82 internautes ce mois-ci

Commenter la réponse de Tupad
Meilleure réponse
Tupad 239 Messages postés lundi 5 décembre 2005Date d'inscription 27 août 2012 Dernière intervention - 11 mai 2012 à 12:58
3
Merci
Arf, il y a une erreur dans la query Update
Pour les updates :

OleDbCommand Comd new OleDbCommand("UPDATE Table_Test field1 ?,field2 = ?, field3 = ? WHERE id = ?", Conex); 
// pour un string
Comd.Parameters.Add(new OleDbParameter("field1", "field1Value");
// pour un int
Comd.Parameters.Add(new OleDbParameter("field2", 12);
// pour une variable
Comd.Parameters.Add(new OleDbParameter("field3", a);
// référence pour l'update
Comd.Parameters.Add(new OleDbParameter("id", id);
Comd.ExecuteNonQuery(); 
 


Encore une chose:
"txtTelephone.Text != "Null"" -> pas optimal, autant laisser les champs vides et faire !string.IsNullOrEmpty(txtTelephone.Text)

Merci Tupad 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 82 internautes ce mois-ci

Commenter la réponse de Tupad
Meilleure réponse
DevLama 353 Messages postés mercredi 13 avril 2011Date d'inscription 10 janvier 2018 Dernière intervention - 16 mai 2012 à 01:14
3
Merci
Salut,
A voir ton code ça donne envie de mourir pour une personne ne fait pas du code,conseil :On reconnais un bon Developpeur non en faisant du code élastique mais en resolvant un problème avec peut de code ou même en peut de Temps.
Pourquoi tu dois toujours faire une nouvelle commande?
Tu fais un Langage qui est orienté Objet pourquoi pas créer des classes de connexion?
en plus pourquoi faire trop de vérification de null;Dans une BD qui a des tables,chaque table a une propriété qui est la clé ,si cette propriété est deja rempli,inutile de faire bcp de vérification.
Voici un petit exemple:
Using System.data.oldeb;
Class ConnectionBD
{
OledbConnection con;
OldbCommand cmd;
String strcon;
Public OldbDataReader rdr;
public String Req;
public void ExecuterBD()
{
con=new OldbConnection(strcon);
con.Open();
cmd=new OledbCommand(req,con);
rdr=cmd.ExecuteReader();
}

public void FermezBD()
{
rdr.Dispose();
con.dispose();
}
}

Pour faire des Mises à Jour:
ConnectionDB hornel=new connectionBD();
hornel.req="Insert Into ETUDIANT(Numero,Nom,Sexe)Values('" + txtnum.text + "','" + txtnom.text + "','" + cbosexe.text + "')";
hornel.ExecuterBD();
hornel.Fermez();


Et Pourquoi pas faire le Entity Framework? ou le Linq to SQL?

SVP change ta manière de programmer,

Hornel Lama

Merci DevLama 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 82 internautes ce mois-ci

Commenter la réponse de DevLama
cs_warzet 99 Messages postés jeudi 17 janvier 2008Date d'inscription 25 juillet 2013 Dernière intervention - 11 mai 2012 à 11:56
0
Merci
J'ai omis de vous avouer que je suis débutant. Alors j'ai essayé mais malheureusement cela à coincé aussi, si vous pouviez me donner un coup de pousse, cela est certainement du à la photo. pour le champ de référence, j'ai le matricule. je veux vraiment apprendre ce langage. merci
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 - 14 mai 2012 à 09:25
0
Merci
Merci à tous pour l'aide précieuse que vous m'avez apportée. Je vais expérimenter tous ces conseils que vous venez de me donner
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 - 22 mai 2012 à 14:20
0
Merci
Merci à vous Hornel Lama, je ferais en sorte de mettre cela en pratique, je voudrais vous signaler que c'est grace à vous que je peux placer un bout de code, alors que j'ai meme pas suivi de cours d'informatique, soyez indulgent, mais j'accepte vos critiques car elles me sont utiles. Encore merci.
Commenter la réponse de cs_warzet

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.