|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() ingénieur essais électronique Inscription : mai 2011 Messages : 128 ![]() |
Bonjour,
Je possède un formulaire avec 1 liste déroulante (contenant des références) et une listebox. Je veux intégrer des données manuellement avec al souris de la liste déroulante vers la listebox. Ca j'y arrive avec additem ou removeitem pour en enlever. Ce que je veux faire et ou je galère. Avec un bouton OK, je veux ouvrir un état. Cet état fait appel à une requete qui as en paramètre les valeurs de la liste (plusieurs valeurs de reference). Pour le moment j'arrive à faire appel à ma requete avec la valeur de la liste deroulante (1 seul valeur de reference) Merci |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Fabrice CONSTANSIngénieur développement logiciels Inscription : avril 2005 Messages : 7 085 ![]() |
Bonjour,
Accéder à plusieurs valeurs de la même ligne. où x represente l'indice de la colonne en partant de 0. Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste MsGraph et VBA - 1e Partie 2e partie Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010 Complément :Générateur de msgbox Visitez mon Blog Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine |
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() ingénieur essais électronique Inscription : mai 2011 Messages : 128 ![]() |
Je vais essayer d'être plus clair :
Dans la liste modifiable par référence, j'ai une liste d'élément. A l'heure actuel, je sélectionne un élément dans ma liste modifiable.En cliquant sur le bouton OK, j'éxécute un Docmd.report qui fait appel à une requete avec comme paramètre le champs modifiable de mon formulaire et affiche l'état. Ceci fonctionne. Mon évolution que je souhaiterais : En sélectionnant mon élément dans la liste modifiable, je voudrais en appuyant sur le bouton commande10 l'ajouter à la suite de ma listbox (tout à droite). Ceci fonctionne. Ensuite en cliquant sur le bouton OK, je voudrais toujours ouvrir mon état (qui fait appel à une requete parameétré) mais cette fois ci pas avec l'élément de la liste modifiable mais les éléments de ma listbox. Je n'arrive pas à dire à ma requete de prendre les x éléments de la list box comme paramètre (du même champ de ma requete). Merci |
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Fabrice CONSTANSIngénieur développement logiciels Inscription : avril 2005 Messages : 7 085 ![]() |
Dans la requete tu dois utiliser l'opérateur IN(liste d'items).
Coté formulaire il faut parcourir la listbox et créer une chaine pour la transmettre à la requete. Dans la faq tu as ce genre de code.
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste MsGraph et VBA - 1e Partie 2e partie Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010 Complément :Générateur de msgbox Visitez mon Blog Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine |
|
00
|
|
|
#5 | ||
|
Nouveau Membre du Club
![]() ingénieur essais électronique Inscription : mai 2011 Messages : 128 ![]() |
Bonjour,
J'arrive a récupérer ceci mai je n'arrive pas à mettre la valeur dans la requete : Code :
Comment utiliser la valeur d'une variable vba dans une requête Access ? (cette requete existe deja puis est utilise dans un état). C'est l'état qui m'intéresse. Le probleme c'est qu'il renvoie a cette page : http://access.developpez.com/faq/?pa...DATA#VarGlobal et je ne touve plus rien. |
||
|
|
00
|
|
|
#6 | ||||
![]() ![]() ![]() Fabrice CONSTANSIngénieur développement logiciels Inscription : avril 2005 Messages : 7 085 ![]() |
Bonjour,
Avant de se lancer dans le code il faut analyser comment le IN() fonctionne. Il va donc falloir fournir l'expression [valeur1,valeur2]. Si Champ est numérique il n'y a pas de séparateur. Code :
Code :
Code :
DoCmd.OpenReport "Table1", acViewPreview, , "Table1.N° In (" & NumInItem(Me.Liste0) & ")" Val en nom de variable c'est la chose à ne pas faire. Val est un mot réservé. Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste MsGraph et VBA - 1e Partie 2e partie Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010 Complément :Générateur de msgbox Visitez mon Blog Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine |
||||
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() ingénieur essais électronique Inscription : mai 2011 Messages : 128 ![]() |
Bon j'ai réussi a adapter mais j'ai une question :
Voici la ligne de code (la function est identique a celle en string que tu m'as fourni qui concatenne les différente valeur de liste). Je récupère bien les data sous forme 'data1','data2','data3': Code :
DoCmd.OpenReport "TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 tous", acViewPreview, , "[Graphe Evolution tous].Référence In (" & StrInItem(Me.Liste9) & ")" "TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 tous" est mon état [Graphe Evolution tous] est ma requete ou existe mon champs reference liste9 est ma zone de liste Dans ton exemple : Code :
DoCmd.OpenReport "Table1", acViewPreview, , "Table1.N° In (" & NumInItem(Me.Liste0) & ")" Le deuxième Table1 est l'état ou la requete ? Dans mon cas, si c'est l'état, il me demande lors de l'appui sur le bouton de renseigné le champs. Si c'est la requete (ou même la table) il ne m'affiche rien comme si rien ne correspondait à ma référence. |
|
|
00
|
|
|
#8 |
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
Bonjour Sylv20,
Que cherches-tu à obtenir dans ta requête ? Je vais essayer de te donner un exemple : Si tu utilise la requête IN que t'a communiqué Loufab, le résultat de Code :
where [Graphe Evolution tous].Référence IN (data1, data2, data3) Si tu souhaite ouvrir un état, il suffit de mettre cette requête en recordsource de cet état. A toi maintenant de savoir comment tu veux trier tes données si tu veut faire des ruptures, regroupements, ou autres traitements
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!si tout est OK, n'oubliez pas de cliquer sur
|
|
|
00
|
|
|
#9 |
|
Nouveau Membre du Club
![]() ingénieur essais électronique Inscription : mai 2011 Messages : 128 ![]() |
Et bien je veux executer un état (basé sur une requete) avec comme parametre les x éléments d'une zone de liste.
J'ai essayer de remplacer la variable entre paraenthse (" & StrInItem(Me.Liste9) & ") par une valeur connue entre cote (référence '4306592F1') . et ca marche. Il faut que je vérifie la ponctuation et que je réessaye. Cela DOIT MARCHER !!!!! |
|
|
00
|
|
|
#10 | ||
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
Alors je te propose la solution suivante :
- Tu constitues la requête de manière dynamique, tel que te l'a expliqué Loufab - tu stockes cette variable dans une variable de type string - tu mets cette variable en recordsource de ton état - tu ouvres ton état Je l'ai fait de nombreuses fois, et ça marche très bien Voici un squelette de code sur lequel tu pourras t'appuyer (extrait de proc, donc à compléter ) : Code :
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!si tout est OK, n'oubliez pas de cliquer sur
|
||
|
|
00
|
|
|
#11 |
![]() ![]() ![]() Fabrice CONSTANSIngénieur développement logiciels Inscription : avril 2005 Messages : 7 085 ![]() |
Peut-on voir le résultat de l'expression ?
Code :
"[Graphe Evolution tous].Référence In (" & StrInItem(Me.Liste9) & ")"
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste MsGraph et VBA - 1e Partie 2e partie Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010 Complément :Générateur de msgbox Visitez mon Blog Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine |
|
00
|
|
|
#12 | ||
|
Nouveau Membre du Club
![]() ingénieur essais électronique Inscription : mai 2011 Messages : 128 ![]() |
Tout d'abord : MERCI.
Ca fonctionne !!!!! En fait j'ai mis l'expression StrInItem(Me.Liste9) dans une variable string. Code :
liste_reference = StrInItem_reference(Me.Liste9) Code :
DoCmd.OpenReport "TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 tous", acViewPreview, , "[Graphe Evolution tous].Référence In (" & liste_reference & ")" Maintenant, ca se corse encore : une référence est monté, on dit que c'est la première monte de cette reference. il peut y avoir jusqu'a 10 montes grand max. Ma zone de liste contient maintenant deux colonnes (référence, n° monte). l'ajout à la zone de liste (2 colonnes se fait comme ceci) : lors de l'appui sur ajouter Code :
puis j'écrit ceci Code :
DoCmd.OpenReport "TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 tous", acViewPreview, , "[Graphe Evolution tous].Référence In (" & liste_reference & ")" And "[Graphe Evolution tous].[N° monte] In (" & liste_monte & ")" Tout ca pour avoir le nombre d'heure réalisée avec cette référence en monte 1 (sur x produit), le nombre d'heure réalisé avec cette même référence en monte 3 (sur x produit) puis 301422X1 en monte 1 sur x produit (enfin bref tout ce que l'utilisateur choisi dans la liste des deux colonnes). En gros c'est comme si je créais un tableau, que pour chaque référence et en telle monte choisi par l'utilisateur la requete me donne le nombre d'heure. |
||
|
|
00
|
|
|
#13 |
![]() ![]() ![]() Fabrice CONSTANSIngénieur développement logiciels Inscription : avril 2005 Messages : 7 085 ![]() |
Quand j'ai des erreurs de ce type j'applique la solution décrite dans le Tuto Debogage des requetes sous VBA disponible dans la rubrique Tutoriels.
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste MsGraph et VBA - 1e Partie 2e partie Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010 Complément :Générateur de msgbox Visitez mon Blog Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine |
|
00
|
|
|
#14 |
|
Nouveau Membre du Club
![]() ingénieur essais électronique Inscription : mai 2011 Messages : 128 ![]() |
Je necomprend pas ce tuto.
Je met debug.print puis j'ouvre la fenetre mais somment y faire afficher quelque chose ? |
|
|
00
|
|
|
#15 |
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
regarde bien l'aide access a ce sujet
tu inscrit debug.print <nom_de_ma_variable> et tu la visualise dans la fenêtre d'exécution en tapant CTRL+G
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!si tout est OK, n'oubliez pas de cliquer sur
|
|
|
00
|
|
|
#16 |
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
autre possibilité :
mettre un point d'arrêt puis exécuter la procédure lorsque le point d'arrêt est atteint, ouvrir la fenêtre exécution et taper debug.print <nom_de_ma_variable> puis entrée
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!si tout est OK, n'oubliez pas de cliquer sur
|
|
|
00
|
|
|
#17 |
![]() ![]() ![]() Fabrice CONSTANSIngénieur développement logiciels Inscription : avril 2005 Messages : 7 085 ![]() |
Bonjour,
C'est un tuto simple et totalement incontournable. Le chapitre III du tuto est exactement ce dont tu as besoin qui est la même chose que ce que commente Jean-yves. Si tu le suis pas-à-pas, en positionnant le debug.print suivant ton cas, tu arriveras au même résultat : voir ce que génère ton code. Tu passe au chapitre V pour faire le test. Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste MsGraph et VBA - 1e Partie 2e partie Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010 Complément :Générateur de msgbox Visitez mon Blog Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine |
|
00
|
|
|
#18 |
|
Nouveau Membre du Club
![]() ingénieur essais électronique Inscription : mai 2011 Messages : 128 ![]() |
J'ai mis un point d'arrêt sur ma ligne pour voir mes variables. :
Code :
DoCmd.OpenReport "TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 tous", acViewPreview, , "[Graphe Evolution tous].Référence In (" & liste_reference & ")" And "[Graphe Evolution tous].[N° monte] In (" & liste_monte & ")" liste_reference = '4306592F1' string liste_monte='1' string Tout est bon. Pourtant après je refais lecture puis erreur incompatibilité type. Ca ne me donen rien. pourtant les deux liste sont string, les liens vers les tables sont string aussi. Ou peut être l'incompatibilité ? |
|
|
00
|
|
|
#19 | ||
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
As tu exécuté la requete simulant ton openreport ?
exécute Code :
SELECT * from <nom de la table rowsource de ton report> WHERE [Graphe Evolution tous].Référence In (<contenu de liste_reference> ) And [Graphe Evolution tous].[N° monte] In (<contenu de liste_monte> ) Tu peut aussi la mettre dans ton expression docmd.openreport ex : Code :
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!si tout est OK, n'oubliez pas de cliquer sur
|
||
|
|
00
|
|
|
#20 | ||
|
Nouveau Membre du Club
![]() ingénieur essais électronique Inscription : mai 2011 Messages : 128 ![]() |
Bon changement de programme, le sql ca me gave!!!!!
De plus, la méthode actuelle n'est peut être pas la bonne car : si je veux : '4306592F1' en monte 1 '3014221X1' en monte 2 J'aurait deux listes : liste reference : '4306592F1','301422X1' liste monte : '1','2' Je pense que la méthode (avec les IN dans chaque colonne) me sortira a la fois '4306592' en monte 1 et 2 et '3014221X1 en monte 1 et 2 également Alors que ce n'est pas ce que je veux. Pouvez vous me confirmer ce que je pense ? Du coup, est ce qu'il n'y a pas moyen de faire la même chose avec un tableau. Je m'explique : Stocké les valeurs (références et monte) de liste dans un tableau (à deux colonnes) et y faire appel dans mon openreport. Voir même peut être sans tableau, en appelant directement la bonne cellule de liste (via Liste9.Column(0, ligne) par exemple). Voila ce que j'ai déjà fait. Code :
J'ai un problème de ponctuation au moment de l'utilisation de la variable. Croyez vous que l'on puisse faire comme cela et que ca marchera? Peux t on ouvrir 10 fois(par exemple) le même état (sur des pages séparé bien sure) ? |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com