Requete update ne fonctionne pas [Résolu]

Messages postés
6
Date d'inscription
mardi 10 juillet 2007
Dernière intervention
9 août 2011
- 9 août 2011 à 10:28 - Dernière réponse :
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Dernière intervention
14 février 2015
- 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

Meilleure réponse
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Dernière intervention
14 février 2015
9 août 2011 à 10:53
3
Merci
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é. -

Merci krimog 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de krimog
Messages postés
5
Date d'inscription
samedi 18 décembre 2010
Dernière intervention
15 décembre 2011
22 août 2011 à 23:35
0
Merci
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
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Dernière intervention
14 février 2015
23 août 2011 à 09:21
0
Merci
@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.