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

VBA Access Discussion :

Erreur lors de l'importation d'un nombre dans une table par Runsql [AC-2019]


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Auteur d'ouvrages sur les services
    Inscrit en
    Janvier 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Auteur d'ouvrages sur les services
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 9
    Points : 10
    Points
    10
    Par défaut Erreur lors de l'importation d'un nombre dans une table par Runsql
    Bonjour,

    Pour simplifier l'exposé de mon problème j'ai créé une base de données ne contenant qu'une table avec un champ unique appelé Nombre (Numérique, taille réel double, format Euro)
    J'ai crée un formulaire (également appelé test) ne contenant qu'une zone de saisie (zone texte appelée txtSaisie) et un bouton pour déclancher l'action DoCmd...

    Le code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Commande2_Click()
        Dim dbBase As DAO.Database
        Dim rsttest As DAO.Recordset
     
        Set dbBase = CurrentDb
        Set rsttest = dbBase.OpenRecordset("Test")
     
       Dim Nombre As Double
       Nombre = CDbl(txtSaisie)
     
       DoCmd.RunSQL "INSERT INTO Test VALUES(" & Nombre & ");"     'Ne fonctionne pas
       DoCmd.RunSQL "INSERT INTO Test VALUES(10.12);"	         'Fonctionne
    End Sub
    Lorsque je saisi un nombre entier, tout se passe bien.
    Si je saisi un nombre avec décimale comme 10,12 par exemple j'ai un message d'erreur me disant
    que le nombre de valeurs de la requête doit coïncider avec le nombre de champs destination.

    Tout se passe comme si la virgule décimale était interprétée comme une instruction SQL.

    Si j'utilise dans le code VBA 1.12 en lieu et place de ma variable tout se passe bien.

    Merci par avance de m'apporter vos lumières.

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Bonsoir,

    Il faut utiliser la fonction Str qui convertit le numérique en chaîne avec un point :

    https://www.developpez.net/forums/d1...l/#post8030064

    Cdlt
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  3. #3
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    bonsoir,
    pour rappel, avec INSERT INTO .. VALUES, il est possible de délimiter les valeurs avec des apostrophes et ce, quelque soit le type de données:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "INSERT INTO Test VALUES('" & Nombre & "');"
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  4. #4
    Membre à l'essai
    Homme Profil pro
    Auteur d'ouvrages sur les services
    Inscrit en
    Janvier 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Auteur d'ouvrages sur les services
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 9
    Points : 10
    Points
    10
    Par défaut Merci pour votre aide
    Encore une fois je me suis noyé dans un verre d'eau... merci pour votre aide aussi rapide qu'efficace. J'ai lu avec beaucoup d'intérêt le tuto qui est préconisé il est très clair et m'a permis de progresser.
    Bravo pour la patiente que vous manifestez vis à vis de questions qui doivent vous sembler parfois bien triviales !

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 08/11/2010, 22h35
  2. [AC-2000] PB lors de l'import d'un csv dans une base
    Par zandeparis dans le forum VBA Access
    Réponses: 2
    Dernier message: 11/11/2009, 21h02
  3. [AC-2000] gestion des erreurs lors de l'importation d'un CSV dans une table formaté
    Par zandeparis dans le forum VBA Access
    Réponses: 1
    Dernier message: 02/11/2009, 23h45
  4. Réponses: 2
    Dernier message: 18/01/2008, 11h59
  5. Réponses: 4
    Dernier message: 01/11/2007, 12h46

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