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 :

Transformer une Req SQL en code VBA


Sujet :

VBA Access

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 232
    Points : 90
    Points
    90
    Par défaut Transformer une Req SQL en code VBA
    Bonsoir,
    J'ai cette requête (Access):

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT DSum("Nz([Credit], 0)","tblDebitCredit","[Date]<=#" & Format([Date],"mm/dd/yyyy") & "# AND [compte]=" & [compte])-DSum("Nz([Debit], 0)","tblDebitCredit","[Date]=#" & Format([Date],"mm/dd/yyyy") & "# AND [compte]=" & [Compte]) AS Cumul
    FROM tblDebitCredit;

    Je ne connais pas le VBA, mais est il possible de la réecrire ou la transformer en VBA?
    Merci par avance

  2. #2
    Membre régulier Avatar de alexkickstand
    Inscrit en
    Octobre 2002
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 165
    Points : 105
    Points
    105
    Par défaut
    Salut est ce que tu veux simplement éxécuter ta requete depuis VBA ou veux tu l'écrire en VBA ?

    Alex

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 232
    Points : 90
    Points
    90
    Par défaut
    Bonsoir,
    L'ecrire en VBA!
    Merci

  4. #4
    Membre régulier Avatar de alexkickstand
    Inscrit en
    Octobre 2002
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 165
    Points : 105
    Points
    105
    Par défaut
    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
    20
    21
    22
    23
    24
    25
    26
    27
    'déclaration de tes variables
     
     'variable pour ouvrir la base de données
     Dim dba As Database
     
     'variable pour ouvrir les tables 
     Dim Enreg As Recordset
     
     'variables pour la requete
     Dim STR_SQL, STR_SQL1, STR_SQL2
     
     'Ouverture de la base de données "nom.mdb"
     Set dba = OpenDatabase("chemin_de_la_bdd_access\nom.mdb")
     
     'requete sql
     STR_SQL1 = "SELECT DSum("Nz([Credit], 0)","tblDebitCredit","[Date]<=#" & Format([Date],"mm/dd/yyyy") & "# AND [compte]=" & [compte])-DSum("Nz([Debit], 0)","tblDebitCredit","[Date]=#" & Format([Date],"mm/dd/yyyy") & "# AND [compte]=" & [Compte]) AS Cumul"
     STR_SQL2 = " FROM tblDebitCredit;"
     STR_SQL = STR_SQL1 & STR_SQL2
     
     'permet de débugger la requete si erreur
     Debug.Print STR_SQL
     
     'exécute la requete
     dba.Execute (STR_SQL)
     
     'ferme la base de données
     dba.Close
    dans la forme c'est ca il faut part contre protéger tes guillemets dans STR_SQL1 aprés : STR_SQL1 = "
    avec des ''

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 232
    Points : 90
    Points
    90
    Par défaut
    Bonsoir,
    Dois-je mettre ce code dans un module?
    Merci

  6. #6
    Membre régulier Avatar de alexkickstand
    Inscrit en
    Octobre 2002
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 165
    Points : 105
    Points
    105
    Par défaut
    re oui c'est la meilleure chose a faire tu insère un nouveau module puis tu le renomme par exemple : mon_module.

    tu colles cette fonction dans ton module

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    sub requete_test()
     
    'déclaration de tes variables
     
     'variable pour ouvrir la base de données
     Dim dba As Database
     
     'variable pour ouvrir les tables 
     Dim Enreg As Recordset
     
     'variables pour la requete
     Dim STR_SQL, STR_SQL1, STR_SQL2
     
     'Ouverture de la base de données "nom.mdb"
     Set dba = OpenDatabase("chemin_de_la_bdd_access\nom.mdb")
     
     'requete sql
     STR_SQL1 = "SELECT DSum("Nz([Credit], 0)","tblDebitCredit","[Date]<=#" & Format([Date],"mm/dd/yyyy") & "# AND [compte]=" & [compte])-DSum("Nz([Debit], 0)","tblDebitCredit","[Date]=#" & Format([Date],"mm/dd/yyyy") & "# AND [compte]=" & [Compte]) AS Cumul"
     STR_SQL2 = " FROM tblDebitCredit;"
     STR_SQL = STR_SQL1 & STR_SQL2
     
     'permet de débugger la requete si erreur
     Debug.Print STR_SQL
     
     'exécute la requete
     dba.Execute (STR_SQL)
     
     'ferme la base de données
     dba.Close
     
    end sub
    si tu veux éxecuter cette fonction depuis un formulaire, par exemple en cliquant sur un bouton

    tu creer un bouton dans ton formulaire tu fais un clic droit dessus tu clique sur le premier lien du menu "créer évenement" ou "build event" puis apres tu clique sur "créer code" ou "code builder" la tu va saisir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Call mon_module.requete_test()
    puis en cliquant sur ton bouton il devrait appeler ton module et lancer la fonction.

    Alex

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 232
    Points : 90
    Points
    90
    Par défaut
    Merci

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Si cela te convient penses à cliquer sur

    Starec

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/03/2015, 11h53
  2. Problème SQL dans code VBA
    Par benjisan dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 15/05/2007, 13h22
  3. Transformé une formule Excel en script VBA ?
    Par SFLEY dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 06/01/2007, 11h48
  4. Réponses: 10
    Dernier message: 24/08/2006, 19h52
  5. [VBA-E] Comment créer un bouton ds une wksheet par un code vba
    Par moicwill dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/05/2006, 17h12

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