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

Windows Forms Discussion :

[VB.NET] Type Incompatible


Sujet :

Windows Forms

  1. #1
    Membre averti
    Avatar de Cyrilange
    Profil pro
    Inscrit en
    Février 2004
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 268
    Points : 337
    Points
    337
    Par défaut [VB.NET] Type Incompatible
    J'obtiens l'erreur "Type incompatible dans l'expression du critère" quand j'essaye de mettre à jour ma table dans une base de données Access.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    sql = "UPDATE [MaTable] SET MonChamp=? WHERE clef=" & clef
     
    cmd = New OleDbCommand(sql, con)
     
    cmd.Parameters.Add(New OleDbParameter("@MonChamp", OleDbType.Numeric))
     
    cmd.Parameters("@MonChamp").Value = CType(montextbox.text,Decimal)   
     
     
    con.Open()
    cmd.ExecuteNonQuery()
    con.Close()
    "MonChamp" est de type Décimal avec 3 chiffres après la virgule dans MaTable et d'après les tableaux de correspondance de Microsoft, le type Decimal d'Access correspond au type OleDb Numeric et à system.decimal.

    Je n'ai pas l'erreur avec un nombre entier mais dès que j'essaye un décimal ça marche plus.

    Quelqu'un peut-il m'aider à comprendre svp ?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 92
    Points : 114
    Points
    114
    Par défaut
    Quel est ton séparateur décimal? tu as testé avec "." et "," ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Un truc bien a faire pr tester les requetes c'est de mettre un point d'arret sur la ligne ou se trouve la requete en suite utiliser un espion et copier/coller la variable dans access. Il se peut ke les données soient mal définies.

  4. #4
    Membre averti
    Avatar de Cyrilange
    Profil pro
    Inscrit en
    Février 2004
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 268
    Points : 337
    Points
    337
    Par défaut
    Citation Envoyé par ld9474
    Quel est ton séparateur décimal? tu as testé avec "." et "," ?
    Le séparateur décimal dans mon textbox est "," mais normalement je n'ai pas à m'en soucier puisque CType doit convertir dans le bon format.

    De plus cela fonctionne si j'utilise OleDb Currency.

    Voici le tableau de correspondance de Microsoft entre les types OleDb et Access :

    http://support.microsoft.com/kb/320435/fr

  5. #5
    Membre averti
    Avatar de Cyrilange
    Profil pro
    Inscrit en
    Février 2004
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 268
    Points : 337
    Points
    337
    Par défaut
    Je vais peut être reformulé ma question :

    Quelqu'un peut-il me dire qu'elle est le format OleDb qui correspond au format Numéric Decimal d'une base de donnée Access ?

    D'après le tableau de Microsoft c'est OleDb.Numeric mais ça ne marche que si le nombre est un entier et pas un décimal.

    Pourtant cela marche très bien avec un format monétaire et OleDb.currency. Je ne vais quand même pas utilisé un format monétaire pour tous mes chiffres décimal quand même !!!

  6. #6
    Membre averti
    Avatar de Cyrilange
    Profil pro
    Inscrit en
    Février 2004
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 268
    Points : 337
    Points
    337
    Par défaut
    Bon et bien la seul solution que j'ai trouvé est la suivante :

    Type de champ Access : Numeric Decimal avec 3 chiffres après la virgule
    Type OleDb : Currency !!
    Type system : Decimal !!

    et ça marche !!!


    J'en déduis donc que le tableau de microsoft est FAUX !!!

    A quand l'harmonisation entre les types system et les types de base de données ? Y'en a marre du system mon frère !!!

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    Je rencontre exactement le même problème que vous.
    Est-ce que depuis le temps vous avez trouvé une solution "plus propre" que d'utiliser le type Currency pour contourner ce problème?

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

Discussions similaires

  1. Type incompatible: 'Ubound' ?
    Par zorba49 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 03/01/2018, 18h33
  2. Querystring ==> type incompatible
    Par Kara dans le forum ASP
    Réponses: 15
    Dernier message: 01/07/2005, 11h42
  3. ODBC Access => Type Incompatible avec un champ DATE ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 6
    Dernier message: 23/04/2005, 02h02
  4. Types Incompatibles
    Par olivierlsf dans le forum Bases de données
    Réponses: 1
    Dernier message: 11/03/2005, 18h01
  5. [LG]Problême "types incompatibles"
    Par pierrOPSG dans le forum Langage
    Réponses: 7
    Dernier message: 23/04/2004, 21h34

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