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 dans la clause from en sql


Sujet :

VBA Access

  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 113
    Par défaut variable dans la clause from en sql
    Bonjour à tous, je souhaite créer des requêtes en fonction de l'année choisit, c'est-à-dire :*
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    dim table1 as string
    dim table2 as string
    table1 = archive
    table2= client
    ' si forms!menu!annee = à l'année actuelle alors 
    'utiliser la variable table2 dans les requetes 
    'sinon
    'utiliser la variable table1
    j' ignore comment m'y prendre, sachant que les tables on les même nom de champs.

    Merci de bien vouloir m'aider

  2. #2
    Membre Expert
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Par défaut
    Bonjour,

    Bon vieux sujet : l'archivage des données anciennes

    Peux tu préciser ce que tu veux faire de ces requêtes ?
    S'il s'agit, par exemple, d'afficher les données dans un formulaire, tu peux, au chargement (Form_Load) ou au clic d'un bouton bascule entre données actives/archivées, changer la source du formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub AfficherArchives_Click()
    If AfficherArchives Then
        Me.RecordSource = RequeteArchive
    else
        Me.RecordSource = RequeteActifs
    End If
    Sinon, si c'est juste pour ds calculs, tu peux juste créer 2 requêtes séparées ???

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 113
    Par défaut
    Oui c'est pour travailler sur des formulaires et des états, mais aussi pour faire des calculs mais je voudrais justement éviter d'encombrer ma base en créant 2 fois les même requête (bien évidemment il y a que la clause from qui change )

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

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 959
    Par défaut
    Bonjour,
    Je te propose ce code (à utiliser avec précaution quand même) qui modifie dans ta base le texte SQL de tes requêtes et tes états et formulaires contenant des requêtes. Tu peux donc modifier une ou plusieurs requêtes selon tes besoins.
    Tu as 3 paramètres à renseigner : le nom de la table à remplacer, le nom de la nouvelle table et en option le nom de la requête ou une partie du nom, ou rien, dans ce cas la fonction modifie tous les objets.

    Attention : le remplacement étant définitif il vaut peut être mieux relancer la fonction pour remettre l'ancienne valeur à la fermeture du formulaire, de l'état ou mieux, à l'ouverture de la base.
    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
    Function ChangeTable(pAncienneTable As String, pNouvelleTable As String, Optional pNomRequete As String)
    Dim Qry As DAO.QueryDef
     
       pNomRequete = pNomRequete & "*"
     
    For Each Qry In CurrentDb.QueryDefs
        If Qry.Name Like pNomRequete Then
            If InStr(1, Qry.SQL, pAncienneTable) Then
                Qry.SQL = Replace(Qry.SQL, pAncienneTable, pNouvelleTable)
               ' Debug.Print Qry.Name & ", type " & Qry.Type & " modifiée "
            End If
        End If
    Next
     
    End Function

  5. #5
    Membre Expert
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Par défaut
    Bonjour,

    Très bonne réponse de tee_grandbois, pour changer le contenu de la requête.
    Dans la même lignée, tu peux aussi n'enregistrer aucune requête et n'utiliser que le texte SQL que tu modifies à la volée en VBA, que tu affectes directement aux formulaires/états et/ou que tu exécutes avec Docmd.RunSQL pour les calculs.

    Ceci dit, je ferai quand même 2 remarques d'ordre général :
    - une requête ne 'pèse' presque rien dans un fichier access : juste les quelques octets du texte SQL. On trouve facilement plusieurs centaines de requêtes dans une application moyennement complexe.
    - à l'inverse, une requête modifiée par du VBA (à noter dans les commentaires de la requête ?) est moins évidente à détecter, lorsque ton projet tourne depuis des mois et qu'il faut revenir dessus pour des modifications ou des compléments. Pire si quelqu'un d'autre doit comprendre le fonctionnement et le modifier.
    Je suis convaincu, ce qui n'engage que moi, qu'il faut privilégier la clarté sur les octets, aujourd'hui négligeables.

Discussions similaires

  1. [SQL SERVER 2008] Variable dans la clause IN
    Par kh424 dans le forum Développement
    Réponses: 4
    Dernier message: 13/01/2011, 01h01
  2. Réponses: 1
    Dernier message: 15/04/2010, 08h10
  3. PLSQL: placer une variable dans une clause FROM
    Par Tiéry dans le forum PL/SQL
    Réponses: 6
    Dernier message: 02/03/2009, 15h43
  4. Variable dans la clause from ?
    Par All Jinx dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 29/11/2006, 11h38
  5. Réponses: 2
    Dernier message: 16/12/2004, 15h33

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