OVH Cloud OVH Cloud

Post du jour: un peu compliqué ;)°

2 réponses
Avatar
atmus
Bonsoir tout le monde,

Ma question aujourd'hui est apparement tr=E8s complexe!!!!

Je m'explique en simplifiant:
- J'ai une table "REFERENCE" avec 2 champs: H1 et H2.=20
Cette table comporte un seul enregistrement. H1 ne peut=20
avoir comme valeur que 1 ou 2 et H2 ne peut avoir comme=20
valeur que A, B ou C
- J'ai une deuxi=E8me table "SOURCE" avec 5 champs: C1, C2,=20
C3, C4 et C5
- J'ai 6 autres tables: T1, T2, T3, T4 et T5, avec=20
chacune 5 champs identiques =E0 ceux de la table "SOURCE"
- J'ai trois requ=EAtes Ajout R1, R2, R3, R4 et R5. Elles=20
permettent respectivement d'alimenter les tables T1, T2,=20
T3, T4 et T5 =E0 partir de la table "SOURCE"


Mon objectif: Avoir un bouton dans un formulaire qui:
* Lire les 2 valeur de l'enregistrement de la=20
table "REFERENCE" (H1 et H2) (on a dit qu'il n'y a qu'un=20
seul enregistrement), et en fonction de ces deux valeurs,=20
ex=E9cute la requ=EAte ajout correspondante:

Si: =20
H1 H2 Alors
1 A R1
1 B R2=20
1 C R3=20
2 A R4
2 B R5
2 C R6


C'est un peu complexe!!!!

Avez vous une issue, une solution g=E9niale?!!!


Merci de m'aider

2 réponses

Avatar
Xavier HUE
Bonjour Atmus,

Quelque chose comme ça:

Dim db As Database
Dim Frd as Recordset
Dim CodeAction As String

Set db = CurrentDB
Set Frd = db.OpenRecordset("SELECT * FROM REFERENCE", DbOpenSnapShot)

CodeAction = Frd("H1") & Frd("H2")

Select Case CodeAction
Case "1A"
DoCmd.RunSQL "R1"

Case "1B"
DoCmd.RunSQL "R2"

etc...
End Select

Frd.Close
Set Frd = Nothing
Set db = Nothing

Ca Aide?
Cordialement.
Xavier.

PS: Enlever blug de mon adresse mail.
Avatar
Daniel Carollo
Bonjour Atmus!

Il y a plusieurs solutions, toutes passent par VBA pusiqu'il n'est pas
possible d'affecter les noms des tables ou requetes a des variables dans la
syntaxe SQL de Jet.

La solution la plus evidente consiste a peupler un recordset avec les
valeurs de la table REFERENCE. Un jeu de select case, suivis de l'execution
de la requete "quivabien".

Pour faire un peu plus malin, je verrais bien la creation d'une table
supplementaire, avec trois colonnes qui reflete le tableau que vous nous
donnez a la fin de votre message. Cela permettra d'avoir les noms des
requetes "en clair" dans un endroit ou on peut faire la maintenance assez
facilement, et d'en ajouter/retirer dans le futur sans a avoir a toucher au
code.

Il suffit alors de faire une requete qui joint la table REFERENCE et cette
nouvelle table. Le recordset, ou meme un bete DLookup, suivant votre humeur,
va donc vous donner le nom de la requete a effectuer. Un SQLRun suffira a
terminer le travail.

Je me pose toutefois la question de savoir si tout ce travail est bien
justifie. Quand je vois qu'il y a sept tables identiques, je me demande si
l'etude de la structure est bien saine...

A bientot.

Daniel :-)

Computing Technologies International - www.computing-tech.com
We provide solutions...
P.S. Je suis maintenant disponible pour contrats à courte et moyenne durée.
Envoyer un courrier a: d a n i e l c @ c o m p u t i n g - t e c h . c o
m

"atmus" wrote in message
news:008601c34d4b$f54dfa00$
Bonsoir tout le monde,

Ma question aujourd'hui est apparement très complexe!!!!

Je m'explique en simplifiant:
- J'ai une table "REFERENCE" avec 2 champs: H1 et H2.
Cette table comporte un seul enregistrement. H1 ne peut
avoir comme valeur que 1 ou 2 et H2 ne peut avoir comme
valeur que A, B ou C
- J'ai une deuxième table "SOURCE" avec 5 champs: C1, C2,
C3, C4 et C5
- J'ai 6 autres tables: T1, T2, T3, T4 et T5, avec
chacune 5 champs identiques à ceux de la table "SOURCE"
- J'ai trois requêtes Ajout R1, R2, R3, R4 et R5. Elles
permettent respectivement d'alimenter les tables T1, T2,
T3, T4 et T5 à partir de la table "SOURCE"


Mon objectif: Avoir un bouton dans un formulaire qui:
* Lire les 2 valeur de l'enregistrement de la
table "REFERENCE" (H1 et H2) (on a dit qu'il n'y a qu'un
seul enregistrement), et en fonction de ces deux valeurs,
exécute la requête ajout correspondante:

Si:
H1 H2 Alors
1 A R1
1 B R2
1 C R3
2 A R4
2 B R5
2 C R6


C'est un peu complexe!!!!

Avez vous une issue, une solution géniale?!!!


Merci de m'aider