|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : mai 2011 Messages : 12 ![]() |
Bonjour,
je travaille sur une base de données pour le suivi nutritif d'une personne et j'aimerais pour récupérer l'id d'une catégorie d'aliment via sois une liste déroulante sois une feuille de donnée. Ma structure est la suivante, mon frmPrincipale contient 4 onglet, dans le 3ème se trouve un SfrmCategorieAliment contenant une liste déroulante avec les catégories d'aliments et un système de recherche qui m'affiche les résultats dans une feuille de donnée. J'aimerais, sois par une sélection dans la liste déroulante, sois par une clique dans la feuille de donnée être renvoyer sur le 4ème onglet contenant lui une seul liste déroulante. Cette liste déroulante ne dois afficher que les aliments faisant partie de la catégorie sélectionnée juste avant. J'utilise le code suivant : Code :
J'ai séparé ma requête SQL pour voir plus précisément d'où provient l'erreur et elle vient de la 1ère ligne. Lors du débogage la[ListeCategorie] contient bien l'id comme il faudrait mais maCategorie reste vide... Est-ce que quelqu'un aurait une solution SVP. D'avance, merci |
||
|
|
00
|
|
|
#2 |
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonjour,
Essaie avec un point d'exclamation entre [Forms] et [frmPrincipale] Code :
maCategorie = [Forms]![frmPrincipale].[sfrmCategorieAliment].[Form].[ListeCategorie] Le point (.) est normalement suivi d'une propriété ou d'une méthode. Le point d'exclamation (!) est, quand à lui, suivi du nom d'un élément dans une collection. Forms est une collection. Ceci étant, cela devrait aussi fonctionner Code :
maCategorie = [Forms].frmPrincipale.[sfrmCategorieAliment].[Form].[ListeCategorie] A+ |
|
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Inscription : mai 2011 Messages : 12 ![]() |
J'ai essayer de ces deux façons la:
Code :
Code :
Forms![frmPrincipale]!sfrmSpecifiqueAliment.Form.ListeAliment.RecordSource = txtSQL Enlever les crochets n'a rien changer non plus. Merci, A+ |
||
|
|
00
|
|
|
#4 |
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Et le nom du contrôle sous-formulaire est bien sfrmCategorieAliment ?
Il n'est pas resté avec un nom par défaut du genre Fille42 ? |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : mai 2011 Messages : 12 ![]() |
Oui !
|
|
|
00
|
|
|
#6 |
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Va dans l'éditeur Visual Barsic (Alt+F11)
Affiche la fenêtre d'exécution (Ctrl+G) Dans la fenêtre d'exécution tape ? Forms!frmPrincipale.Name Répète l'opération en ajoutant le membre suivant ? Forms!frmPrincipale!sfrmCategorieAliment.Name ? Forms!frmPrincipale!sfrmCategorieAliment.Form.Name ? Forms!frmPrincipale!sfrmCategorieAliment.Form!ListeCategorie.Name ? Forms!frmPrincipale!sfrmCategorieAliment.Form!ListeCategorie.Value |
|
|
00
|
|
|
#7 |
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Je viens de voir un truc.
Pour la liste ListeAliment, il ne faut pas utiliser la propriété RecordSource, mais RowSource. |
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : mai 2011 Messages : 12 ![]() |
Tous m'affiche "Erreur d'éxécution '2450': Microsoft Access ne trouve pas le formulaire "frmPrincipale" auquel il est fait référence.
J'ai bien vérifier et le nom du formulaire est correct. |
|
|
00
|
|
|
#9 |
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Il faut que le formulaire soit ouvert, pour faire partie de la collection Forms.
|
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : mai 2011 Messages : 12 ![]() |
J'ai trouvé la solution, il fallait mettre RowSoucre au lieu de RecordSource.
Merci beaucoup LedZeppII !!! |
|
|
00
|
|
|
#11 | ||
|
Invité de passage
![]() Inscription : mai 2011 Messages : 12 ![]() |
Bonjour,
J'ai encore un petit problème, je voudrais pouvoir afficher également la liste des aliments trier par rapport à la catégorie sélectionnée dans un formulaire feuille de données. J'utilise le code suivant: Code :
Je pense que je n'utilise pas la bonne propriété mais je ne sais pas laquelle utilisé. ++ |
||
|
|
00
|
|
|
#12 |
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonjour,
Tu es allé trop loin, en descendant jusqu'au contrôle NomAliment. Il faut aller jusqu'au deuxième niveau de sous-formulaire Forms!frmPrincipale!sfrmSpecifiqueAliment.Form!sfrmAlimentFeuilleDonnee.Form <- fm principal --> <---- 1er niveau sfm ----> <------ 2e niveau sfm ------> Code :
Forms!frmPrincipale!sfrmSpecifiqueAliment.Form!sfrmAlimentFeuilleDonnee.Form.RecordSource = txtSQL |
|
|
00
|
|
|
#13 |
|
Invité de passage
![]() Inscription : mai 2011 Messages : 12 ![]() |
Hello,
J'ai essayer avec ton chemin et le recordsource mais la feuille de donnée reste vide. Merci beaucoup pour ton aide ++ |
|
|
00
|
|
|
#14 |
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonsoir,
J'ai testé dans une base de données avant de poster Vendredi. Donc là, je ne sais plus quoi dire, parce que chez moi ça fonctionne. A la fois dans la liste déroulante et dans le sous-sous-formulaire. Les deux affichent les mêmes lignes. A tout hasard, est-ce que les contrôles sont bien liés (source contrôle non vide) à des champs de req_tAliment_IDCategorie ? A+ |
|
|
00
|
|
|
#15 |
|
Invité de passage
![]() Inscription : mai 2011 Messages : 12 ![]() |
Le source contrôle de la liste déroulante est vide et elle marche. Si le source contrôle du nomAliment de la feuille de données est vide la feuille de données ne contient rien alors que si je met la requête elle contient "#Nom*?" à toute les lignes.
A+ |
|
|
00
|
|
|
#16 | ||||
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonsoir,
Un formulaire fonctionne différemment d'une liste. 1) Le formulaire a besoin d'une source de données pour afficher des enregistrements. S'il n'a pas de source, il est dit indépendant, et ne pourra pas afficher plus d'une ligne. De plus ses contrôles seront, eux aussi, indépendants car on ne pourra pas les lier à un champ de la source de données du formulaire. 2) Les contrôles (zones de texte, de liste, de liste modifiable, ...) ont eux aussi besoin d'une source. En général, la source d'un contrôle est un champ de la source de données du formulaire. C'est comme cela qu'on lie un contrôle d'un formulaire à un champ de la source de données du formulaire. La source d'un contrôle type zone de texte peut aussi être une expression commençant par un signe égal. Dans ce cas le contrôle est dit indépendant car il n'est pas lié à un champ de la source du formulaire. Les listes sont un peu à part car elles ont deux sources : une pour la valeur (en principe lié à un champ) et une pour les lignes de la liste. Le #Nom que tu as, vient du fait que la source d'une zone de texte est, soit un nom de champ de la source du formulaire, soit une expression commençant par égal. Comme tu affectes une instruction SQL à la source d'une zone de texte, et qu'elle ne commence par égal, Access en déduit que c'est un nom de champ. Ne trouvant de nom de champ correspondant dans la source du formulaire, Access affiche #Nom pour indiquer que le nom de champ n'est pas valide. Mets cette requette en tant que source de données de ton formulaire(sfrmAlimentFeuilleDonnee) Code :
Si tu veux que, par défaut, le formulaire n'affiche rien, tu mets un critère qui n'existe pas. Code :
A+ |
||||
|
|
00
|
|
|
#17 |
|
Invité de passage
![]() Inscription : mai 2011 Messages : 12 ![]() |
Salut,
J'ai réussi à faire le tri dans la feuille de donnée grâce à un simple filtre, suffisait d'y penser J'arrive à la fin de mon travail et je te remercie grandement pour ton aide qui m'a beaucoup servis. ++ et bonne continuation ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com