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 :

Eviter de répeter des bouts de requête


Sujet :

VBA Access

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 240
    Points : 116
    Points
    116
    Par défaut Eviter de répeter des bouts de requête
    Bonjour le forum,

    J'ai un formulaire avec un bon nombre de contrôles. Ces contrôles me donnent de variables que j'utilise à la fin dans une requête.

    Pour éviter d'avoir à réécrire entièrement la requête à chaque fois que j'en ai besoin, j'ai pensé fractionner le code de la requête sur le modèle suivant:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strSQL1 = "SELECT DISTINCT Blablabla FROM qry_1 "
    strSQL2 = "WHERE Champ1= '" & str1 & "'"

    Ma question est: sachant que str1 de ma chaîne strSQL2 est donnée par la valeur d'une combobox, est-ce qu'il existe un moyen de déclarer tous ces bouts de code en tête de module?

    J'ai essayé un bête:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    Const strSQL2 as String = "WHERE Champ1= '" & str1 & "'"

    Mais évidemment, ça ne peut pas fonctionner.

  2. #2
    Membre confirmé Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Points : 518
    Points
    518
    Par défaut
    Bonjour,

    Ceci ne peut pas fonctionner car une constante est par définition non modifiable. Elle ne doit donc pas comporter de variable. Ici sémantiquement str1 est une variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Const strSQL2 AS String = "WHERE Champ1= '" & str1 & "'"
    Une solution serrait d'utiliser des méthodes qui renvoient le morceau de requête SQL.

    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Public Function debutDeRequete() As String
        debutDeRequete = "SELECT DISTINCT Blablabla FROM qry_1 "
    End Function
     
    Public sub constructionDeLaRequete()
       Dim strSql As string
     
       strSql = debutDeRequete() & "WHERE XXX = YYY;"
       doCmd.RunSql strSql
    End Sub
    il est possible ensuite de jouer sur la visibilité de ces méthodes (Public, Private, etc ...) pour qu'elle puisse s'exécuter que dans un module en particulier par exemple.

    Cordialement,
    loi de LeBlanc : Plus tard signifie jamais. extrait de Coder proprement Auteur:Robert C. Martin

  3. #3
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 240
    Points : 116
    Points
    116
    Par défaut
    Bonjour,

    Ah oui, effectivement, cette méthode fonctionne et est plutôt simple. Merci.

    Est-ce qu'il y a d'autres façons de faire (simplement par curiosité)?

Discussions similaires

  1. Réponses: 5
    Dernier message: 24/10/2005, 15h11
  2. moyen simple de stocker des bouts de textes ...
    Par blackhorus dans le forum MFC
    Réponses: 3
    Dernier message: 18/10/2005, 17h58
  3. la sauvegarde des bouts de code ?
    Par blackhorus dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 02/10/2005, 13h34
  4. interdir importation des tables et requêtes
    Par zian dans le forum Access
    Réponses: 1
    Dernier message: 17/09/2005, 15h23
  5. [VB.NET] [ODBC] Récupérer des valeurs avec requête ODBC?
    Par Pleymo dans le forum Windows Forms
    Réponses: 5
    Dernier message: 04/03/2005, 16h38

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