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

VB.NET Discussion :

Type de données incompatible dans l'expression du critère.


Sujet :

VB.NET

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2
    Points : 0
    Points
    0
    Par défaut Type de données incompatible dans l'expression du critère.
    Bonjour,
    je suis un débutant et j'ai du mal à me retrouver. j'ai un soucis sur le code qui est ci-dessous.
    Je voudrais modifier les informations sur la base de données en faisant la recherche sur la clé primaire qui est en auto-incrémentation, et j'ai souvent le message : Type de données incompatible dans l'expression du critère.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mycommande.CommandText = "UPDATE [produit] SET [nompr]='" & TextBox1.Text & "',  [detailpr]='" & ComboBox2.Text & "', [pv]= '" & ComboBox3.Text & "'  where  produit.[numpr]='" & CInt(numcat) & "'"
    '
    aidez moi s'il vous plait.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,
    Plusieurs remarques :
    - Il faut utiliser des requêtes paramétrées et ne pas faire de SQL avec des concaténations de chaîne !!!! Cela permet d'éviter l'injection SQL (tu trouveras plein d'info sur le net là-dessus) et cela pourra aussi t'éviter ce type d'erreur.
    - Mettre l'option Strict à On dans les options du compilateur ce qui évite de pouvoir mélanger des integer avec des string (une concaténation de chaines et d'integer )

    Maintenant pour répondre à ta question, a priori cela doit provenir du fait que tu mets entre quote le résultat de CInt(numcat). Bref tu transformes en chaîne de caractère un numérique. Mais encore une fois, utilise des requêtes paramétrées !

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2005
    Messages : 151
    Points : 64
    Points
    64
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mycommande.CommandText = "UPDATE [produit] SET [nompr]='" & TextBox1.Text & "',  [detailpr]='" & ComboBox2.Text & "', [pv]= '" & ComboBox3.Text & "'  where  produit.[numpr]=" & CInt(numcat) & ""
    voila ta requête doit ressembler a ça, ton critère de recherche "numcat" est un nombre tu dois enlever les quots.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2
    Points : 0
    Points
    0
    Par défaut Informations supplémentaires : Type de données incompatible dans l'expression du critère.
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    mycommande.CommandText = "UPDATE [produit] SET [nompr]='" & TextBox1.Text & "',  [detailpr]='" & ComboBox2.Text & "', [pv]= '" & ComboBox3.Text & "'  where  produit.[numpr]=" & CInt(numcat) & ""

    cela me renvoit toujours : Informations supplémentaires*: Type de données incompatible dans l'expression du critère.

  5. #5
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    ebastien t'a donné la solution : .Net, SQL Server, et les requêtes paramétrées. En lisant ce tutorial tu comprendras pourquoi il faut les utiliser tout le temps et de partout.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Octobre 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Maroc

    Informations professionnelles :
    Activité : Expert sécurité informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 12
    Points : 15
    Points
    15
    Par défaut
    il faut avoir comme ca " & CInt(numcat) & "" c-a-d enlever les simples quottes car numcat est numérique et pas une chaine de caractère

Discussions similaires

  1. Requête: type de donnée incompatible dans l'expression du critère
    Par abambad dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 31/10/2007, 15h48
  2. Réponses: 5
    Dernier message: 31/08/2007, 13h01
  3. Réponses: 8
    Dernier message: 20/06/2007, 14h38
  4. Réponses: 7
    Dernier message: 22/08/2006, 17h10
  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