IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Recherche multi-critères Caféine: imprimer 2 états à partir de 2 requêtes différentes et 1 zone de résultats


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 17
    Points : 16
    Points
    16
    Par défaut Recherche multi-critères Caféine: imprimer 2 états à partir de 2 requêtes différentes et 1 zone de résultats
    Bonjour,

    J'utilise le formulaire de recherche multi-critères de Caféine, qui fonctionne très bien.

    Sauf que:

    J'ai besoin de proposer deux choix d'impression à l'utilisateur à partir de ce formulaire, l'un basé sur la requête de base qui renseigne la zone de résultat, et l'autre sur une requête plus complète qui liste les missions ET leurs documents attachés.

    Evidemment, si j'utilise la requête complète (avec documents) comme source de la liste de résultats, les missions comportant plusieurs documents attachés sont listées autant de fois qu'il y a de documents, ce qui va contre la vocation première du formulaire qui est de chercher sur les missions.

    Tables :
    t_region
    t_ville
    t_demandeur
    t_mission
    t_document


    SQL pour le formulaire et liste de résultats:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SQL = "SELECT t_region.region, t_ville.ville, t_demandeur.musee, t_demandeur.adresse, t_demandeur.cp, t_demandeur.telephone, t_demandeur.fax, t_demandeur.courriel, t_demandeur.site_web, t_demandeur.drac_direction, t_mission.id_mission, t_mission.nature_de_la_demande," & _
    "t_mission.type_de_demande, t_mission.date_de_demande, t_mission.accuse_reception_demande, t_mission.demandeur, t_mission.intermediaire, t_mission.intervenant, t_mission.problematiques, t_mission.avis_date, t_mission.avis_texte, t_mission.conseil, t_mission.etude," & _
    "t_mission.date_mission, t_mission.date_transmission_rapport, t_mission.suivi_dcp, t_mission.date_debut, t_mission.date_fin, t_mission.problematique_stagiaires, t_mission.problematique_complement, t_mission.actions_envisagees, t_mission.collections, t_mission.type_musee," & _
    "t_mission.TableauSource " & _
    "FROM (t_region INNER JOIN t_ville ON t_region.id_region = t_ville.id_region) INNER JOIN (t_demandeur INNER JOIN t_mission ON t_demandeur.id_demandeur = t_mission.id_demandeur) ON t_ville.id_ville = t_demandeur.id_ville WHERE t_mission.id_mission <>0 "

    SQL souhaitable pour un deuxième bouton «*Imprimer la liste avec détails*» (désolée, il doit rester les apostrophes de commentaire):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SQL = "SELECT t_region.region, t_ville.ville, t_demandeur.musee, t_demandeur.adresse, t_demandeur.cp, t_demandeur.telephone, t_demandeur.fax, t_demandeur.courriel, t_demandeur.site_web, t_demandeur.drac_direction, t_mission.id_mission, t_mission.nature_de_la_demande," & _
    ' "t_mission.type_de_demande , t_mission.date_de_demande, t_mission.accuse_reception_demande, t_mission.demandeur, t_mission.intermediaire, t_mission.intervenant, t_mission.problematiques, t_mission.avis_date, t_mission.avis_texte, t_mission.conseil, t_mission.etude," & _
    ' "t_mission.date_mission , t_mission.date_transmission_rapport, t_mission.suivi_dcp, t_mission.date_debut, t_mission.date_fin, t_mission.problematique_stagiaires, t_mission.problematique_complement, t_mission.actions_envisagees, t_mission.collections, t_mission.type_musee," & _
    ' "t_mission.TableauSource , t_document.rapport1_date, t_document.rapport1_numero, t_document.rapport1_typedoc, t_document.rapport1_mode_envoi, t_document.rapport1_descriptif, t_document.rapport1_lien, t_document.rapport1_auteur, t_document.rapport_dans_dossier " & _
    ' "FROM (t_region INNER JOIN t_ville ON t_region.id_region = t_ville.id_region) INNER JOIN ((t_demandeur INNER JOIN t_mission ON t_demandeur.id_demandeur = t_mission.id_demandeur) INNER JOIN t_document ON t_mission.id_mission = t_document.id_mission)" & _
    ' "ON t_ville.id_ville = t_demandeur.id_ville WHERE t_mission.id_mission <>0 "
    Autre bout de code du formulaire qui peut être utile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
    SQL = SQL & ";"
     
     
    Me.lblStats.Caption = DCount("*", "selection_recherche", SQLWhere) & " / " & DCount("*", "selection_recherche")
    Me.lstResults.RowSource = SQL
    Me.lstResults.Requery
    Mes états s'ouvrent de cette manière :
    1. Déclaration publique de la SQL dans un module
    2. Etat à l'ouverture :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Report_Open(Cancel As Integer)
    Me.RecordSource = SQL
    End Sub
    http://www.developpez.net/forums/d78...n-filtre-etat/


    Voilà !

    Je n'ai pas trop d'idée par où aborder le problème.

    Merci à l'avance de toute aide que vous pourriez m'apporter.

  2. #2
    Membre habitué
    Inscrit en
    Juillet 2010
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 230
    Points : 129
    Points
    129
    Par défaut
    Bonjour,

    Evidemment, si j'utilise la requête complète (avec documents) comme source de la liste de résultats, les missions comportant plusieurs documents attachés sont listées autant de fois qu'il y a de documents, ce qui va contre la vocation première du formulaire qui est de chercher sur les missions.
    Si j'ai bien compris ton problème est l'affichage des résultats dans la liste.Tu souhaiterai q'avec cette requête complète, soit affiché 1 mission par ligne peut importe le nombre de documents présents.

    Je pense que ta 2eme requête à besoin d'une fonction d'agrégation et notamment la fonction de regroupement. Cela éviterai de te retrouver avec des doublons.

    Pour plus d'infos : http://access.developpez.com/sql/#L1.2.1


    Je ne suis pas certains de bien comprendre ton problème... formule une ou deux questions pour espérer avoir une réponse précise.

    Merci

    Cordialement.

Discussions similaires

  1. Réponses: 9
    Dernier message: 05/09/2012, 13h13
  2. recherche multi critères et génération d'état
    Par Dongosaure dans le forum IHM
    Réponses: 3
    Dernier message: 19/04/2008, 22h45
  3. tutoriel recherche multi-critères de caféine
    Par Magali33 dans le forum VBA Access
    Réponses: 1
    Dernier message: 12/11/2007, 00h29
  4. Réponses: 35
    Dernier message: 24/04/2007, 17h11
  5. Réponses: 8
    Dernier message: 14/08/2006, 12h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo