|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Thomas Stagiaire SIG Inscription : avril 2011 Messages : 8 ![]() |
Bonjour à tous,
Voila je suis actuellement en train de travailler sur un formulaire pour extraire des données INSEE. Pour cela, l'utilisateur choisi les données qu'il souhaite visualiser (dans une listbox, qui contient des requêtes) et l'entité géographique sur laquelle portent ces données (checkbox, permet d'ajouter une condition Where qui s'ajoute à la requête). Ensuite, on clique sur le bouton "Visualiser la requête". Tout se déroule bien et une fenêtre contenant le résultat de la requête. Ensuite l'utilisateur doit pouvoir exporter ces résultat vers Excel (une msgbox vbYesNo apparait en même temps que la fenêtre des résultats de la requête). Tout le code fonctionne mais pour des raisons d'optimisation je souhaite que lorsque l'utilisateur ferme la fenêtre requête (en cliquant sur la croix en haut à droite), la msgbox vbYesNo demandant s'il veut exporter apparaisse. Or je ne sais pas comment faire pour que la Msgbox se déclenche à ce moment précis... (j'ai cherché Close, BeforeClose ect mais rien ne marche....) Merci d'avance, Thomas Voici le code permettant la requête et son affichage (la MsgBox vbYesNo se déclenche à l'ouverture de la requête) : Code :
PS : comment insérer le code dans notre post? |
||
|
|
00
|
|
|
#2 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 462 ![]() |
Ce que tu pourrais faire, si ta requête affiche toujours les mêmes champs, c'est ouvrir un formulaire en mode feuille de données qui affichera ta requête. Ainsi tu bénéficiera des événements associés au formulaire.
Sinon, il va sans doute falloir voir avec les API de windows et détecter la fenêtre qui contient ta requête. Si cette fenêtre disparait, la requête a été fermée. 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
|
|
|
#3 |
|
Invité de passage
![]() Thomas Stagiaire SIG Inscription : avril 2011 Messages : 8 ![]() |
Merci pour ta réponse rapide, mais malheureusement les champs que la requête contient sont différents. En fait, j'ai plusieurs table qui contiennent les données (une pour les CSP, une pour le chômage...) et une autre table où l'utilisateur renseigne la "base" de la requête (Select * from table_choisie"). L'utilisateur choisi cette base dans une liste déroulante. Ensuite il faut une clause where pour séléctionner l'espace. Ce choix se fait au moyen de checkBox (si chk de la région est coché, alors la clause where est Where champtable_choisie = n°_region). En appuyant sur Visualiser la requête, les 2 parties sont concaténées et permettent d'afficher la requête (différente à chaque fois du coup).
Sauf que chaque table a des champs différents :s. Je vais quand même tester la méthode du formulaire Merci encore |
|
|
00
|
|
|
#4 | ||
|
Invité de passage
![]() Thomas Stagiaire SIG Inscription : avril 2011 Messages : 8 ![]() |
Je suis en train de tester la solution apportée par marot_r mais je rencontre un petit problème.
En effet, j'ai créé mon formulaire de données (F_REQUETE) qui doit accueillir le résultat des différentes requêtes. Cependant, la requête n'est pas pré-existante, du coup je ne sais comment remplir mon formulaire via le résultat de la requête. Code :
J'essaie avec le DoCmd.OpenForm d'ouvrir le formulaire (après avoir créé la requête donc), celui-ci s'ouvre mais reste vide. J'ai tenté de mettre w_sql ou w_nomRq en Wherecondition de Openform mais toujours vide. Si quelqu'un à la solution pour remplir le formulaire en fonction de la requête créée juste avant Merci d'avance |
||
|
|
00
|
|
|
#5 | ||
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 462 ![]() |
Si ta source de données est dynamique, il faut définir la propriété 'RecordSource' du formulaire à l'ouverture de celui-ci.
Tu peux utiliser le paramêtre OpenArg à la fin du DoCmd pour passer le nom au formulaire. cela devient : Code :
__________________
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
![]() Thomas Stagiaire SIG Inscription : avril 2011 Messages : 8 ![]() |
Encore une fois merci ^^
Je vais tester ca de suite (j'etais sur une autre mission). Par contre, je ne connais pas le parametre Openargs et j'ai fait quelque recherches mais rien de bien convaincant. Tu pourrais m'explique le petit bout de code que tu as mis? (If not...) Et je dois placer ca sur l'evenement ouverture du formulaire de données (accueil des requetes?) A+ |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Thomas Stagiaire SIG Inscription : avril 2011 Messages : 8 ![]() |
Je viens de tester. Alors effectivement le formulaire s'ouvre, il prend en compte le contenu de la requête MAIS (pourquoi il y a toujours un mais???) Les champs restent vides...
![]() Comment faire pour visualiser la requête? Et aussi, lorsque je met w_nomRQ (nom de ma requête) dans le formulaire de données, il ne la reconnais pas (je dirais presque évidemment étant donné qu'elle est définie dans le premier formulaire) mais comment lui dire qu'il doit récuperer le w_nomRq du premier formulaire dans celui qui accueille le résultat??? svp Merci A+ |
|
|
00
|
|
|
#8 | ||
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 462 ![]() |
Si tu ouvres ta requête à la main, as-tu des données ?
Les champs d'affichage du formulaire sont-ils bien associés aux champs de la source ? Pour le openArgs Code :
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
|
|
|
#9 |
|
Invité de passage
![]() Thomas Stagiaire SIG Inscription : avril 2011 Messages : 8 ![]() |
Alors, j'ai mis ton code mais ca me donne toujours un tableau vide (pas le cas si ma requete est effectuée a la main, et si je met juste un Docmd.Openquery). Il met le bon nombre d'enregistrements mais sans leur contenu. (cf image postée plus haut)
Les champs sont différents en fonction des requêtes. Par rapport à avant, il y a du mieux car il me dit que le contenu du formulaire = la requete sql que je veux. Aussi, j'ai reussi a déclencher l'export quand on clique sur la croix rouge pour fermer le formulaire, et l'export fonctionne correctemment... Il affiche bien le contenu de la requête... Mais j'ai besoin de visualiser les données avant export et malheureusement je ne lis pas en invisible ^^ |
|
|
00
|
|
|
#10 | ||
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 462 ![]() |
Je ne sais pas comment tu as monté ton formulaire mais voici comment je procéderai.
Créer un formulaire indépendant ayant 255 champs texte dont le nom est Champ000 à Champ254. (Au maximum une requête peut avoir 255 champs) avec leurs étiquettes associées (Etiquette000 à Etiquette254). Au chargement assigner la source de données à ta requête. Puis : Code :
__________________
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
|
Copyright © 2000-2012 - www.developpez.com