{Access} Filtrer ds SF selon champs Formulai
rankynette
-
blux Messages postés 27147 Date d'inscription Statut Modérateur Dernière intervention -
blux Messages postés 27147 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'aimerai que mon sous-formulaire ne propose que les produits du fournisseur saisi dans le formulaire.
J'ai d'abord crée un formulaire de saisie de produit de fournisseur, avec un formulaire basé sur la table fournisseur et un sous formulaire basé sur une requete de la table "article fournisseurs" ou j'ai mis le critère [Formulaires]![FRM_ArticlesFournisseurs]![N°Fourn] pour le n° de fournisseur de la table article.
Jusqu'ici tout ce passe bien, quand je sélectionne un fournisseur dans ce formulaire, je lui attribue ses propres articles, et je peux visualiser ses articles.
Maintenant j'ai crée un formulaire de saisie de commandes basé sur une requête comprenant le n° du fournisseur de la table fournisseur et tous les éléments de la table commandeFourn. J'y ajoute un sous formulaire pour le détail de cette commande. Ce sous formulaire est basé sur une requête basée uniquement sur la table Ligne commande avec le total par ligne commande TOTAL: [QuantiteCommande]*[PrixArticle]
et j'ai mis les critères [Formulaires]![FRM_CommandesFournMat]![N°Imputation] et [Formulaires]![FRM_CommandesFournMat]![NumFournisseur]
J'ai mis en champs père et fils les champs "n°imputation" et "n°fournisseur"
Lorsque je suis en mode saisie, dans le sous formulaire apparait bien le N°imputation et le nom du fournisseur quand je les saisi dans le formulaire.
Mais j'aimerai que dans le champs "désignation" qui est une liste déroulante, access ne me propose que les produits du fournisseur saisie.
Si je change la requête du sous formulaire et que j'ajoute la table "article fournisseurs", et que j'insère le champs "prix" de cette table dans la requête, access n'affiche plus les champs fils dans le sous formulaire.
Que dois-je faire ? Mes relations sont bonnes et l'intégrité référencielle s'est bien faite pour toutes les tables reliées.
J'aimerai que mon sous-formulaire ne propose que les produits du fournisseur saisi dans le formulaire.
J'ai d'abord crée un formulaire de saisie de produit de fournisseur, avec un formulaire basé sur la table fournisseur et un sous formulaire basé sur une requete de la table "article fournisseurs" ou j'ai mis le critère [Formulaires]![FRM_ArticlesFournisseurs]![N°Fourn] pour le n° de fournisseur de la table article.
Jusqu'ici tout ce passe bien, quand je sélectionne un fournisseur dans ce formulaire, je lui attribue ses propres articles, et je peux visualiser ses articles.
Maintenant j'ai crée un formulaire de saisie de commandes basé sur une requête comprenant le n° du fournisseur de la table fournisseur et tous les éléments de la table commandeFourn. J'y ajoute un sous formulaire pour le détail de cette commande. Ce sous formulaire est basé sur une requête basée uniquement sur la table Ligne commande avec le total par ligne commande TOTAL: [QuantiteCommande]*[PrixArticle]
et j'ai mis les critères [Formulaires]![FRM_CommandesFournMat]![N°Imputation] et [Formulaires]![FRM_CommandesFournMat]![NumFournisseur]
J'ai mis en champs père et fils les champs "n°imputation" et "n°fournisseur"
Lorsque je suis en mode saisie, dans le sous formulaire apparait bien le N°imputation et le nom du fournisseur quand je les saisi dans le formulaire.
Mais j'aimerai que dans le champs "désignation" qui est une liste déroulante, access ne me propose que les produits du fournisseur saisie.
Si je change la requête du sous formulaire et que j'ajoute la table "article fournisseurs", et que j'insère le champs "prix" de cette table dans la requête, access n'affiche plus les champs fils dans le sous formulaire.
Que dois-je faire ? Mes relations sont bonnes et l'intégrité référencielle s'est bien faite pour toutes les tables reliées.
A voir également:
- {Access} Filtrer ds SF selon champs Formulai
- Word mettre à jour tous les champs - Forum Word
- Echec mise à jour champs Word ✓ - Forum Word
- Acer quick access ✓ - Forum PC portable
- Acer Quick Access - affichage CapsLock, VerrNum - Forum logiciel systeme
- Désinstaller ACER QUICK ACCESS - Forum Logiciels
11 réponses
Salut,
le champ père doit contenir le(s) nom(s) de(s) zone(s) dans laquelle(lesquelles) on récupère des informations
le champ fils doit contenir le(s) nom(s) des champs de tables récupéré(s) via champ père et utilisables dans le sous-formulaire
Est-ce le cas ?
le champ père doit contenir le(s) nom(s) de(s) zone(s) dans laquelle(lesquelles) on récupère des informations
le champ fils doit contenir le(s) nom(s) des champs de tables récupéré(s) via champ père et utilisables dans le sous-formulaire
Est-ce le cas ?
Pour les champs père et fils, j'ai cliqué sur propriété du sous formulaires, dans l'onglet données, j'ai cliqué sur "..." et j'ai sélectionné les champs en commun du formulaire et du sous formulaire. Est-ce que c'est ça que tu veux dire ?
Je ne sais pas si c'est ce que j'ai voulu dire (je ne fais que trop rarement confiance aux trucs qui réfléchissent à ma place, je préfère taper moi-même ce que je veux)
Exemple :
- un formulaire principal avec une zone de liste déroulante qui s'appelle Liste_1 et qui renvoie num_fournisseur
- un sous-formulaire basé sur une requête qui comprend, entre autres champs, num_fournisseur
Si l'on veut que la saisie d'un numéro de fournisseur dans la liste déroulante du formulaire principal restreigne les données affichées par le sous-formulaire à la valeur choisie, alors on doit avoir Liste_1 comme champ père et num_fournisseur comme champ fils dans les propriétés du sous-formulaire.
Est-ce plus clair ?
Exemple :
- un formulaire principal avec une zone de liste déroulante qui s'appelle Liste_1 et qui renvoie num_fournisseur
- un sous-formulaire basé sur une requête qui comprend, entre autres champs, num_fournisseur
Si l'on veut que la saisie d'un numéro de fournisseur dans la liste déroulante du formulaire principal restreigne les données affichées par le sous-formulaire à la valeur choisie, alors on doit avoir Liste_1 comme champ père et num_fournisseur comme champ fils dans les propriétés du sous-formulaire.
Est-ce plus clair ?
Ma requête de sous formulaire reprend "Num Fournisseur" mais de la table article. Il faut que je rajoute donc à cette requête la table fournisseur et que je prenne plutot le champ "Num fournisseur" de la table fournisseur ? Dans le formulaire principal, le champ "Num Fournisseur" est celui de la table fournisseur.
En tout cas, merci de me répondre, ça me donne plusieurs idées.
En tout cas, merci de me répondre, ça me donne plusieurs idées.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ok, donc mes champs père et fils sont bons, mais ils ne s'affichent pas automatiquemet dans le sous formulaire. Le problème doit venir de la requête du sous formulaire, puisque c'est depuis que j'ai plusieurs tables dans cette requête. Je doit mal m'y prendre.
J'ai fait un imprim écran de mes relations, mais je ne sais pas comment je peux insérer cette image dans ce post. J'ai mis l'essentiel dans chaque table pour éviter de mettre 5 mêmes champs dans 2 tables. Les liaisons devraient renvoyer à la valeur souhaitée.
Ma requête de sous formulaire prend les éléments de 2 tables, et c'est là que n'apparaissent plus mes champs fils sur le sous formulaire...
J'ai fait un imprim écran de mes relations, mais je ne sais pas comment je peux insérer cette image dans ce post. J'ai mis l'essentiel dans chaque table pour éviter de mettre 5 mêmes champs dans 2 tables. Les liaisons devraient renvoyer à la valeur souhaitée.
Ma requête de sous formulaire prend les éléments de 2 tables, et c'est là que n'apparaissent plus mes champs fils sur le sous formulaire...
Ok merci beaucoup, voici mes liaisons :
https://www.cjoint.com/?ckn7HrLvaA
Voici ma requête (j'ai du faire 2 imprim ecran, j'ai pas d'écran 16/9 lol)
https://www.cjoint.com/?ckoj6bvB76
https://www.cjoint.com/?ckokLjDXYN
J'espère que les liens fonctionnent...
https://www.cjoint.com/?ckn7HrLvaA
Voici ma requête (j'ai du faire 2 imprim ecran, j'ai pas d'écran 16/9 lol)
https://www.cjoint.com/?ckoj6bvB76
https://www.cjoint.com/?ckokLjDXYN
J'espère que les liens fonctionnent...
Peux-tu copier la requête du sous-formulaire et l'exécuter en mode SQL ? C'est celle qui correspond à requête2.bmp ?
Heu... comment qu'on fait ?
La requête est sur 2 images car j'ai un petit écran, donc il faut mettre côte à côte les 2 images pour voir la totalité de ma requête.
Dis moi juste comment on copie la requête pour qu'elle s'affiche en SQL (j'espère que c'est pas compliqué... Je sais qu'on peut afficher la fenêtre de code où est écrit des choses avec "Sub" et "end Sub", est-ce que c'est là qu'il faut aller ?)
La requête est sur 2 images car j'ai un petit écran, donc il faut mettre côte à côte les 2 images pour voir la totalité de ma requête.
Dis moi juste comment on copie la requête pour qu'elle s'affiche en SQL (j'espère que c'est pas compliqué... Je sais qu'on peut afficher la fenêtre de code où est écrit des choses avec "Sub" et "end Sub", est-ce que c'est là qu'il faut aller ?)
j'avais pas saisi l'histoire de la requête multi-page :-)
pour asser en mode sql qaund tu es en mode création, il faut sélectionner SQL dans la barre d'outils qui apparaît sous le menu principal d'access, tout à fait à gauche : tu as un tableau, une équerre et le mot SQL dans la liste déroulante.
Une fois que tu es en mode SQL tu recopies cette requête, et tu en crées une nouvelle (mais vide), tu passes en mode SQL et tu recopies le texte de la requête initiale, ensuite, tu peux le bidouiller (notamment en forçant les valeurs qui sont normalement remplies par des zones de formulaire) pour voir si tu arrives à sortir des résultats cohérents et à quel moment plus rien n'est renvoyé.
pour asser en mode sql qaund tu es en mode création, il faut sélectionner SQL dans la barre d'outils qui apparaît sous le menu principal d'access, tout à fait à gauche : tu as un tableau, une équerre et le mot SQL dans la liste déroulante.
Une fois que tu es en mode SQL tu recopies cette requête, et tu en crées une nouvelle (mais vide), tu passes en mode SQL et tu recopies le texte de la requête initiale, ensuite, tu peux le bidouiller (notamment en forçant les valeurs qui sont normalement remplies par des zones de formulaire) pour voir si tu arrives à sortir des résultats cohérents et à quel moment plus rien n'est renvoyé.
Bonjour,
Apparement il y a eu un problème la semaine dernière, je ne pouvez plus répondre sur le forum...
Pour ma requête en langage SQL ça donne ceci :
SELECT TBL_LigneCommandeMateriaux.N°LigneCommande, TBL_LigneCommandeMateriaux.N°Imputation, TableArticles.N°Fournisseur, TableArticles.N°Famille, TableArticles.RefArticle, TBL_LigneCommandeMateriaux.RefArticle, TBL_LigneCommandeMateriaux.QuantiteCommande, TableArticles.Prix, TBL_LigneCommandeMateriaux.PrixArticle, [QuantiteCommande]*[PrixArticle] AS TOTAL
FROM TableArticles INNER JOIN TBL_LigneCommandeMateriaux ON TableArticles.RefArticle = TBL_LigneCommandeMateriaux.RefArticle
WHERE (((TBL_LigneCommandeMateriaux.N°Imputation)=[Formulaires]![FRM_CommandesFournMat]![N°Imputation]) AND ((TableArticles.N°Fournisseur)=[Formulaires]![FRM_CommandesFournMat]![NumFournisseur]));
Comment puis-je bidouiller en forçant les valeurs ? Il faut que je change quelque chose dans ce qui est écrit dans le SQL ?
Merci d'avance
Apparement il y a eu un problème la semaine dernière, je ne pouvez plus répondre sur le forum...
Pour ma requête en langage SQL ça donne ceci :
SELECT TBL_LigneCommandeMateriaux.N°LigneCommande, TBL_LigneCommandeMateriaux.N°Imputation, TableArticles.N°Fournisseur, TableArticles.N°Famille, TableArticles.RefArticle, TBL_LigneCommandeMateriaux.RefArticle, TBL_LigneCommandeMateriaux.QuantiteCommande, TableArticles.Prix, TBL_LigneCommandeMateriaux.PrixArticle, [QuantiteCommande]*[PrixArticle] AS TOTAL
FROM TableArticles INNER JOIN TBL_LigneCommandeMateriaux ON TableArticles.RefArticle = TBL_LigneCommandeMateriaux.RefArticle
WHERE (((TBL_LigneCommandeMateriaux.N°Imputation)=[Formulaires]![FRM_CommandesFournMat]![N°Imputation]) AND ((TableArticles.N°Fournisseur)=[Formulaires]![FRM_CommandesFournMat]![NumFournisseur]));
Comment puis-je bidouiller en forçant les valeurs ? Il faut que je change quelque chose dans ce qui est écrit dans le SQL ?
Merci d'avance
Oui, dans ton where, tu remplaces les valeurs que tu lis habituellement dans ton formulaire par une valeur significative, comme dans cet exemple :
Comme ça, tu pourras voir si ta requête marche normalement.
WHERE (((TBL_LigneCommandeMateriaux.N°Imputation)= 12) AND ((TableArticles.N°Fournisseur)= 32));
Comme ça, tu pourras voir si ta requête marche normalement.
Bonjour,
Merci pour l'explication, j'ai donc essayé en mode SQL de mettre les chiffres du premier enregistrement, puis du 2ème enregistrement, et pour ces 2 essais, Access ecrit "type de données incompatible dans l'expression du critère"
Donc le problème viendrait du critère rentré dans la requête... mais quel est ce problème ? qu'est-ce qui serait incompatible ?
Si, au lieu de mettre des chiffres, je met des lettres, par exemple, le fournisseur qui a pour n° 83 s'appelle "SUPERFOURNISSEUR", donc au lieu de mettre 83 dans mon test, j'écrit "SUPERFOURNISSEUR", Access me demande d'entrer la valeur du paramètre "SUPERFOURNISSEUR", je tape alors 83, et Access écrit "Cette expression présente une syntaxe incorrecte, ou est trop complexe pour être évaluée. Par exemple, une expression numérique peut contenir des éléments trop compliqués. Essayez de la simplifier en en affectant des parties à des variables."
Merci pour l'explication, j'ai donc essayé en mode SQL de mettre les chiffres du premier enregistrement, puis du 2ème enregistrement, et pour ces 2 essais, Access ecrit "type de données incompatible dans l'expression du critère"
Donc le problème viendrait du critère rentré dans la requête... mais quel est ce problème ? qu'est-ce qui serait incompatible ?
Si, au lieu de mettre des chiffres, je met des lettres, par exemple, le fournisseur qui a pour n° 83 s'appelle "SUPERFOURNISSEUR", donc au lieu de mettre 83 dans mon test, j'écrit "SUPERFOURNISSEUR", Access me demande d'entrer la valeur du paramètre "SUPERFOURNISSEUR", je tape alors 83, et Access écrit "Cette expression présente une syntaxe incorrecte, ou est trop complexe pour être évaluée. Par exemple, une expression numérique peut contenir des éléments trop compliqués. Essayez de la simplifier en en affectant des parties à des variables."
Je colle le texte de ma requête à quel endroit ?
Voici le texte de ma requête :
SELECT TBL_LigneCommandeMateriaux.N°LigneCommande, TBL_LigneCommandeMateriaux.N°Imputation, TableArticles.N°Fournisseur, TableArticles.N°Famille, TableArticles.RefArticle, TBL_LigneCommandeMateriaux.RefArticle, TBL_LigneCommandeMateriaux.QuantiteCommande, TableArticles.Prix, TBL_LigneCommandeMateriaux.PrixArticle, [QuantiteCommande]*[PrixArticle] AS TOTAL
FROM TableArticles INNER JOIN TBL_LigneCommandeMateriaux ON TableArticles.RefArticle = TBL_LigneCommandeMateriaux.RefArticle
WHERE (((TBL_LigneCommandeMateriaux.N°Imputation)=[Formulaires]![FRM_CommandesFournMat]![N°Imputation]) AND ((TableArticles.N°Fournisseur)=[Formulaires]![FRM_CommandesFournMat]![NumFournisseur]));
Voici le texte de ma requête :
SELECT TBL_LigneCommandeMateriaux.N°LigneCommande, TBL_LigneCommandeMateriaux.N°Imputation, TableArticles.N°Fournisseur, TableArticles.N°Famille, TableArticles.RefArticle, TBL_LigneCommandeMateriaux.RefArticle, TBL_LigneCommandeMateriaux.QuantiteCommande, TableArticles.Prix, TBL_LigneCommandeMateriaux.PrixArticle, [QuantiteCommande]*[PrixArticle] AS TOTAL
FROM TableArticles INNER JOIN TBL_LigneCommandeMateriaux ON TableArticles.RefArticle = TBL_LigneCommandeMateriaux.RefArticle
WHERE (((TBL_LigneCommandeMateriaux.N°Imputation)=[Formulaires]![FRM_CommandesFournMat]![N°Imputation]) AND ((TableArticles.N°Fournisseur)=[Formulaires]![FRM_CommandesFournMat]![NumFournisseur]));