p
u
b
l
i
c
i
t
é
publicité

Discussion: RECORDSET VBA Code dynamique [AC-2003]

  1. #1
    Membre confirmé Avatar de casavba
    Inscrit en
    juillet 2007
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : juillet 2007
    Messages : 455
    Points : 281
    Points
    281

    Par défaut RECORDSET VBA Code dynamique

    Bonjour,

    Meilleurs voeux 2012

    J'ai une Base de données (Access) qui contient les champs suivants, il y a :

    PAYS
    REGION
    DEPARTEMENT
    DEVISE
    CLIENT


    Ma problématique est la suivante :

    Je voudrais constituer autant de tables qu'il y a de combinaison (PAYS - REGION - VILLE - DEVISE - CLIENT)

    Exemple :

    PAYS.............REGION...........DEPARTEMENT..........DEVISE.......CLIENT
    FRANCE..........CORSE............CORSE DU SUD...........EUR............TATA
    FRANCE..........AQUITAINE.......GIRONDE..................CAD............TETE
    FRANCE..........CORSE............CORSE DU SUD............EUR............TATA
    FRANCE..........AQUITAINE.......DORDOGNE................PLN............TOTO
    Ainsi pour cet exemple succint, je dois constituer 3 tables :

    Premiere Table qui contient :

    PAYS.............REGION...........DEPARTEMENT..........DEVISE.......CLIENT
    FRANCE..........CORSE............CORSE DU SUD............EUR............TATA
    FRANCE..........CORSE............CORSE DU SUD...........EUR............TATA
    Deuxième Table :

    PAYS.............REGION...........DEPARTEMENT..........DEVISE.......CLIENT
    FRANCE..........AQUITAINE.......DORDOGNE................PLN............TOTO
    Troisième Table :

    PAYS.............REGION...........DEPARTEMENT..........DEVISE.......CLIENT
    FRANCE..........AQUITAINE.......GIRONDE..................CAD............TETE


    Auriez-vous une idée de comment le code doit-il être construit, sachant que ce code doit-être flexible càd si je rajoute un critère (par exemple : PAYS - REGION - VILLE - DEVISE - VILLE - CLIENT )
    celà n'entraîne pas des modifications lourdes dans le code.


    D'avance merci pour vos propositions

  2. #2
    Membre émérite Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    juin 2010
    Messages
    578
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : juin 2010
    Messages : 578
    Points : 828
    Points
    828

    Par défaut

    Bonjour casavba,

    Plusieurs questions :
    1.
    J'ai une Base de données (Access) qui contient les champs suivants
    Il s'agit bien d'une table et non d'une base, ou alors est-ce que ce sont plusieurs tables ?

    2. comment comptes-tu appeler chaque table créée ?

    Ensuite, la solution que j'envisagerais, à chaud.
    1er étape: créer une requête dynamique, basée sur une requête de regroupement dont la syntaxe serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select 'select (PAYS,REGION,DEPARTEMENT,DEVISE,CLIENT) from ma_table_source into   table_' & departement AS req  from ma_table_source GROUP BY DEPARTEMENT
    2e étape : créer une requête de suppression des données insérées dans ma requête de création de table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select 'delete * from  table_' & departement  & ';' AS req  from  ma_table_source GROUP BY DEPARTEMENT
    3e étape créer une requête d'insertion des données dans ces tables, à présent vides:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select 'INSERT INTO table_' & departement  & ( PAYS,REGION,DEPARTEMENT,DEVISE,CLIENT )
    SELECT PAYS,REGION,DEPARTEMENT,DEVISE,CLIENT FROM ma_table_source where PAYS = '' & PAYS & ''' &_
    ' and REGION = '' & REGION & ''' &_ 
     and DEPARTEMENT = '' & DEPARTEMENT & ''' &_
     and DEVISE = '' & DEVISE  & ''' &_
    and CLIENT = '' & CLIENT  & '';' as REQ FROM ma_table_source
    Pour chaque étape tu exécute dans le code VBA :

    1. ouverture d'un recordset à partir de la requête
    2. dans la boucle de parcours de chaque enregistrement du recordset
      - docmd.runSQL & 'recordset
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!
    si tout est OK, n'oubliez pas de cliquer sur

  3. #3
    Membre confirmé Avatar de casavba
    Inscrit en
    juillet 2007
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : juillet 2007
    Messages : 455
    Points : 281
    Points
    281

    Par défaut

    Merci dumas.blf

    Ton aide m'était précieuse.

    En fait, je suis passé par une table intermédiaire qui repertorie mes critères (Select distinct Champs from matableglobale)

    Après je parcours la table avec un Recordset

    en exécutant pour chaque ligne docmd.runSQL & 'recordset



    Merci

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

Discussions similaires

  1. [VBA] Ajouter dynamiquement une référence
    Par jpharand dans le forum VBA Access
    Réponses: 23
    Dernier message: 16/04/2010, 23h28
  2. [VBA]Création dynamique de code
    Par Kloun dans le forum VBA Access
    Réponses: 4
    Dernier message: 28/03/2007, 17h22
  3. [VBA] Code entre forms
    Par Virgile59 dans le forum Access
    Réponses: 3
    Dernier message: 28/12/2005, 21h57
  4. Réponses: 10
    Dernier message: 17/10/2005, 22h43
  5. Interprétation de code dynamiquement
    Par Smeuuh dans le forum Langages de programmation
    Réponses: 19
    Dernier message: 29/09/2005, 09h32

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