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):
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 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 "
Mes états s'ouvrent de cette manière :
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
1. Déclaration publique de la SQL dans un module
2. Etat à l'ouverture :
http://www.developpez.net/forums/d78...n-filtre-etat/
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
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.
Partager