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 :

Insérer des variables dans une Requête


Sujet :

VBA Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 71
    Points : 89
    Points
    89
    Par défaut Insérer des variables dans une Requête
    Bonjour,

    Une question concernant VBA (Access 2003).

    Qu'est ce qui est faux dans ce code ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      val1 = Forms!Formulaire1.Controls("Saisie1").Value
      val2 = Forms!Formulaire1.Controls("Saisie2").Value
      val3 = Forms!Formulaire1.Controls("Saisie3").Value
      val4 = Forms!Formulaire1.Controls("Saisie4").Value
      sql = "INSERT INTO Table1 ([Champ1], [Champ2], [Champ3], [Champ4]) VALUES (val1, val2, val3, val4);"
      DoCmd.RunSQL sql
    A l'exécution, Access me redemande les valeurs val1 à val4 alors qu'elles ont déjà été entrées dans mon formulaire.

    Merci d'avance.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "INSERT INTO Table1 ([Champ1], [Champ2], [Champ3], [Champ4]) VALUES (" & val1 & ", " & val2 & ",  " & val3 & ",  " & val4 & ");"
    Dans ton code Val1 à Val4 n'était pas interprété car il était vue comme du texte.

    Ceci dit pourquoi ne pas utiliser un formulaire lié ?

    Ceci te permettrai de mettre directement les champs de la table 1 sans avoir à écrire une seule ligne de code.

    A+

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 71
    Points : 89
    Points
    89
    Par défaut INSERT VALUES variables
    Bonjour,
    Merci d'avoir répondu.

    J'avais déjà essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "INSERT INTO Table1 ([Champ1], [Champ2], [Champ3], [Champ4]) VALUES (" & val1 & ", " & val2 & ",  " & val3 & ",  " & val4 & ");"
    mais lorsque je clique sur le bouton du formulaire, j'ai le message d'erreur suivant : "Erreur de syntaxe (opérateur absent) dans l'expression 'Mon texte 1'.

    "Mon texte 1" est la valeur chargée dans la variable var1.

    J'aimerais surtout comprendre pourquoi je tourne en rond sur ce point particulier, avant de choisir une autre stratégie. La base incriminée (2003) est visible en http://www.planete-bleue.net/bd1.mdb (0.184 Mo).

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 71
    Points : 89
    Points
    89
    Par défaut
    Fin de cauchemar, je viens de trouver la solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      sql = "INSERT INTO Table1 ([Champ1], [Champ2], [Champ3], [Champ4]) VALUES (" & "'" & val1 & "'," & "'" & val2 & "'," & "'" & val3 & "'," & "'" & val4 & "');"
    Il ne faut pas s'y perdre entre les , les ' et les ".
    Merci pour ton aide précieuse qui m'a fait explorer des pistes inimaginables. les requêtes en PHP sont une promenade de santé à côté d'Access.

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Les requêtes Access sont très faciles à écrire à condition de ne pas le faire à la main ... c'est pour cela qu'il y a un éditeur de requêtes en Access où tu peux faire des requêtes extrèmement complexes avec quelques "glisser/coller".

    J'ai personnellement fait une requête avec une quinzaine de tables jointes en environ 1/2h. La même en Oracle et SQL pur et dur a pris 1 journée à mon collègue qui ne jurait que par le SQL. Choisi ton camp camarade :-).

    Une fois ta requête 'crée' tu peux voir le SQL correspondant en chanfgeant l'affichage du mode 'création' au mode 'SQL'.

    Note que certaines requêtes comme celle qui ont des sous-requêtes imbriquées ne peuvent pas être entièrement crées dans l'éditeur de requêtes.

    A+

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 71
    Points : 89
    Points
    89
    Par défaut
    Excellent tuyau, effectivement. Que de temps perdu de mon côté aussi !
    Fini le code pur et dur, au moins sous Access.

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

Discussions similaires

  1. [Débutant] Insérer des variables dans une loop for
    Par WhiteT1ger dans le forum MATLAB
    Réponses: 2
    Dernier message: 26/01/2015, 20h39
  2. Mettre des variables dans une requête SQL
    Par tamtam64 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 20/01/2015, 13h25
  3. insérer des variables dans une table en php
    Par sajodia dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 30/01/2009, 17h36
  4. Comment utiliser des variables dans une requête SQL ?
    Par Ragnarok85 dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 12/02/2007, 16h23
  5. insérer des côtes dans une variable pl/sql
    Par illegalsene dans le forum Langage SQL
    Réponses: 1
    Dernier message: 24/01/2007, 14h20

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