Tablie liée à 2 autres

Le
franck001
Bonjour à tous,

voici mon petit casse tête dont la solution doit être simple pour ceux qui
maitrisent mais je n'ai pas trouvé de solution sur le forum.
J'ai 3 tables A, B, C
Ma table C est liée par ses champs "ChampA" et "ChampB" à mes tables A et B
J'arrive à faire ma première étape qui consiste à créer via un formulaire
mes Enregistrements de la Table A et de créer par un sous-fourmulaire associé
mes Enregistrements associés de la Table C

C'est à l'étape 2 que je bloque, je voudrais sur un formulaire créer mes
enregistrements de ma Table B et via un sous formulaire par exemple choisir
les enregistrements de la Table C (Déjà créés précédemment à l'étape 1) que
je veux associé à ce nouvel enregistrement ?

Avez vous quelque chsoe dans le genre?

Merci d'avance

(-_-)°zZz
Franck
http://www.deschamps-web.com
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Dragan
Le #18831471
Bonjour,
d'après ce que j'ai compris les enegistrements de la tableC que tu cherches
sont ceux qui ont un champA non-null et champB null.

"franck001" a écrit :

Bonjour à tous,

voici mon petit casse tête dont la solution doit être simple pour ceux qui
maitrisent mais je n'ai pas trouvé de solution sur le forum.
J'ai 3 tables A, B, C
Ma table C est liée par ses champs "ChampA" et "ChampB" à mes tables A et B
J'arrive à faire ma première étape qui consiste à créer via un formulaire
mes Enregistrements de la Table A et de créer par un sous-fourmulaire associé
mes Enregistrements associés de la Table C

C'est à l'étape 2 que je bloque, je voudrais sur un formulaire créer mes
enregistrements de ma Table B et via un sous formulaire par exemple choisir
les enregistrements de la Table C (Déjà créés précédemment à l'étape 1) que
je veux associé à ce nouvel enregistrement ?

Avez vous quelque chsoe dans le genre?

Merci d'avance

------(-_-)°zZz------
Franck
http://www.deschamps-web.com


franck001
Le #18831661
Le problème n'est pas d'afficher les enregistrements qui ont un champA
non-null et champB null. C'est de trouver une manière de pouvoir associé les
enregistrements de la table C à la table B en partant d'un formulaire de
création d'un enregistrement de la table B.

------(-_-)°zZz------
Franck
http://www.deschamps-web.com


"Dragan" a écrit :

Bonjour,
d'après ce que j'ai compris les enegistrements de la tableC que tu cherches
sont ceux qui ont un champA non-null et champB null.

"franck001" a écrit :

> Bonjour à tous,
>
> voici mon petit casse tête dont la solution doit être simple pour ceux qui
> maitrisent mais je n'ai pas trouvé de solution sur le forum.
> J'ai 3 tables A, B, C
> Ma table C est liée par ses champs "ChampA" et "ChampB" à mes tables A et B
> J'arrive à faire ma première étape qui consiste à créer via un formulaire
> mes Enregistrements de la Table A et de créer par un sous-fourmulaire associé
> mes Enregistrements associés de la Table C
>
> C'est à l'étape 2 que je bloque, je voudrais sur un formulaire créer mes
> enregistrements de ma Table B et via un sous formulaire par exemple choisir
> les enregistrements de la Table C (Déjà créés précédemment à l'étape 1) que
> je veux associé à ce nouvel enregistrement ?
>
> Avez vous quelque chsoe dans le genre?
>
> Merci d'avance
>
> ------(-_-)°zZz------
> Franck
> http://www.deschamps-web.com


Dragan
Le #18833261
Oui, et donc.
tu dis avoir une tableC contenant un CHAMPA commun avec la tableA et CHAMPB
commun avec la tableB.
Tu as créé un enregistrement dans la tableA, et les enregistrements
correspondant dans la tableC; par conséquent ces enregistrements ont un
CHAMPB null ou ="" ou =0.
Lors de la création d'un enrgistrement dans la tableB seul les
enregistrements de la tableC dont le CHAMPB n'a pas déjà été rempli sont
concernés.
Maintenant, tu as le choix :

Soit tu fais le choix d'ajouter un enregitrement dans B en cliquant dans la
colonne correspondante dans le sousformulaireC.

Soit dans le formulaireB; tu ajoutes une liste contenant les
enregistrements de C dont le champB est null (ou="" ou =0) et tu mets à jour
le champb de ceux tu auras sélectionné parmi cette liste.

Soit c'est uniquement à partir d'un formulaire pour C que tu :
1) Sélectionnes ou ajoutes un enregistrement de A
2) Sélectionnes ou ajoutes un enregistrement de B
franck001
Le #18835361
Bonjour Dragan,

merci de passer du temps sur mon pb, donc effectivement ej veux faire ta
solution 2: "dans le formulaireB; tu ajoutes une liste contenant les
enregistrements de C dont le champB est null (ou="" ou =0) et tu mets à jour
le champb de ceux tu auras sélectionné parmi cette liste."

Comment fais tu pour "ajouter une liste" en allant taper dans les
enregistrements C dont ChampB est Null.

Merci encore

Franck

"Dragan" a écrit :

Oui, et donc.
tu dis avoir une tableC contenant un CHAMPA commun avec la tableA et CHAMPB
commun avec la tableB.
Tu as créé un enregistrement dans la tableA, et les enregistrements
correspondant dans la tableC; par conséquent ces enregistrements ont un
CHAMPB null ou ="" ou =0.
Lors de la création d'un enrgistrement dans la tableB seul les
enregistrements de la tableC dont le CHAMPB n'a pas déjà été rempli sont
concernés.
Maintenant, tu as le choix :

Soit tu fais le choix d'ajouter un enregitrement dans B en cliquant dans la
colonne correspondante dans le sousformulaireC.

Soit dans le formulaireB; tu ajoutes une liste contenant les
enregistrements de C dont le champB est null (ou="" ou =0) et tu mets à jour
le champb de ceux tu auras sélectionné parmi cette liste.

Soit c'est uniquement à partir d'un formulaire pour C que tu :
1) Sélectionnes ou ajoutes un enregistrement de A
2) Sélectionnes ou ajoutes un enregistrement de B




Dragan
Le #18839141
Bonjour,

Pour l'exemple j'appelle :
- ChampB, le champ commun aux TableB et TableC
- CleC, la clé primaire de la TableC
- SousFormC, le contrôle sous-formulaire de la TableC
- ListeC, le contrôle zone de liste

1) place dans le formulaire B le sous-formulaire C pour pouvoir consulter
les enregistrements de C.
2) crée une liste dans formulaire B dont la requête source est :
SELECT * FROM TableC WHERE ChampB=0; (si le champB est numérique , ="" si
c'est du texte..)

3) Choisis "Procédure événementielle" pour l'événement Sur double Clique de
la liste LISTEC puis Clique sur le bouton ... (à droite) et tu écris ce code

Private Sub ListeC_DblClick(Cancel as Integer)
'Si l'enregistrement TableB n' a pas été créé alors Ne rien faire
IF ISNULL([ChampB]) THEN CANCEL=1:EXIT SUB
'Mis à jour du champB de l'enregistrement de la TableC choisis lors du
DblClique
DOCMD.RUNSQL "UPDATE TableC SET ChampB=" & [ChampB] & " WHERE [CleC]=" &
ListeC.Value
'Rafraichissement de sous-formulaire C; pour voir le nouvel enregistrement
dans la liste
SOUSFORMC.FORM.REQUERY
'Rafraichissement de la liste LISTEC pour ne plus voir l'enregistrement de
la TableC mis à jour
LISTEC.REQUERY
End sub
franck001
Le #18858871
Merci c pas mal du tout et assez intuitif !


------(-_-)°zZz------
Franck
http://www.deschamps-web.com


"Dragan" a écrit :

Bonjour,

Pour l'exemple j'appelle :
- ChampB, le champ commun aux TableB et TableC
- CleC, la clé primaire de la TableC
- SousFormC, le contrôle sous-formulaire de la TableC
- ListeC, le contrôle zone de liste

1) place dans le formulaire B le sous-formulaire C pour pouvoir consulter
les enregistrements de C.
2) crée une liste dans formulaire B dont la requête source est :
SELECT * FROM TableC WHERE ChampB=0; (si le champB est numérique , ="" si
c'est du texte..)

3) Choisis "Procédure événementielle" pour l'événement Sur double Clique de
la liste LISTEC puis Clique sur le bouton ... (à droite) et tu écris ce code

Private Sub ListeC_DblClick(Cancel as Integer)
'Si l'enregistrement TableB n' a pas été créé alors Ne rien faire
IF ISNULL([ChampB]) THEN CANCEL=1:EXIT SUB
'Mis à jour du champB de l'enregistrement de la TableC choisis lors du
DblClique
DOCMD.RUNSQL "UPDATE TableC SET ChampB=" & [ChampB] & " WHERE [CleC]=" &
ListeC.Value
'Rafraichissement de sous-formulaire C; pour voir le nouvel enregistrement
dans la liste
SOUSFORMC.FORM.REQUERY
'Rafraichissement de la liste LISTEC pour ne plus voir l'enregistrement de
la TableC mis à jour
LISTEC.REQUERY
End sub



Publicité
Poster une réponse
Anonyme