Pb filtre sur formulaire access

JEYBY -  
zenon Messages postés 726 Date d'inscription   Statut Membre Dernière intervention   -
Bonsoir,

J'ai une question, j'explique :

J'ai un formulaire (nommé frm_p) issu d'une table (signalement). Dans ce formulaire, j'ai une zone de liste indépendante dans laquelle je tape une valeur et ça me filtre le formulaire. Jusque là pas de pb. Dans le formulaire, j'ai un sous formulaire (nommé sfrm_1) qui est lui issu d'une table (dossiers). Il y a un bug car il me reconnait pas le nom du champ (sans doute un pb car je ne lui dit pas qu'il faut filtrer dans le sous formulaire). Je voudrais avec ma zone de liste pouvoir saisir une valeur et que cette valeur filtre le sous formulaire cette fois, la j'avoue je bloque depuis 2j.

Voici un exemple de mon code :

If Me.cb8.ListIndex > 0 Then

DoCmd.ApplyFilter , "[N° Dossier] ='" & Me.cb8.Text & "'"
ElseIf Me.cb8.ListIndex = 0 Then
Me.FilterOn = False
cb8 = ""
End If



cb8 est ma zone de liste dans laquelle je tape ma variable.
A voir également:

3 réponses

zenon Messages postés 726 Date d'inscription   Statut Membre Dernière intervention   180
 
Pas besoin de code VB pour faire ça.

Il faut que ton sous-formulaire soit lié au formulaire principal
(la clé primaire du formulaire principal étant présente ss forme de clé externe ds le ssformulaire)
En principe Access remplit automatiquement les champs père et fils (si les noms sont identiques en tous cas et si les données sont compatible (N°auto ou numérique)
A partir de là lorsque tu changes d'enregistrement dans le formulaire principal le ssformulaire est automatiquement mis à jour.
0
JEYBY
 
J'ai bien noté zenon et ça marche comme tu dis, ça s'est quand l'utilisateur recherche une valeur du formulaire, ça met automatiquement à jour le sous formulaire. Mais dans l'autre sens, c-a-d, l'utilisateur sélectionne (ou tape) dans la zone de liste une valeur qui représente le critère de recherche. Ce critère s'applique à un champ du sous formulaire qui va être filtré (le formulaire sera automatiquement mis à jour par le biais des relations).

Y a-t-il une solution à mon pb ?

Merci.

JEYBY
0
zenon Messages postés 726 Date d'inscription   Statut Membre Dernière intervention   180
 
Je ne suis pas sûr que ce soit très logique ni possible pour des raisons de structure.

En principe un enregistrement du formulaire renvoie à n enregistrements du ssformulaire. Tu ne devrais donc pas pouvoir sélectionner un enregistrement unique du formulaire en effectuant un tri sur le sous-formulaire à moins d'utiliser la clé externe mais alors inutile de passer par le sous-formulaire.

Une solution serait de récupérer la clé externe en triant les données de la table ssjacente au ss formulaire puis de filtrer le formulaire.

Il y a moyen de la faire "proprement" avec les recorsets mais je n'en suis pas capable...

Je triche en créant un formulaire qui reste masqué sur lequel j'applique le filter:

Sur clic ds la liste de choix:
DoCmd.OpenForm "NomDuForm",,"[CritèreX]=ListeDeChoix"
DoCmd.OpenForm "frm_p",,"CléPrimaire=CLéExterneDuFormPrécédent"
0