Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/01/2012, 17h31   #1
Membre confirmé
 
Avatar de casavba
 
Inscription : juillet 2007
Messages : 446
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 446
Points : 251
Points : 251
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 :

Citation:
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 :

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

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

Citation:
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
casavba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 18h30   #2
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
Bonjour casavba,

Plusieurs questions :
1.
Citation:
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 :
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 :
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 :
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
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 14h29   #3
Membre confirmé
 
Avatar de casavba
 
Inscription : juillet 2007
Messages : 446
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 446
Points : 251
Points : 251
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
casavba est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h19.


 
 
 
 
Partenaires

Hébergement Web