IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

probleme dans la requête update c#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 26
    Par défaut probleme dans la requête update c#
    salut

    J'ai un probleme dans l'instruction d'une requete update c#

    Type de données incompatible dans l'expression du critère.
    La requête est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    string queryString1 = string.Format("UPDATE employee SET nn = '" + editBox1.Text + "',Datee='" + dateTimePicker1.Value.ToString() + "',employee='" + emp.Text + "',cin='" + cin.Text + "',entrer='" + dateTimePicker2.Value.ToString() + "',heurentre='" + timePicker1.Value.ToString() + "',heurstop='" + timePicker2.Value.ToString() + "',heurcontinue='" + timePicker4.Value.ToString() + "',heursortie='" + timePicker5.Value.ToString() + "',herutarv='" + trav.Text + "',prixheur='" + prix.Text + "',avance='" + avance.Text + "',heur_supp='" + supp.Text + "',total='" + total.Text + "',payemment='" + choose.Text + "' WHERE nn='" + rechee.Text + "'");
                con.Open();
                OleDbCommand cmd1 = new OleDbCommand(queryString1, con);
     
                cmd1.ExecuteNonQuery();
    En cliquant sur le button update sur le form il m'affiche l'erreur suivante:
    Type de données incompatible dans l'expression du critère
    Merci de m'aider.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Freelance
    Inscrit en
    Février 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 312
    Par défaut
    Datee='" + dateTimePicker1.Value.ToString()
    dans ta base, datee ne serais pas un type date? si oui normal que ca plante, tu lui donne un string

  3. #3
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    Citation Envoyé par bobby51 Voir le message
    dans ta base, datee ne serais pas un type date? si oui normal que ca plante, tu lui donne un string
    C'est probablement un type date, mais pour générer sa requête, il doit bien caster sa date en string.

    Ce doit être le format de la date qui est incorrect. Il doit te falloir faire un ToString() avec le bon format. Exemple : ToString("MM/dd/yyyy").

    Ce problème ne se poserait pas si tu utilisais des requêtes paramétrées. C'est une bonne pratique de programmation, pour plus d'information voir cet article : Requêtes paramétrées avec SQL Server et .Net.




    Citation Envoyé par x2005man Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string queryString1 = string.Format("UPDATE employee SET nn = '" + editBox1.Text + "',Datee='" + dateTimePicker1.Value.ToString() + "',employee='" + emp.Text + "',cin='" + cin.Text + "',entrer='" + dateTimePicker2.Value.ToString() + "',heurentre='" + timePicker1.Value.ToString() + "',heurstop='" + timePicker2.Value.ToString() + "',heurcontinue='" + timePicker4.Value.ToString() + "',heursortie='" + timePicker5.Value.ToString() + "',herutarv='" + trav.Text + "',prixheur='" + prix.Text + "',avance='" + avance.Text + "',heur_supp='" + supp.Text + "',total='" + total.Text + "',payemment='" + choose.Text + "' WHERE nn='" + rechee.Text + "'");
    C'est bien d'utiliser string.Format, mais cette méthode ne s'utilise pas comme ça.
    Voilà un exemple d'utilisation correcte :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    string.Format("{0}, nous sommes le {1}.", "Bonjour", DateTime.Now);

  4. #4
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 26
    Par défaut
    merci d votre repense
    Citation Envoyé par bobby51 Voir le message
    dans ta base, datee ne serais pas un type date? si oui normal que ca plante, tu lui donne un string
    non dans ma base de données la date est de type date


    e problème ne se poserait pas si tu utilisais des requêtes paramétrées. C'est une bonne pratique de programmation, pour plus d'information voir cet article : Requêtes paramétrées avec SQL Server et .Net.
    Oui j'ai utilisé des requêtes paramétrées. Toutes les requetes fonctionnent bien. C'est juste la requete update si je change la condition de mise à jour par exemple par cin while cin='"+cin.text+"' ca marche mais si je change la condition a nn ca ne marche pas et m'affiche l'erreur suivante:
    Type de données incompatible dans l'expression du critère.

  5. #5
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    Citation Envoyé par x2005man Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string queryString1 = string.Format("UPDATE employee SET nn = '" + editBox1.Text + "',Datee='" + dateTimePicker1.Value.ToString() + "',employee='" + emp.Text + "',cin='" + cin.Text + "',entrer='" + dateTimePicker2.Value.ToString() + "',heurentre='" + timePicker1.Value.ToString() + "',heurstop='" + timePicker2.Value.ToString() + "',heurcontinue='" + timePicker4.Value.ToString() + "',heursortie='" + timePicker5.Value.ToString() + "',herutarv='" + trav.Text + "',prixheur='" + prix.Text + "',avance='" + avance.Text + "',heur_supp='" + supp.Text + "',total='" + total.Text + "',payemment='" + choose.Text + "' WHERE nn='" + rechee.Text + "'");
    Citation Envoyé par x2005man Voir le message
    Oui j'ai utilisé des requêtes paramétrées. Toutes les requetes fonctionnent bien. C'est juste la requete update si je change la condition de mise à jour par exemple par cin while cin='"+cin.text+"' ca marche mais si je change la condition a nn ca ne marche pas et m'affiche l'erreur suivante:
    Tu utilises peut-être des requêtes paramétrées par ailleurs, mais le morceau de code ci-dessous n'est pas une requête paramétrée.

  6. #6
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 26
    Par défaut
    Tu utilises peut-être des requêtes paramétrées par ailleurs, mais le morceau de code ci-dessous n'est pas une requête paramétrée.
    ceci le code mais le meeme probnbleme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     OleDbDataReader objRdr;
          objCmd = new OleDbCommand("UPDATE employee SET nn = @editBox1,Datee= @dateTimePicker1,employee= @emp,cin=@cin,entrer=@dateTimePicker2,heurentre=@timePicker1,heurstop=@timePicker2,heurcontinue=@timePicker4,heursortie=@timePicker5,herutarv=@trav,prixheur=@prix,avance=@avance,heur_supp=@supp,total=@total,payemment=@choose WHERE  nn='"+editBox1.Text+"'",con);
          objCmd.Parameters.AddWithValue("@nn", @editBox1.Text);
          objCmd.Parameters.AddWithValue("@Datee", dateTimePicker1.Value.ToString());
          objCmd.Parameters.AddWithValue("@employee", emp.Text);  //checkbox named chkDayNight
          objCmd.Parameters.AddWithValue("@cin", cin.Text);
          objCmd.Parameters.AddWithValue("@entrer", dateTimePicker2.Value.ToString());
          objCmd.Parameters.AddWithValue("@heurentre", timePicker1.Text);
          objCmd.Parameters.AddWithValue("@heurstop", timePicker2.Text);
          objCmd.Parameters.AddWithValue("@heurcontinue", timePicker4.Text);
          objCmd.Parameters.AddWithValue("@heursortie", timePicker5.Text);
          objCmd.Parameters.AddWithValue("@herutarv", trav.Text);
          objCmd.Parameters.AddWithValue("@prixheur", prix.Text);
          objCmd.Parameters.AddWithValue("@avance", avance.Text);
          objCmd.Parameters.AddWithValue("@heur_supp", supp.Text);
          objCmd.Parameters.AddWithValue("@total", total.Text);
          objCmd.Parameters.AddWithValue("@payemment", choose.Text);
          con.Open();
          objCmd.ExecuteNonQuery();
          con.Close();*/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probléme dans ma requête UPDATE SET
    Par mickado dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/05/2007, 17h30
  2. [MySQL] Problème d'apostrophes dans ma requête Update
    Par method_man dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 24/04/2007, 16h06
  3. [MySQL] nombre d'enregistrements maj dans une requête update
    Par erwan.bodere dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 15/06/2006, 16h11
  4. Inclure un SELECT dans une requète Update
    Par carolinebelle dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/07/2005, 14h19
  5. petit probleme dans une requte POSTGRE SQL
    Par ghis le fou dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/09/2003, 13h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo