Requete update ne fonctionne pas [Résolu]

f_bassem007 6 Messages postés mardi 10 juillet 2007Date d'inscription 9 août 2011 Dernière intervention - 9 août 2011 à 10:28 - Dernière réponse : krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention
- 23 août 2011 à 09:21
'ai réalisé une requête SQL avec la méthode INSERT INTO en utilisant un combo avec un élément de données Date. D'ou elle a été effectué avec succès. Mais quand j'ai utilisé une requete Update de combo d'un élément de données Date, elle m'affiche une erreur: ERROR [22007] [Simba][SimbaEngine ODBC Driver]Invalid date, time or timestamp value.
>
>Voici le code:
>private void btn_Importer_Click(object sender, EventArgs e)
> {
> OdbcConnection conODBC = new OdbcConnection("DSN=" + dsn.ToString() +
> ";UID=" + login.ToString() +
> ";PWD=" + password.ToString());
>
> SqlConnection conExpress = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\dbHistorique.mdf;Integrated Security=True;User Instance=True;");
>
> //try
> //{
> conODBC.Open();
> string req = "SELECT F_SAL.SA_MATRICULE, F_SAL.SA_NOM, F_SAL.SA_PRENOM, F_SAL.SA_CIVILITE, " +
> "F_SAL.SA_DATEDEPAIE, F_SAL.SA_DATEDECLOTURE " +
> "FROM F_SAL";
> OdbcDataAdapter da = new OdbcDataAdapter(req, conODBC);
> DataSet ds = new DataSet();
> da.Fill(ds, "F_SAL");
>
> conExpress.Open();
> string req2 = "SELECT * FROM Salarie";
> SqlDataAdapter da2 = new SqlDataAdapter(req2, conExpress);
> DataSet ds2 = new DataSet();
> da2.Fill(ds2, "Salarie");
>
> if (ds.Tables["F_SAL"].Rows.Count > 0 || ds2.Tables["Salarie"].Rows.Count > 0)
> {
> for (int i = 0; i < ds.Tables["F_SAL"].Rows.Count; i++)
> {
> bool matched = false;
> for (int j = 0; j < ds2.Tables["Salarie"].Rows.Count; j++)
> {
> if (ds.Tables["F_SAL"].Rows[i]["SA_DATEDECLOTURE"].ToString() != ds2.Tables["Salarie"].Rows[j]["DateDeCloture"].ToString())
> {
> matched = false;
> MessageBox.Show("Les données ne sont pas identiques");
> MessageBox.Show(ds.Tables["F_SAL"].Rows[i]["SA_DATEDECLOTURE"].ToString() + " // " + ds2.Tables["Salarie"].Rows[i]["DateDeCloture"].ToString());
>
> try
> {
> //[3] Insertion de l'ancienne valeur dans la table Test
> MessageBox.Show("Requete d'enregistrement dans la table [Test]");
> string StrInsert = @"INSERT INTO TEST(Matricules,ValeurDeCellule) VALUES ('" + ds2.Tables["Salarie"].Rows[i]["Matricule"].ToString() + "','" + combo_DateCloturePaie.Text +"')";
> SqlCommand cmdInsert = new SqlCommand(StrInsert, conExpress);
> MessageBox.Show("Requete: " + StrInsert);
> cmdInsert.ExecuteNonQuery();
> MessageBox.Show("Requete bien insérée.");
> }
> finally { if (conExpress != null) { conExpress.Close(); } }
>
> //[4] Modification de la ligne de la colonne de la nouvelle valeur de Date de cloture dans la table ODBC
> MessageBox.Show("Requete de modification dans la table ODBC");
>
>
> string StrUpdate @"UPDATE F_SAL SET SA_DATEDECLOTURE '" + combo_DateCloturePaie.Text + "' WHERE SA_MATRICULE= '" + ds.Tables["F_SAL"].Rows[i]["SA_MATRICULE"].ToString() + "'"; //???
> //string StrUpdate @"UPDATE F_SAL SET SA_DATEDECLOTURE '" + combo_DateCloturePaie.Text + "' WHERE SA_MATRICULE= '" + ds.Tables["F_SAL"].Rows[i]["SA_MATRICULE"].ToString() + "'"; //???
> ////////////////////////////////
>
> OdbcCommand cmdUpdate = new OdbcCommand(StrUpdate, conODBC);
> MessageBox.Show("Requete: " + StrUpdate);
>
>
> cmdUpdate.ExecuteNonQuery();
> MessageBox.Show("Requete bien modifiée.");
>
> MessageBox.Show("Import effectué avec succès.", "Information", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information);
> }
> }
> if (matched == true)
> {
> MessageBox.Show("Les données sont identiques");
> }
> }
> }
> conODBC.Close();
> //}
> //catch (Exception en)
> //{
> // conODBC.Close();
> // MessageBox.Show("Erreur d'import: " + en.Message.ToString(), "Information", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
> //}
> }
> }
>
>
>Merci de m'aider à cette requete Update.
Afficher la suite 

Votre réponse

3 réponses

krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 9 août 2011 à 10:53
+3
Utile
Bonjour

L'erreur me semble très explicite : "Invalid date, time or timestamp value."
En gros, il ne s'attend pas à recevoir une date au format que tu lui donnes.

Deux solutions :
- Utiliser des requêtes paramétrées et envoyer un DateTime
- Reformater la date avec le format attendu

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de krimog
guendouzbachir 5 Messages postés samedi 18 décembre 2010Date d'inscription 15 décembre 2011 Dernière intervention - 22 août 2011 à 23:35
0
Utile
SqlConnection conExpress = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\dbHistorique.mdf;Integrated Security=True;User Instance=True;");


erreur car t'a pas specifier le repertoire de ta base ICI "DataDirectory" tu doit la remplacer par exemple : "c:\users\admin\you.mdf"

good like

devplloper
Commenter la réponse de guendouzbachir
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 23 août 2011 à 09:21
0
Utile
@Guendouzbachir : |DataDirectory| correspond au répertoire de l'application. Le framework le remplace tout seul.
De plus, si l'erreur venait d'ici, le problème aurait été la connexion à la base de données et non l'exécution de la requête.

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.