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 :

Variable vba sql access


Sujet :

VBA Access

  1. #1
    Membre actif
    Homme Profil pro
    isty
    Inscrit en
    Juin 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : isty
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 29
    Par défaut Variable vba sql access
    Bonjour,

    Je veux donner une variable vba à une requete update.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Private Sub Commande0_Click()
     
    Annee_courante = Year(Date)
    Moi_courant = Month(Date)
    Dim var As String
    Champ = "Réel à fin " & Annee_courante
     
    'Réel
    For i = 1 To (Moi_courant - 1) Step 1
            k = Format(i, "00")
            var = "Réel " & Annee_courante & "-" & k
    Next i
    DoCmd.SetWarnings False
    DoCmd.RunSQL " UPDATE Budget SET Champ = var "
    DoCmd.SetWarnings False
     
    End Sub
    Merci de vos réponse !

  2. #2
    Membre confirmé Avatar de Mouvii
    Homme Profil pro
    stagiaire
    Inscrit en
    Avril 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : stagiaire

    Informations forums :
    Inscription : Avril 2016
    Messages : 41
    Par défaut
    Bonjour,

    Essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL " UPDATE Budget SET " &  Champ & " = " & var
    Enfin, ta "question" est très vague et peu compréhensible, mais je suppose que ça devrait t'aider, sinon reformule ta question.

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Bonjour,

    Comme c'est un variable défini dans ton code VBA, il faut le sortir de l'expression SQL.
    La ligne serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL " UPDATE Budget SET Champ = " & var
    Cordialement.

  4. #4
    Membre confirmé Avatar de Mouvii
    Homme Profil pro
    stagiaire
    Inscrit en
    Avril 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : stagiaire

    Informations forums :
    Inscription : Avril 2016
    Messages : 41
    Par défaut
    madefemere, comme l'OP a créé et associé une valeur Champ, j'ai supposé que la valeur était le nom du champ. Me serai-je trompé ?

  5. #5
    Membre actif
    Homme Profil pro
    isty
    Inscrit en
    Juin 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : isty
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 29
    Par défaut
    Merci pour vos réponses.
    En fait meme Champ est une variable que je calcule en haut.

    Donc, en gros

    Je veux donner deux variable dans la requete Update (Champ et var)

  6. #6
    Membre confirmé Avatar de Mouvii
    Homme Profil pro
    stagiaire
    Inscrit en
    Avril 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : stagiaire

    Informations forums :
    Inscription : Avril 2016
    Messages : 41
    Par défaut
    La solution que j'ai proposée devrait être celle qui correspond alors.

  7. #7
    Membre actif
    Homme Profil pro
    isty
    Inscrit en
    Juin 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : isty
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 29
    Par défaut
    Citation Envoyé par Mouvii Voir le message
    La solution que j'ai proposée devrait être celle qui correspond alors.
    J'ai essayé ta solution mais ça marche pas !!

    Merci

  8. #8
    Membre confirmé Avatar de Mouvii
    Homme Profil pro
    stagiaire
    Inscrit en
    Avril 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : stagiaire

    Informations forums :
    Inscription : Avril 2016
    Messages : 41
    Par défaut
    Déclare bien chaque variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Annee_courante as Integer
    'etc.
    Et pour le format d'un mois c'est

    Décrit nous l'erreur que ça te donne à chaque fois aussi.

  9. #9
    Membre actif
    Homme Profil pro
    isty
    Inscrit en
    Juin 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : isty
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 29
    Par défaut
    L'erreur c'est dans cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL " UPDATE Budget SET " & Champ & " = " & var
    L'erreur c'est : "Erreur de syntaxe dans l'instruction Update"

  10. #10
    Membre confirmé Avatar de Mouvii
    Homme Profil pro
    stagiaire
    Inscrit en
    Avril 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : stagiaire

    Informations forums :
    Inscription : Avril 2016
    Messages : 41
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "UPDATE Budget SET " & Champ & " = '" & var & "'"
    On y arrivera un jour, peut-être.

  11. #11
    Membre actif
    Homme Profil pro
    isty
    Inscrit en
    Juin 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : isty
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 29
    Par défaut
    ça marche pas non plus :/

  12. #12
    Membre confirmé Avatar de Mouvii
    Homme Profil pro
    stagiaire
    Inscrit en
    Avril 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : stagiaire

    Informations forums :
    Inscription : Avril 2016
    Messages : 41
    Par défaut
    Dit nous l'erreur à chaque fois stp.

  13. #13
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Bonjour tous les deux,

    @ Mouvii, ton code est juste. je n'ai pas fait attention au fait que "Champ" était aussi un variable.

    @mehdido04 : Pour trouver les erreurs dans les expression SQL en VBA, il faut les écrire avec un Debug.Print dans la fenêtre d'exécution ou un MsgBox. Cela permet de voir l'expression résultante du code :
    Fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print "UPDATE Budget SET " & Champ & " = '" & var & "'"
    Cordialement.

  14. #14
    Membre actif
    Homme Profil pro
    isty
    Inscrit en
    Juin 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : isty
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 29
    Par défaut
    Merci de votre réponse.
    J'ai fait le Debug, et j'ai toujours un message d'erreur dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "UPDATE Budget SET " & Champ & " = '" & var & "'"
    Le message d'erreur est toujours : Erreur de syntaxe dans l'instruction Update.

    En fait voila le code que j'éxecute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Private Sub Commande0_Click()
     
    Annee_courante = Year(Date)
    Moi_courant = Month(Date)
    Dim var As String
    Champ = "Réel à fin " & Annee_courante
    MsgBox Champ
    'Réel
    For i = 1 To (Moi_courant - 1) Step 1
            k = Format(i, "00")
            var = "Réel " & Annee_courante & "-" & k
    Next i
    DoCmd.SetWarnings False
    Debug.Print "UPDATE Budget SET " & Champ & " = '" & var & "'"
    DoCmd.RunSQL "UPDATE Budget SET " & Champ & " = '" & var & "'"
    DoCmd.SetWarnings False
     
    End Sub
    Quand je l'execute je clique sur debogage, et j'ai comme erreur (ligne jeune) cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "UPDATE Budget SET " & Champ & " = '" & var & "'"
    Cordialement

  15. #15
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Re-,

    Mais qu'est-ce qui est écrit dans la fenêtre d'exécution de VBE ? Quand le code s'arrête, tu bascules dans l'éditeur VBA et regarde ce qui est écrit dans la fenêtre en bas.
    Il faut mettre le Debug.Print avant l'exécution de ta requête.

    Cordialement.

  16. #16
    Membre actif
    Homme Profil pro
    isty
    Inscrit en
    Juin 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : isty
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 29
    Par défaut
    C'est écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE Budget SET Réel à fin 2016 = Réel 2016-04
    Je vous dit mon problem :
    En fait j'ai une table Budget comme ça :
    Nom : image.jpg
Affichages : 628
Taille : 76,1 Ko

    Elle contient des données et 13 colonnes pour chaque année (de 2012 à 2020)
    Je vais prendre un exemple de 2016 :
    Donc on a 13 colonnes : "Réel 2016-01" à "Réel 2016-12" et "Somme Réel 2016" qui est la somme des 12 mois.
    Moi ce que je veux dans mon code vba :
    C'est de faire un update de "Somme Réel 2016" pour faire la somme de tout les mois de 2016.

    Voila.

  17. #17
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Ben voilà plus d'informations !

    Ton problème vient du fait que tes noms de champs comportent des espaces. Donc il faut les mettre entre [].
    Il ne faut utiliser que les caractères alphanumériques (sans accents) et l'underscore _ pour les noms des objets dans une base de données pour éviter ce genre d'erreurs sournoises.

    De plus, on ne pouvait pas savoir que var contenait aussi un nom de champ

    Ton code devrait ressembler à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "UPDATE Budget SET [" & Champ & "] = [" & var & "]"
    Par contre, je ne vois pas ce que tu dis dans ton code :
    C'est de faire un update de "Somme Réel 2016" pour faire la somme de tout les mois de 2016.
    Tu fais une boucle mais sans "opérations" de cumul ou autre !

    Cordialement.

  18. #18
    Membre actif
    Homme Profil pro
    isty
    Inscrit en
    Juin 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : isty
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 29
    Par défaut
    Merci pour ta réponse, Ca marche.
    Je veux faire dans la requete update ça :
    Somme Réel 2016 = Réel 2016-01 + Réel 2016-02 + Réel 2016-03 + ... + Réel 2016-12

    Et je sais pas comment procéder !!

    Merci de ta réponse encore une fois.

  19. #19
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Bonsoir,

    Tu as je crois un problème de conception de ta base de données. A ce que je vois, tu raisonnes comme sur un tableur, fichier Excel.
    Le code que tu montres est lancé à partir d'un bouton de commande d'un formulaire. Donc, tu veux lancer cette action dans un formulaire ?
    Tu as si j'ai bien compris des "lignes", enregistrements dans ta table. et tu veux que la dernière colonne (le dernier champ) soit le résultat des 12 premiers ? Normalement, une somme calculée n'a pas à être conservée sauf problème de performance.
    Si tu travailles sur un formulaire basé sur la même table avec ses 13 colonnes, pourquoi ne pas calculer "directement" la valeur de la dernière colonne en faisant la somme des 12 précédents ??

    Cordialement.

Discussions similaires

  1. VBA, SQL, Access: Creer/Enregistrer une Requete
    Par Lameth dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/02/2011, 20h07
  2. [VBA et SQL] Requête SQL utilisant une variable VBA
    Par Altrensa dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 06/07/2007, 10h23
  3. Access Excel Vba Sql
    Par bzh_touch dans le forum Access
    Réponses: 1
    Dernier message: 29/06/2007, 12h05
  4. [SQL/ACCESS/VBA]problème de compréhension de syntaxe
    Par satch24 dans le forum VBA Access
    Réponses: 5
    Dernier message: 22/06/2007, 16h18
  5. SQL dans vba en access
    Par quatar dans le forum VBA Access
    Réponses: 2
    Dernier message: 24/05/2007, 20h09

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