Rechercher : dans
Par :

[access] ouverture formulaire recherche VBA

Dernière réponse le 4 déc 2007 à 15:50:11 rodrigue62, le 12 mai 2006 à 10:33:32 
 Signaler ce message aux modérateurs

Salut,
j'aimerai que lorsque je clique sur un bouton dans un formulaire celui ci en ouvre un autre (dont les tables sont liés), donc jusque la rien de compliqué (docmd.openform) mais ce qui se complique c'est que je voudrais qu'il ne m'affiche que les enregistrement ou la clef etrangere corresponde à la clef primaire de l'enregistrement sous lequel j'ai cliqué sous le premier formulaire.
Pour récupérer la valeur de la clef primaire dans le premier formulaire je sais comment faire (forms![nom du forms]![nom du champ].value) ce que je ne sais pas faire c'est ouvrir dans le second formulaire que les enregistrements correspondant à cette valeur. En gros ca revient à faire un tri sur un champ mais je ne sais pas comment faire en VBA.

1

rodrigue62, le 12 mai 2006 à 10:58:08

J'ai essayé la commande suivante:
LIVRAISON.Filter = "N°GROUPE_LIVRAISON = TOURNEE!N°GROUPE_LIVRAISON.Value"
ou LIVRAISON est mon second formulaire a ouvrir depuis le premier qui est TOURNEE, et N°GROUPE_LIVRAISON et le nom du champ sur lequel il faut faire le tri, mais ca ne marche pas , ce code cré une erreur.

Répondre à rodrigue62

2

zenon, le 12 mai 2006 à 11:44:57

Salut,

essaie simplement:

DoCmd.OpenForm "LIVRAISON",,"N°GROUPE_LIVRAISON=Forms!TOURNEE!N°GROUPELIVRAISON"


(Si j'ai bien compris le mon des tables et des champs...)

Répondre à zenon

3

rodrigue62, le 12 mai 2006 à 11:57:24

Bien vu zenon, il est vrai que le 3eme parametre de la comande openform est nomfiltre, mais je viens d'essayer la ligne de commande que tu as donnée, ca marche pas ca ouvre le formulaire avec tous les enregistrements. Mais deja merci c'est une piste je vais m'interresser plus a la commande openform plutot que de chercher une commande filter, et je vais bien voir si il y a pas moyen de faire ce que je veux.

Répondre à rodrigue62

4

rodrigue62, le 12 mai 2006 à 13:51:19

En fait le nomfiltre doit faire appel à une requête ou un nom de filtre. J'ai donc cré la requete suivante:

SELECT LIVRAISON.N°LIVRAISON, LIVRAISON.N°CLIENT, TOURNEE.N°GROUPE_LIVRAISON
FROM TOURNEE INNER JOIN LIVRAISON ON TOURNEE.N°GROUPE_LIVRAISON=LIVRAISON.N°GROUPE_LIVRAISON
WHERE FORMS!LIVRAISON!N°GROUPE_LIVRAISON.value=FORMS!TOURNEE!N°GRO­UPE_LIVRAISON;

et j'ai attaché son nom a la commande openform, mais desormais ca m'ouvre un formulaire vierge. Je crois commencer à etre sur la bonne voie et ce grace a zenon si quelqu'un pouvait me donner un petit coup de pouce pour avancer plus vitte, car en fait c'est assez urgent

Répondre à rodrigue62

5

rodrigue62, le 12 mai 2006 à 15:11:15

C'est bon j'ai trouvé je mets donc la requête a attacher pour ceux que ca interresse:

SELECT LIVRAISON.N°LIVRAISON, LIVRAISON.N°CLIENT, LIVRAISON.N°GROUPE_LIVRAISON
FROM TOURNEE INNER JOIN LIVRAISON ON TOURNEE.N°GROUPE_LIVRAISON = LIVRAISON.N°GROUPE_LIVRAISON
WHERE (((LIVRAISON.N°GROUPE_LIVRAISON)=[forms]![TOURNEE]![N°GROUPE­_LIVRAISON].[value]));

Répondre à rodrigue62

6

zenon, le 12 mai 2006 à 21:52:26

Excuse-moi, je pense que j'ai oublié une virgule: si on l'ajoute, on peut encoder directement l'expression Where et les critères devraient fonctionner sans faire appel à un filtre...

Répondre à zenon

7

rodrigue62, le 20 jun 2006 à 14:00:41

Donc la pour definir le critere sur lequel doit porter le champ on utilise [forms]![TOURNEE]![N°GROUPE_LIVRAISON], mais si le champ dans lequel l'on veux recuperer le critere fait partie d'un sous formulaire, comment y fait on appel?

Répondre à rodrigue62

8

ami_khalid01, le 22 oct 2007 à 14:21:18
  • +1

Bonjour,
comment faire pour creer dans la zone détail d'un formulaire, la commande " filter par formulaire " .

Répondre à ami_khalid01

9

 magi123, le 4 déc 2007 à 15:50:11

Comment faire pour un recherche multicriteres à partir de plusieurs feuilles d'un meme classeur

Répondre à magi123
Collection CommentÇaMarche.net