|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Pierre-Alexandre LessardAssistant aux utilisateurs Inscription : septembre 2011 Messages : 25 ![]() |
Bonjour,
Je rencontre un problème au moment d'effectuer une requête à partir de champ qui permettre plus d'une valeur. Exemple: champ 1 = banque, champ 2 : montant du prêt. Prenons exemple qu'une personne X ait contracté 3 prêts à partir de 3 banques différentes. (Banque Nationale, Laurentienne , BMO). Si j'effectue une requête demandant de me trouver tous les prêts accordés par la banque Nationale de cette personne X, je ne suis pas capable d'obetnir les résultats de la requête. J'ai créer cette requête à partir d'un formulaire relié à cette requête. Donc le code ressemble à quelque chose comme suit. Code :
[Formulaires]![Table1]![Banques]. Table 1 = Merci de votre aide précieuse |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Fabrice CONSTANSIngénieur développement logiciels Inscription : avril 2005 Messages : 7 089 ![]() |
Bonjour,
Cette syntaxe n'est pas claire. Merci de poster la chaine SQL (avec les balises de code cette fois). 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 | ||||
|
Invité de passage
![]() Pierre-Alexandre LessardAssistant aux utilisateurs Inscription : septembre 2011 Messages : 25 ![]() |
Bonjour, d’abord j’utilise Acess 2007. J'aimerais être capable de créer une requête à partir d'une table contenant des champs qui autorisent plus d'une valeur. Exemple, dans ma table appelé "transaction" je détiens les champs "banque" et "segment". Le champs banque est organisée de façon à permettre le choix de cocher plus d'une valeur, alors il serait possible de cocher pour l’enregistrement 1, dans le champ "banque" les banques suivantes : RBC, BMO et Laurentienne. Pour ce qui est du champs segment, ce dernier permet également plus d'une valeur, donc il est possible de coher à la fois les coches suivantes:
-infrastructure -financier Pour imager le tout, voyons à quoi ressemble mon unique table transaction, une fois je l’ai peuplé, j'ai simplifié ma BDR de façon à faciliter le tout. Code :
J'aimerais être capable d'effectuer la requête suivante. Combien de banque "RBC" se retrouve dans le segment "financier", puis faire afficher la requête. Dans mon exemple il y en a 2 sois les lignes 2 et 3. Mon problème provient du fait que je permet plusieurs valeurs par enregistrement dans les champs "banque" et "segment". Si je ne permets pas cette option, tout fonctionne. Évidemment, je veux lancer la requête à partir d'un formulaire. J'ai procédé en créant d'abord une reuqête générale sois, en glissant les champs de la table transaction qui m'intéresse, soit, "" et "". Le code ressemble à cela et me permet d'afficher tous les résultats de la table transaction sans aucun critère à respecter: Code :
Code :
[Formulaire]![Formulaire]![tansaction.banque.Value] Code :
[Formulaire]![Formulaire]![tansaction.segment.Value] est celui qui se retrouve dans le formulaire appelé "formulaire" et le champ [tansaction.segment.Value] est celui situé dans le formulaire qui réfère au segemnt financier dans notre exmple.. En d'autres mots, je précisais d’aller chercher la valeur du champ [tansaction.banque.Value] situé dans le formulaire et la valeur du champ [transaction.segment.Value] situé également dans le formulaire et d’effectuer une requête dans la table transaction dans les champs respectifs banque. value (RBC) et segment.value(financier), pour obtenir le nom d’enregistrements qui associe la banque RBC et le segment financier. J'espère que ma demande est claire. Pour résumer , je veux être capable de créer une reuqête à partir d'un formulaire , mais dans un contexte où mes champs permettent plus d'une valeur. J’aimerais que vous m’aidiez pour le code, parce que j’ai fait plusieurs recherches infructueuses En second lieu, j'aimerais également qu'on me montre comment créer une reuquête identique, mais exemple: combien de banque RBC ET BMO(donc 2 banques) se retrouve dans le segment financier. Donc 2 banque dans ma requête plutôt qu'une. Donc comment coder le "et" qui se retoruve dans le moteur de requête de base. Par ailleurs, supposons que mon formulaire "formulaire" contienne 10 champs, mais que je veux uniquement faire une requête à partir des 2 champs de mon exmple, comment dois-je procéder pour la requête prenne en compte les 10 champs, mais selon les critères des 2 champs énuméré dans mon message. Exemple, si j'ai loes champs date, région, pays etc...je ne veux pas trier selon ces champs, mais je veux qu'ils apparaisent dans ma requête selon les critères RBC(comme dans mon exmple) et financier(mon exmple) Merci beaucoup, j'essaie de coder cette action depuis un bon moment, mais je suis vraiment débutant alors, j'attends de vos nouvelles. P-A |
||||
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Fabrice CONSTANSIngénieur développement logiciels Inscription : avril 2005 Messages : 7 089 ![]() |
Bonjour,
Tout d'abord rassure-moi ou ôte-moi d'un doute : Tes champs ne s'appelle pas réellement transaction.segment.Value ?!! Si c'est le cas je te conseille de consulter au plus vite la liste des mots réservés dans l'aide. Avant d'aller plus loin et d'aller au devant de très gros problèmes. 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
|
|
|
#5 |
|
Invité de passage
![]() Pierre-Alexandre LessardAssistant aux utilisateurs Inscription : septembre 2011 Messages : 25 ![]() |
D'accord, disons que mon champ se nomme nom_banque, plutôt que (transaction.banque.value). Pouvez-vous m'aider pour le reste??
|
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Pierre-Alexandre LessardAssistant aux utilisateurs Inscription : septembre 2011 Messages : 25 ![]() |
Désolé , et que l'autre champ se nomme segment plutôt que transaction.segment.Value...
|
|
|
00
|
|
|
#7 | ||||||
![]() ![]() ![]() Fabrice CONSTANSIngénieur développement logiciels Inscription : avril 2005 Messages : 7 089 ![]() |
Ok je préfere ce type de nom.
Tout d'abord le SQL ne comprend pas le VBA. Donc la syntaxe VBA ne sera pas comprise par SQL. Code :
[Formulaire]![Formulaire]![tansaction.banque.Value] Code :
Pour SQL il faut utiliser Code :
Pour finir ta requete doit resembler à ceci Code :
Dans ton cas, un peu spécifique, de plusieurs valeurs regarde mon tuto sur l'opérateur IN c'est exactement ce que tu recherches et il est très facile à mettre en oeuvre. N'hésite pas à revenir sur ce fil pour m'indiquer tes incompréhensions, difficultés ou ta réussite. 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
|
|
|
#8 |
|
Invité de passage
![]() Pierre-Alexandre LessardAssistant aux utilisateurs Inscription : septembre 2011 Messages : 25 ![]() |
Bonjour, j'ai tenté de faire ce que vous me dites. Cela fait plusieurs heures que je passe sur cette action mais sans avancement convaincant. En fait j'ai mis en pièce jointe un fichier très simplifier contenant une requête un table et un formulaire. Je veux seulement , à partir de mon formulaire, sélectionner la banque et le segment, puis obtenir le résultat de ma requête. Je rencontre les problèmes suivants:
1-Une fenête blanche apparaît dans mon écran pour me demander d'écrire du texte, mais je veux sélectionner ma "banque" et segment à partir du formulaire et non dans cette case blanche la qui pop dans mon écran. 2-Vue que mes enregistrement permettent plus d'une valeur, au moment d'obtenir le résultat d'une requête j'obtiens les enregistrements correspondants à ma requête , mais comprenant les données associé au champs en questions. Exemple, si lors d'un enregistrements je coche RBC et BMO dans le même enregistrements, mais que je fais une recherche à partir de RBC, je vais quand même obtenir dans ma requête un enregistrement qui contient bien sûr RBC, mais plutôt RBC;BMO. 3-J'ai lu le document qui parlait de la form, IN, mais je en comprends pas vraiment. Je ne suis vraiment pas un codeur d'expérience, je dois uniquement faire cette petite BDR. Je suis conscient qu'il est utile de savoir comment programmer un peu, mais j'ai besoin de savoir comment exécuter ce code très rapidement, mais je suis embrouillé. Je sais que cela n'est pas de votre faute, mais sérieux pouvez-vous m'aider SVP. Merci |
|
|
00
|
|
|
#9 |
|
Expert Confirmé
![]() Diem VOVivre Inscription : avril 2006 Messages : 2 644 ![]() |
salut loufab et bloomberg99
ci-joint un exemple de résultat. ps: il serait bon que tu prennes à la lettre les recommandations de loufab sur le nommage. remarque, non, continu à nommer tes formulaires 'formulaire' et utiliser des noms réservés... c'est original et puis ce serait trop simple si ça marchait du premier coup... |
|
|
00
|
|
|
#10 |
![]() ![]() ![]() Fabrice CONSTANSIngénieur développement logiciels Inscription : avril 2005 Messages : 7 089 ![]() |
C'est Formulaires et non formulaire, c'est un mot réservé qui désigne la pile des formulaires chargés.
__________________
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
|
|
|
#11 |
![]() ![]() ![]() Fabrice CONSTANSIngénieur développement logiciels Inscription : avril 2005 Messages : 7 089 ![]() |
@Bloomberg : Je reviens sur la base que tu as posté.
Inutile de mettre la table en tant que source du formulaire. Cela ne sert à rien sauf à te présenter un type de liste trompeuse (avec case à cocher). Si tu veux de la multiselection tu dois utiliser une zone de liste et non une zone de liste déroulante. A moins de monter une petite usine à sélection avec une table temporaire pour ton choix, insérer les séparateurs pour générer une syntaxe IN valide... Bref ! beaucoup de boulot qui est au delà du niveau Macro. Commence par réaliser le petit exercice du tuto. Si tu le suis pas à pas en 1 heure tu auras une première liste fonctionnelle. Compte 1 heure de plus pour l'adapter à la solution à 2 listes comme tu le souhaites. La multiselection est à ce prix.
__________________
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 |
|
Invité de passage
![]() Pierre-Alexandre LessardAssistant aux utilisateurs Inscription : septembre 2011 Messages : 25 ![]() |
@loufab
J'ai fait le tuto, je crois pas-à-pas, pour être certain de tout faire de la bonne manière, mais lorsque j'appuie sur la commande, une fenêtre s'ouvre en me demandant la valeur du paramêtre de la sélection que je viens de faire.. Je ne comprends pas où ai-je pu faire une erreur. Merci |
|
|
00
|
|
|
#13 |
![]() ![]() ![]() Fabrice CONSTANSIngénieur développement logiciels Inscription : avril 2005 Messages : 7 089 ![]() |
peux-tu poster la base que je regarde ?
__________________
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 |
|
Invité de passage
![]() Pierre-Alexandre LessardAssistant aux utilisateurs Inscription : septembre 2011 Messages : 25 ![]() |
Parfait, j'ai réussi le tuto.
Par contre, lorsque je m'attaque à mon problème, je n'arrive pas à mettre les 2 critères dans le code afin de filtrer les données sur ces 2 critères. Peu importe mes essais, le filtre se fait que sur le critère "segments" vs "segments" et "banques". De plus, puisque pour peupler le champ banque on utilise un menu déroulant pouvant cocher plusieurs valeurs, je crois que cela peut amener plus de problèmes et je ne sais pas du tout comment le contourner. J'en suis ici pour l'instant et je continue mes essais et si vous avez des idées, n'hésitez pas à les ajouter! Merci. |
|
|
00
|
|
|
#15 |
![]() ![]() ![]() Fabrice CONSTANSIngénieur développement logiciels Inscription : avril 2005 Messages : 7 089 ![]() |
Comme je te l'ai dit dans l'un de post précédent il ne faut pas utiliser de liste déroulante pour de la multiselection. Il te faut utiliser une zone de liste comme dans le tuto.
Pour la concaténation des 2 conditions (segment et banque) tu dois le faire séquentiellement avec un AND de liaison. Donc juste après la création du premier IN. Cela doit déboucher sur quelque chose comme ceci. Code :
Segment IN('xxxx','yyyyy') AND banque IN ('zzzz','wwww')
__________________
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
|
|
|
#16 |
|
Invité de passage
![]() Pierre-Alexandre LessardAssistant aux utilisateurs Inscription : septembre 2011 Messages : 25 ![]() |
J'utilise des zones listes dans le formulaire de requête.
Par contre, j'ai un autre formulaire lié à la table de base pour peupler celle-ci. Ce formulaire a des liste déroulante multivaleur, pour peupler la base et que certains champs puissent contenir plus d'une valeur. Ces champs furent créés dans dans la table de base à l'aide de l'assistant liste où l'on peut choisir d'y avoir plus d'une valeur.. Je retourne à ma base de données! |
|
|
00
|
|
|
#17 |
|
Invité de passage
![]() Pierre-Alexandre LessardAssistant aux utilisateurs Inscription : septembre 2011 Messages : 25 ![]() |
Je crois que le plus simple est que tu puisses observer la base de données.
Donc, la voici avec mon début de codage. Je dois accomplir cette tâche dans de brefs délais et je ne vois pas la fin. Merci! |
|
|
00
|
|
|
#18 |
|
Expert Confirmé
![]() Diem VOVivre Inscription : avril 2006 Messages : 2 644 ![]() |
il faut que tu remplaces Banque par Banques.Value dans:
Code :
DoCmd.OpenReport "Test", acViewPreview, , "Segments IN (" & lstval & ") And Banques.Value IN (" & lstval1 & ")" ' imprime la sélection
Code SQL :
SELECT Transactions.Segments, Transactions.Banques.Value FROM Transactions; |
|
|
00
|
|
|
#19 |
|
Invité de passage
![]() Pierre-Alexandre LessardAssistant aux utilisateurs Inscription : septembre 2011 Messages : 25 ![]() |
Merci beaucoup Vodiem, cela fonctionne.
J'aurais besoin de rafiner davantage le modèle. Ma table transactions contient certains champs auxquels je ne veux pas appliquer de critères de recherche. Cependant, j'aimerais que ces derniers apparaissent quand même au moment de créer une requête. Exemple : Si j'applique une requête par rapport aux champs segments et banque, j'aimerais que tous les autres champs de ma tables transactions apparaissent. Par ailleurs, j'aimerais également ne pas avoir besoin de cocher tous les éléments de la liste d'un champ pour indiquer à ma requête, que je veux prendre en compte tous les éléments de ma liste. J'aimerais plutôt ne pas en cocher aucun ce qui ne limite le champ à aucun critère. De plus, j'aimerais savoir comment obtenir le résultat de ma requête dans une table plutôt qu'un état. Merci beaucoup de votre aide |
|
|
00
|
|
|
#20 |
|
Invité de passage
![]() Pierre-Alexandre LessardAssistant aux utilisateurs Inscription : septembre 2011 Messages : 25 ![]() |
J'ai une addition à faire.
J'aimerais aussi, que le choix dans une première liste, ex:segments, affecte les choix d'une deuxième liste, comme un genre de filtre. Parce que, par exemple, ce ne sont pas les mêmes acheteurs pour les deux segments, alors le choix du segment devrait filtrer la liste Acheteurs pour qu'il n'y reste que les acheteurs du bon segment. De plus, j'ai avancé le code, et je crois que grâce à votre aide, j'approche du but! Merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com