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 :

Problème Commande INSERT avec une base de données Acces


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2012
    Messages : 58
    Points : 57
    Points
    57
    Par défaut Problème Commande INSERT avec une base de données Acces
    Bonjour,

    J'ai un petit problème avec ma commande INSERT dans VB.Net. Je dois fournir à ma requête une nombre de type double. En VB.net, ma variable est bien reconnue en tant que Double (exemple : 18.28), mais dans Acces, cette valeur devient 1828.....
    Le Champs dans Access est bien défini en tant que Reel Double. En fait, Acces ne considère pas le point comme étant le séparateur des décimales, mais attend plutôt une virgule....

    Si vous avez une solution, je suis preneur......

    D'avance merci pour vos réponses.

    Madfox48

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    un séparateur de décimal est utilisé pour l'affichage seulement (string), un nombre est un nombre
    aussi plutot que de passer le nombre en string à access (concaténé dans la requete) tu peux le passer en tant que nombre via un paramètre

    avec un truc dans le genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cmd.commandtext = "update table set col = ?col where ...l"
    cmd.parameters.Add("?col",dbtype.double)
    cmd.parameters("?col") = cdbl(me.Textbox1.Text)
    voir oledbparameters sur google pour plus d'infos (il y a aussi des tutos sur dvp pour ca à priori)

    c'est pareil pour les dates, ca n'a pas de format du type dd/MM/yyyy ou autre, c'est une date, avec un format d'encodage sur 8 octets
    et c'est aussi pratique pour les string (qui peuvent contenir une apostrophe et créer des problèmes)


    ! : avec acess le nom des paramètres n'est pas utilisé donc pas utile, c'est l'ordre d'apparition dans la requete qui doit etre respecté pour l'ordre d'ajout à .parameters
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    je vois 3 solutions possibles, de la pire à la meilleure :
    - modifier les paramètres regionaux pour définir le point comme séparateur décimal,
    - faire un Replace() du point par une virgule avant d'injecter ta valeur dans le SQL,
    - utiliser des requêtes paramétrées, les fonctions se chargeront de faire le cast.
    Plus je connais de langages, plus j'aime le C.

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2012
    Messages : 58
    Points : 57
    Points
    57
    Par défaut
    Bonjour à vous et encore merci d'avoir répondu à ma question......
    Mais finalement en faisant un simple casting de la valeur que je veux lui passer dans la commande INSERT, ça passe sans problème...... Je ne comprend plus rien mais bon, tant que ça fonctionne.

    Madfox48

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Citation Envoyé par madfox48 Voir le message
    tant que ça fonctionne
    oui et non ... que ca fonctionne à un intant T ne veux pas toujours dire que ca fonctionnera toujours
    donc autant faire au mieux tout de suite

    après je conçois que quand on débute on ait du code qui fonctionne et que ca soit tout ce qu'on lui demande ^^
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/04/2012, 12h42
  2. [MySQL] Problème de connexion avec une base de données MySQL
    Par Debutant10 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 19/12/2011, 09h39
  3. Problème d'insertion dans une base de donnèes
    Par atout dans le forum Administration
    Réponses: 14
    Dernier message: 27/12/2006, 07h07
  4. Problème de connection avec une base de données
    Par kj_83 dans le forum C++Builder
    Réponses: 4
    Dernier message: 31/10/2006, 15h40
  5. problème d'insertion dans une base de données
    Par belmansour tidjani dans le forum JDBC
    Réponses: 7
    Dernier message: 18/01/2006, 22h13

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