Fildomen
Messages postés805Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention30 octobre 2010
-
24 oct. 2004 à 11:44
Fildomen
Messages postés805Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention30 octobre 2010
-
25 oct. 2004 à 22:54
salut
j'ai fais un ptit bout de code, qui semble juste, pour modifier ma base de données, mais ma base ne se modifie pas,pouvez-vous m'expliquez pourquoi???
Declarations:
private OleDbCommand BaseCom = new OleDbCommand();
private OleDbDataReader BaseRe;
Code:
id = 30;
BaseCom.Parameters.Clear ();
BaseCom.CommandText = "Update Membres Set DV=@DV where ID = @ID"; //mettre à jour la date de la dernière visite
BaseCom.Parameters.Add("@ID",OleDbType.Integer );
BaseCom.Parameters.Add("@DV",OleDbType.Date );
BaseCom.Parameters["@DV"].Value = DateTime.Now;
BaseCom.Parameters["@ID"].Value = Convert.ToInt32(id);
BaseRe = BaseCom.ExecuteReader();
BaseRe.Read();
BaseRe.Close();
Tous ca pour mettre à jour la date de la dernière visite d'un membre (DV)
Fildomen
Messages postés805Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention30 octobre 2010 25 oct. 2004 à 22:54
ca marche comme ca:
BaseCom.CommandText "UPDATE Membres SET DV "" + DateTime.Now.ToString() + " " WHERE (ID = @ID)";//mettre à jour la date de la dernière visite
BaseCom.Parameters.Add("@ID",OleDbType.Integer);
BaseCom.Parameters["@ID"].Value = id;
BaseCom.ExecuteNonQuery();
le problème était dans le OleDbType de DV, dans acces, j'ai mis Date/Time, et là, j'ai éssayé tout, rien ne marche, pour l'ecrire la première fois, c'est OleDbType.Date, après pour la modification, y a pas comment faire, le msdn dit OleDbType.DBTimeStamp, mais ca marche pas aussi, maintenant tout marche bien, mais, j'aime bien que ca soit avec les paramètres, c'est plus rapide
Fildomen
Messages postés805Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention30 octobre 2010 24 oct. 2004 à 16:59
il me renvoit 0 ligne modifié, je précise que ID est un NuméroAuto,je suis sur que "ID = @ID" peut se provoquer, je c via le acces qu'il a un enregistrement dont id = 30, mettez à jou cette ligne:
BaseCom.Parameters["@ID"].Value = Convert.ToInt32(id);
à
BaseCom.Parameters["@ID"].Value = id;//c'est déjà un integer
Fildomen
Messages postés805Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention30 octobre 2010 24 oct. 2004 à 19:44
je suis sur que tout est en règle, je pense qu'il y a qu'une facon de faire ca, en utilisant des trucs appellés DataSet que je c pas à koi qu'ils servent,car je 'ai pas trouvé un prog c# qui fait l'update avec ma facon, tu trouve pas???
merci commême pour ton aide, et j'espère qu'on va trouver la solution de ce problème.
TheSaib
Messages postés2367Date d'inscriptionmardi 17 avril 2001StatutMembreDernière intervention26 décembre 200723 24 oct. 2004 à 21:03
Ton code est tout a fait correct , les DateSet and co , c'est autre chose, autre utilisation ou autre procédé. Si l'erreur ne venait pas de ta base , le framework t'enverrais une erreur.
Fildomen
Messages postés805Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention30 octobre 2010 24 oct. 2004 à 21:41
Maintenant je suis sur que le problème ne vient pas de mon code, voila une source que j'ai trouvé dans ce site, télécharge là et démarre directement le exe, ici, on peux taper des commandes sql, et là, tape cette commande:
( update employés set téléphone "eee" where nom "Yvan" )
Fildomen
Messages postés805Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention30 octobre 2010 25 oct. 2004 à 20:27
Ok
Déclaration
private OleDbCommand BaseCom = new OleDbCommand();
private OleDbDataReader BaseRe;
private void initialisation()
{BaseCom.Connection new OleDbConnection("Provider Microsoft.Jet.OLEDB.4.0; Data Source=f:\\Serveur\\Data.mdb");
BaseCom.Connection.Open();
}
La modification du DV
case "00300"://l'utilisateur veut charger ces données
{
int id = Convert.ToInt32(Data.Substring(10,Data.Length-10));// on cherche l'id dans les données recues
BaseCom.Parameters.Clear ();BaseCom.CommandText "Select * From Membres where ID @ID";
BaseCom.Parameters.Add("@ID",System.Data.OleDb.OleDbType.Integer);
BaseCom.Parameters["@ID"].Value =id;
BaseRe = BaseCom.ExecuteReader();
BaseRe.Read();// on lui envoie les trucs qu'ils cherche
string envoi =BaseRe["Prénom"].ToString().Length.ToString().PadLeft(3,'0') + BaseRe["Prénom"].ToString() + BaseRe["DV"].ToString().Length.ToString().PadLeft(3,'0') + BaseRe["DV"].ToString() + BaseRe["DI"].ToString().Length.ToString().PadLeft(3,'0') + BaseRe["DI"].ToString() + LireFichier("F:\\Serveur\\Avatar\" + id.ToString() +BaseRe["AvEx"].ToString()) +BaseRe["AvEx"].ToString() ;
Envoyer(i,"00300",envoi);
BaseRe.Close();
BaseCom.Parameters.Clear ();BaseCom.CommandText "UPDATE Membres SET DV @DV WHERE (ID = @ID)"; //mettre à jour la date de la dernière visite
BaseCom.Parameters.Add("@ID",OleDbType.Integer);
BaseCom.Parameters.Add("@DV",OleDbType.Date );
BaseCom.Parameters["@ID"].Value = id;
BaseCom.Parameters["@DV"].Value = DateTime.Now;
MessageBox.Show(BaseCom.ExecuteNonQuery().ToString()); // pour que je teste
break;
}
c'est le code principal, car si je veux mettre tout, 400 ligne, car comme vous le savez, c'est un prog de serveur, alors y a beaucoup de trucs de connexion, mais le code en haut, et le principal pour les base de données.