|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Étudiant Inscription : juillet 2011 Messages : 25 ![]() |
Bonsoir à tous,
J'ai un état, appellons-le MonEtat. A l'ouverture de l'état, je fais ma requete en sql dans le code vba, avec SELECT... FROM... WHERE... ORDER BY Le problème c'est que mon critère passé dans le WHERE ne semble pas être pris en compte. En effet, en mode déboggage, tout va bien, si je mets le résultat SQL dans une requete, il me sort bien tous les enregistrements que j'ai sélectionné. En revanche, lorsque je laisse mon code s'exécuter je récupère dans mon etat tous les enregistrements (et non pas que ceux sélectionnés), ce qui me m'intéresse pas. J'ai lu une réponse sur le forum où vous conseillez de passer par un Critère et de le rappeler dans l'instruction d'ouverture lors du Do.CommandRun. Mais dans mon cas, j'ai deux critères dans le WHERE, je ne vois donc pas comment je peux mettre ça en oeuvre. Avez-vous une idée ? Merci pour votre aide |
|
|
00
|
|
|
#2 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 470 ![]() |
Si la partie Select de ton SQL est toujours la même une solution très simple est la suivante : Ne pas mettre de condition Where dans ton SQL la mettre dans l'appel de l'état.
Ex : Code sql :
SELECT [taTable].* FROM [taTable] WHERE [tonChamp1]="ABC" AND [tonChamp2]="DEF"; Code sql :
SELECT [taTable].* FROM [taTable]; et Code :
docmd.OpenReport "NomTonEtat",,,"[tonChamp1]=""ABC"" and [tonChamp2]=""DEF""" A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
20
|
|
|
#3 |
|
Invité de passage
![]() Étudiant Inscription : juillet 2011 Messages : 25 ![]() |
Merci beaucoup, j'essaye ça et je vous tiens au courant.
++ |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Étudiant Inscription : juillet 2011 Messages : 25 ![]() |
Bonjour,
J'ai essayé le code suivant : Code :
DoCmd.OpenReport MonEtat, acViewReport, , , , "MaTable.[MonChamp1]= " & Chr(34) & Forms!MonFormulaire.OpenArgs & Chr(34) & " And MaTable.[MonChamp2] = " & MonParametre & "" Est-ce normal ? Si je ne lui spécifie pas le nom de la table avec le champ, il est perdu, à cause des relations (plusieurs champs avec le même nom dans des tables différentes). Merci Bonne journée |
|
|
00
|
|
|
#5 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 470 ![]() |
Tu prends les paramêtres passés à ton formulaire qui appèle l'état ?
Habituellement c'est un champ du formulaire, quelque chose comme : A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Étudiant Inscription : juillet 2011 Messages : 25 ![]() |
Oui je veux dans mon état les enregistrements qui ont été triés dans mon formulaire et uniquement ceux là. C'est pour ça que j'avais gardé le Form!MonFormulaire.OpenArgs (c'était comme ça que j'avais construit mon critère dans la requete de mon formulaire, qui lui tourne bien)
J'ai essayé de passer la valeur qui est conservée dans mon OpenArgs, dans une variable ensuite de mettre en critere cette valeur. Cela ne semble pas concluant. Lorsque je fais appel directement aux champs du formulaire, il semble ne pas savoir de quoi je parle. La syntaxe suivante est-elle correcte ? Code :
DoCmd.OpenReport MonEtat, acViewReport, , , , "Forms![MonFormulaire].[MonChamp1]= " & MonParametre1 & " And Forms![MonFormulaire].[MonChamp2] = " & MonParametre2 & "" A bientôt |
|
|
00
|
|
|
#7 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 470 ![]() |
Peux-tu poster le contenu de OpenArgs ?
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Étudiant Inscription : juillet 2011 Messages : 25 ![]() |
Bonjour,
Alors je rempli mon OpenArgs, à l'ouverture (dans le _load) de mon premier formulaire, avant celui qui me sert à générer mon état lors de la requête SQL. Mon OpenArgs contient un numéro, qui me sert pour trier tous mes enregistrement. Voici en gros la hierarchie : Formulaire1 avec Bouton1 Clic sur Bouton1 => Ouverture Formulaire2 (que l'on peut modifier) avec Bouton2 Clic sur Bouton2 => Ouverture Etat (pour que je puisse faire un pdf avec les documents voulus) L'OpenArgs est défini lors de l'ouverture de Formulaire1 et je veux que ce soit le même qui est conservé lors du passage d'un formulaire l'autre. J'ai réussi à filtrer mon Etat, avec l'instruction Me.Filter. 1) dans le _load de l'Etat, je défini MonFiltre, avec 2 paramètres et j'ai enlevé les paramètres dans le WHERE de ma requete SQL 2) lors du clic sur un bouton pour ouvrir mon formulaire, je mets en argumets mon filtre Code :
DoCmd.OpenReport MonEtat, acViewReport, , , , MonFiltre
Pour l'instant, je n'ai pas mieux. A bientôt |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com