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 :

Erreur en c#: "Type de données incompatible dans l'expression du critère


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Manager
    Inscrit en
    Avril 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Manager

    Informations forums :
    Inscription : Avril 2009
    Messages : 25
    Par défaut Erreur en c#: "Type de données incompatible dans l'expression du critère
    Bonjour !
    Je code en c#, sous win7, sys. 32bits, bdd access 2007.

    Je veux exécuter un Update :
    Lors de l’exécution de mon code, j'ai cette erreur:
    "Type de données incompatible dans l'expression du critère".

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    //Exécution de la mise à jour sur l'employé sélectionné
                     OleDbCommand cmdUpadte = new OleDbCommand("UPDATE employe SET nom = parnom, prenom = parprenom, sexe = parSexe, date_naiss = parDatenaiss, tel = parTel, bp = parBP, ville = parVille, nbr_enfant = parNbrEnfant, debut_salaire = parDebutSalaire, fin_salaire = parFinSalaire, code_prof = codeprof, code_natio = codenatio, code_situ_fam = codesitufam, code_niveau = codeniveau WHERE matricule = mat ", connection);
     
                     cmdUpadte.Parameters.Add("parnom", OleDbType.VarChar);
                     cmdUpadte.Parameters.Add("parprenom", OleDbType.VarChar);
                     cmdUpadte.Parameters.Add("parSexe",OleDbType.Char);
                     cmdUpadte.Parameters.Add("parDatenaiss", OleDbType.Date);
                     cmdUpadte.Parameters.Add("parTel", OleDbType.Numeric);
                     cmdUpadte.Parameters.Add("parBP", OleDbType.VarChar);
                     cmdUpadte.Parameters.Add("parVille", OleDbType.VarChar);
                     cmdUpadte.Parameters.Add("parNbrEnfant", OleDbType.Integer);
                     cmdUpadte.Parameters.Add("parDebutSalaire", OleDbType.Date);
                     cmdUpadte.Parameters.Add("parFinSalaire", OleDbType.Date);
     
                     cmdUpadte.Parameters.Add("codeprof", OleDbType.Integer);
                     cmdUpadte.Parameters.Add("codenatio", OleDbType.Integer);
                     cmdUpadte.Parameters.Add("codesitufam", OleDbType.Integer);
                     cmdUpadte.Parameters.Add("codeniveau", OleDbType.Integer);
                     cmdUpadte.Parameters.AddWithValue("mat", int.Parse (txtMatricule.Text));
     
                     for (int i = 0; i <= dataGridEmploye.Rows.Count - 1; i++)
                     {
                         if (dataGridEmploye.Rows[i].Cells["matricule"].Value != null)
                         {
                             cmdUpadte.Parameters["parnom"].Value = txtNom.Text;
                             cmdUpadte.Parameters["parprenom"].Value =txtPrenom.Text;
                             cmdUpadte.Parameters["parSexe"].Value = cmbSexe.SelectedItem;
                             cmdUpadte.Parameters["parDatenaiss"].Value = Convert.ToDateTime(txtDateNaissance.Text);
                             cmdUpadte.Parameters["parTel"].Value =  (txtTelephone.Text);
                             cmdUpadte.Parameters["parBP"].Value = txtBP.Text;
                             cmdUpadte.Parameters["parVille"].Value = (txtVille.Text);
                             cmdUpadte.Parameters["parNbrEnfant"].Value = int.Parse (txtNbrEnfants.Text);
                             cmdUpadte.Parameters["parDebutSalaire"].Value = Convert.ToDateTime(txtDateEntree.Text);
                             cmdUpadte.Parameters["parFinSalaire"].Value = Convert.ToDateTime(txtDateSortie.Text);
     
                             cmdUpadte.Parameters["codeprof"].Value = cmbCodeProf.SelectedItem;
                             cmdUpadte.Parameters["codenatio"].Value = cmbCodeNatio.SelectedItem;
                             cmdUpadte.Parameters["codesitufam"].Value =cmbCodeSitufam.SelectedItem;
                             cmdUpadte.Parameters["codeniveau"].Value = cmbNiveau.SelectedItem;
     
                            cmdUpadte.ExecuteNonQuery();
    A mon avis je dois avoir un souci sur les types de données "entiers" et "date", mais je ne sais comment trouver précisément l'erreur.
    Je veux tester des cast pour tenter de rattraper ces erreur de type:
    Enfin chose bizarre que je viens de constater, lors de l'affichage de mon formulaire; dans les champ dates, avant j'avais défini le type en "varchar" pour inserer des valeurs au format (jj/mm/aaaa) et afficher dans le même format,et ça passais sans pb, et maintenant mes dates s'affiche au format (jj/mm/aaaa 00:00:00).
    D'où viennent ces données en hh:mm:ss ?
    J'ai essayé de regarder du côté de access, j'ai mit le format en "Date, abrégé", mais rien à changé, sur la machine au, panneau config.> Régions et Langues, le format est "jj/MM/aaa".
    Avec vos conseils, j'aurais certainement des zones d'ombres à relever !
    Merci à vous !!!!

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 508
    Par défaut
    Comment chaque lignes et décommente au fur à mesure. Et regarde celle qui déclenche ton erreur.

  3. #3
    Membre actif
    Homme Profil pro
    Manager
    Inscrit en
    Avril 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Manager

    Informations forums :
    Inscription : Avril 2009
    Messages : 25
    Par défaut Erreur en c#: Type de données incompatible dans l'expression du critère
    Bonjour !
    En effet y a bien ligne qui gâche tout:
    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
    
    OleDbCommand cmdUpadte = new OleDbCommand("UPDATE employe SET nom = parnom, prenom = parprenom, sexe = parSexe, date_naiss = parDatenaiss, tel = parTel, bp = parBP, ville = parVille, nbr_enfant = parNbrEnfant, debut_salaire = parDebutSalaire, fin_salaire = parFinSalaire, code_prof = codeprof, code_natio = codenatio, code_situ_fam = codesitufam, code_niveau = codeniveau  WHERE matricule = mat", connection);
    
    //ici je définit les paramètres avec les mêmes type
    cmdUpadte.Parameters.Add("codeprof", OleDbType.Integer);
    cmdUpadte.Parameters.Add("codenatio", OleDbType.Integer);
    cmdUpadte.Parameters.Add("codesitufam", OleDbType.Integer);
    cmdUpadte.Parameters.Add("codeniveau", OleDbType.Integer);
    
    //et ici j'affecte des valeurs aux parmètres
    cmdUpadte.Parameters["codeprof"].Value = cmbCodeProf.SelectedItem;
    cmdUpadte.Parameters["codenatio"].Value = cmbCodeNatio.SelectedItem;
    cmdUpadte.Parameters["codesitufam"].Value=
    cmbCodeSitufam.SelectedItem;
     cmdUpadte.Parameters["codeniveau"].Value = cmbNiveau.SelectedItem;
    Et je ne comprend pas ce qui la diffrère des autres qui sont toutes de même type.
    Lorsque j'exécute la modif sur cette ligne uniquement elle produit l'erreur:
    Échec de la conversion de la valeur de paramètre d'un String en un Int32.
    Tous les autres paramètres et leurs valaurs maches correctement !
    Aussi je pensais que c'était mes champs date, mais ils sont correctes, sauf pour l'affichage, je ne sais comment faire disparaitre 00:00:00
    Mais je prospecte encore .
    Merci !!!

  4. #4
    Membre actif
    Homme Profil pro
    Manager
    Inscrit en
    Avril 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Manager

    Informations forums :
    Inscription : Avril 2009
    Messages : 25
    Par défaut Erreur en c#: "Type de données incompatible dans l'expression du critère
    Zut !!!
    Le nom de mon contrôle était incorrect.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmbCodeNiveau au lieu de cmbNiveau
    L'update marche bien !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/03/2013, 12h15
  2. Réponses: 4
    Dernier message: 29/04/2010, 12h56
  3. Réponses: 9
    Dernier message: 30/10/2008, 12h10
  4. Réponses: 5
    Dernier message: 31/08/2007, 13h01
  5. Réponses: 3
    Dernier message: 22/05/2006, 19h23

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