|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 13 ![]() |
Bonjour à tous,
Je bloque depus qqs heures sur un problème , et avant de casser la machine, je vais avoir besoin de vos conseils :J'ai un formulaire "Frm Principal" dans lequel j'ai un champ [FILTRE] que je souhaite utiliser comme critère de requête. Ce champ contient par exemple "comme '*10*' ou comme '*11*' ou comme '*12*'". Je n'arrive pas à récupérer la valeur de ce champ comme critère de requête. Pour ce faire, j'utiliser le code ci-dessous: Code :
La variable RECUPFILTRE() existe bien (avec les bonnes valeurs - jusque là, RAS), mais impossible de la mettre en critère... le résultat affiche 0 ligne sans message d'erreur... Merci d'avance pour votre aide ! |
||
|
|
00
|
|
|
#2 | ||
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
Bonjour fabaccess,
Une remarque : Pourquoi ne mets tu pas ton formulaire en paramètre d'entrée de ta fonction ? Tu compliques inutilement le code en utilisant une variable qui va rechercher une valeur d'un formulaire précis. Le principe d'une fonction est d'être réutilisable au moins une fois. Si tu ne le portes pas dans un module externe, autant coder sans fonction. Question: une fois que tu a récupéré le retour de ton buildcriteria, qu'en fais-tu ? Il faut ensuiter l'appliquer à ton formulaire. Voila ce que j'ai trouvé comme exemple dans l'aide en ligne Access : Code :
|
||
|
|
10
|
|
|
#3 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 13 ![]() |
Bonjour Dumas, et un grand merci pour ta réponse.
J'avais commencé à utiliser ce code mais qui ne me convient pas pour la suite des traitements. En effet, j'ai non seulement un formulaire à filtrer (ça pas de souci, je l'avais paramétré avec Frm.filter = Buildcriteria...), mais j'ai également différents requêtes et états à filtrer, d'ou l'utilisation de ce RECUPFILTRE = BuildCriteria("[critereselection]", dbText, strInput)... J'essaie donc de filtrer des requêtes avec critère = RECUPFILTRE (), mais j'ai du louper un truc Merci d'avance pour tes éventuels commentaires Cdt |
|
|
00
|
|
|
#4 |
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
Je ne comprends pas exactement ce que tu cherche à faire dans ta fonction.
Si elle te sert à récupérer uniquement le critère de ta requête, OK. Maintenant, il te suffit d'appliquer aux différents états et formulaires. Est-ce qu'au moins le filtre marche pour l'ensemble des états et formulaires visés ? Pour une requête, je suis plus partagé. L'interêt est d'utiliser les critères de sélections au moment de l'exécution de la requête. Or l'application d'un filtre ne se fait qu'après l'ouverture du recordset/snapshot issu de la requête. Il semblerait plus pertinent d'utiliser le rajouter le contenu du filtre dans une clause WHERE que tu ajouterait à la requête cible. |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 13 ![]() |
Je vais essayer d'expliquer ma problématique :
Sur un formulaire (Frm Principal), j'ai une liste d'enregistrements que l'utilisateur peut filtrer selon plusieurs critères. Ce formulaire est alimenté par une table, elle même issue par ODBC d'un ERP sous AS400. Dans ce Formulaire, j'ai un champ [critereselection] qui peut contenir une ou plusieurs valeurs : [Nom] [critreselection] |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 13 ![]() |
Je vais essayer d'expliquer ma problématique :
Sur un formulaire (Frm Principal), j'ai une liste d'enregistrements que l'utilisateur peut filtrer selon plusieurs critères. Ce formulaire est alimenté par une table, elle même issue par ODBC d'un ERP sous AS400. Dans ce Formulaire, j'ai deux champs [Nom] & [critereselection] qui peut contenir une ou plusieurs valeurs : [Nom] ; [critereselection] 1 ; 10,11,12 2 ; 10,11 3 ; 11,12 Comme tu peux le voir, le champ criteteselection n'est pas bien formaté car il peut contenir plusieurs valeurs. Hélas je ne peux pas toucher au champ issu de l'ERP... L'objectif est que l'utilisateur puisse filtrer les enregistrements (s'il demande 10, tous les enregistrements qui contiennent 10 doivent s'afficher). J'ai donc créé par DAO un champ [FILTRE] qui s'affiche dans le formulaire : 'comme "*10*"'. Si l'utilisateur demande les critères 10 et 11, le champ [FILTRE] du formulaire devient 'commme "*10*" ou comme "*11*". Jusque la tout fonctionne et j'arrive à appliquer le filtre pour l'affichage du formulaire. La ou je bloque, c'est pour les extractions (requêtes et Etats). J'ai en effet des reportings ou mailings à faire selon ce fameux champ [FILTRE]. Je suis donc passé par une fonction mais je ne parviens pas à définir correctement mon critère. J'ai également essayé : comme Forms![Frm principal]![FILTRE] mais ca ne marche pas. J'en suis donc à la fonction buildcriteria mais c'est pareil !! Merci encore pour ton aide. |
|
|
00
|
|
|
#7 | ||
|
Membre confirmé
![]() Jacques Lesueur Inscription : mai 2006 Messages : 180 ![]() |
Bonjour,
essai avec la correction apportée(en rouge) Code :
|
||
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 13 ![]() |
Bonjour et merci pour ta réponse Jack,
J'ai essayé la modif, mais ca ne marche pas : "appel de fonction illégal" Je ne comprends vraiment pas l'erreur... suis bloqué depuis 24 heures |
|
|
00
|
|
|
#9 |
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
Bonjour fabaccess,
Avant de pousser plus loin mon analyse, Pourrais-tu nous communiquer la valeur de résultat de certains de tes buidcriterias ? J'aimerais contrôler si la syntaxe est en Français ou en Anglais. |
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 13 ![]() |
Bonjour Dumas et merci pour ton aide,
exemples de valeurs récupérées : [critereselection] Like '*10*' [critereselection] Like '*20*' or [critereselection] Like '*21*' Cdt |
|
|
00
|
|
|
#11 |
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
Très bien,
Maintenant, peux tous nous communiquer les rowsources de tes formulaires ou tes états (1 qui marche + 1 ou plusieurs qui ne marchent pas) |
|
|
00
|
|
|
#12 | ||||
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 13 ![]() |
Pour exemple le formulaire suivant fonctionne (issu d'une requête 500 - datas sous frm principal):
Code :
Code :
|
||||
|
|
00
|
|
|
#13 |
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
Essaye de faire les tests suivants :
- copie le sql de ta requête sur la table [200 - détails clients avec visites et CA] (avec bien sur le contenu de ton recupfiltre() ) colle le dans l'éditeur de requête et exécute le SQL. Est-ce que la requête retourne quelque chose ? si négatif, il peut y avoir 2 possibilités : - soit la table [200 - détails clients avec visites et CA] ne contient pas le champs issu du recupfiltre(). Dans ce cas, adapte le SQL pour que ça marche - soit le récupfiltre() ne retourne rien, et là je suppose que le formulaire à l'origine de ta fonction doit être fermé, et donc le recordset associé ne pointe sur rien. Tu devrais t'en tirer en stockant le contenu du récupfiltre() dans une variable globale déclaration en public dim ou dans un module externe, et en récupérant celui-ci au moment ou tu execute le formulaire/état/requête. Tiens nous au courant. |
|
|
00
|
|
|
#14 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 13 ![]() |
Re-bonjour
Ma table [200 - détails clients avec visites et CA] contient bien le champ sur lequel je fais un filtre (recupfiltre) et le recupfiltre retourne bien une valeur ([critereselection] Like "*11*") J'ai paramétré ma variable en global mais ca ne change rien... Je continue à chercher.. et un grand merci pour ton aide |
|
|
00
|
|
|
#15 |
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
oui mais,est-ce que le sql généré, quand tu l'exécute dans la fenêtre SQL, retourne bien quelque chose ?
|
|
|
00
|
|
|
#16 | ||
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 13 ![]() |
Non, le SQL ci-dessous que je viens de copier ne retourne rien :
Code sql :
|
||
|
|
00
|
|
|
#17 |
|
Membre confirmé
![]() Jacques Lesueur Inscription : mai 2006 Messages : 180 ![]() |
|
|
|
00
|
|
|
#18 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 13 ![]() |
oui Jack, frm est bien ouvert !
|
|
|
00
|
|
|
#19 | |||
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
Citation:
Je me répète peut-être, mais remplace la syntaxe RECUPFILTRE() par le résutlat de ton RECUPFILTRE() soit : Code :
Code :
WHERE ((([200 - détails clients avec visites et CA].critereselection)="([critereselection] Like "*11*")" |
|||
|
|
10
|
|
|
#20 | ||
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 13 ![]() |
Je sens une piste ...
pour la première question : ca marche : Code sql :
pour la deuxième question : en effet, je retrouve ton code et je sens que l'erreur est ici...mais n'arrive pas à la résoudre Enfin pour le dernier point, je n'ai pas l'habitude du debug.print (honte à moi) Merci (vraiment) pour votre aide !
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com