Filtre sur état access
sousleau12
Messages postés
20
Statut
Membre
-
jjsteing Messages postés 1803 Statut Contributeur -
jjsteing Messages postés 1803 Statut Contributeur -
Bonjour,
Je souhaite filtrer l'affichage d'un état par une zone de liste à multi choix, mais je ne sais pas comment m'y prendre.
Je m'explique :
Nous voulons executer des contrôles simple mais de façon répété sur une base de donnée SIG.
Sur une table tronçon, j'ai effectué des requêtes sur les champs à controler (Ex : R_diam_T)
Chaque requête est associée à un état, pour une une lecture plus lisible du résultat. (Ex : E_diam_T)
L'ensemble de ces états est consultable par un groupe d'option. (erreur_T)
Voici le code associé :
Sub ImprimeÉtats(ModeImpression As Integer)
On Error GoTo Err_Aperçu_Click
Select Case Me!erreur_T
Case 1
DoCmd.OpenReport "E_diam_T", ModeImpression
Case 2
DoCmd.OpenReport "E_mat_T", ModeImpression
Case 3
DoCmd.OpenReport "E_annee_T", ModeImpression, , "commune = E_annee_T![erreur_T].[numero]"
Case 4
DoCmd.OpenReport "E_date_estimee_T", ModeImpression
Case 5
DoCmd.OpenReport "E_troncon_msrue_incorrect", ModeImpression
Case 6
DoCmd.OpenReport "E_troncon_sans_antenne", ModeImpression
End Select
Quitte_Aperçu_Click:
Exit Sub
Err_Aperçu_Click:
Resume Quitte_Aperçu_Click
End Sub
Sauf que les utilisateurs de ce formulaire travaillent chacun sur un secteur de commune définis et ne veulent voir que les communes les concernant.
J'ai donc créé une zone de liste à choix multiple (Choix_commune), dépendante d'une requête, pour avoir la liste des communes. (R_commune_nom)
Et je voudrais filtrer ces états par ma zone de liste
Comment faire ?
Merci pour votre aide.
Anne Sophie
Ps : J'ai tentté de mettre ce code sous "case 1, mais ça ne fonctionne pas :
Dim Condition As String
Dim Ctr As Integer
Dim AuMoinsUn As Boolean
AuMoinsUn = False
Condition = "Commune In("
For Ctr = 0 To Me![Choix_commune].ListCount - 1
If Me![Choix_commune].Selected(Ctr) Then
AuMoinsUn = True
Condition = Condition & "'" & Me![Choix_commune].Nom(0, Ctr) & "',"
End If
Next Ctr
Condition = Left(Condition, Len(Condition) - 1) & ")"
Avez-vous des pistes ?
Je souhaite filtrer l'affichage d'un état par une zone de liste à multi choix, mais je ne sais pas comment m'y prendre.
Je m'explique :
Nous voulons executer des contrôles simple mais de façon répété sur une base de donnée SIG.
Sur une table tronçon, j'ai effectué des requêtes sur les champs à controler (Ex : R_diam_T)
Chaque requête est associée à un état, pour une une lecture plus lisible du résultat. (Ex : E_diam_T)
L'ensemble de ces états est consultable par un groupe d'option. (erreur_T)
Voici le code associé :
Sub ImprimeÉtats(ModeImpression As Integer)
On Error GoTo Err_Aperçu_Click
Select Case Me!erreur_T
Case 1
DoCmd.OpenReport "E_diam_T", ModeImpression
Case 2
DoCmd.OpenReport "E_mat_T", ModeImpression
Case 3
DoCmd.OpenReport "E_annee_T", ModeImpression, , "commune = E_annee_T![erreur_T].[numero]"
Case 4
DoCmd.OpenReport "E_date_estimee_T", ModeImpression
Case 5
DoCmd.OpenReport "E_troncon_msrue_incorrect", ModeImpression
Case 6
DoCmd.OpenReport "E_troncon_sans_antenne", ModeImpression
End Select
Quitte_Aperçu_Click:
Exit Sub
Err_Aperçu_Click:
Resume Quitte_Aperçu_Click
End Sub
Sauf que les utilisateurs de ce formulaire travaillent chacun sur un secteur de commune définis et ne veulent voir que les communes les concernant.
J'ai donc créé une zone de liste à choix multiple (Choix_commune), dépendante d'une requête, pour avoir la liste des communes. (R_commune_nom)
Et je voudrais filtrer ces états par ma zone de liste
Comment faire ?
Merci pour votre aide.
Anne Sophie
Ps : J'ai tentté de mettre ce code sous "case 1, mais ça ne fonctionne pas :
Dim Condition As String
Dim Ctr As Integer
Dim AuMoinsUn As Boolean
AuMoinsUn = False
Condition = "Commune In("
For Ctr = 0 To Me![Choix_commune].ListCount - 1
If Me![Choix_commune].Selected(Ctr) Then
AuMoinsUn = True
Condition = Condition & "'" & Me![Choix_commune].Nom(0, Ctr) & "',"
End If
Next Ctr
Condition = Left(Condition, Len(Condition) - 1) & ")"
Avez-vous des pistes ?
A voir également:
- Filtre sur état access
- Photo filtre 7 gratuit - Télécharger - Retouche d'image
- Remettre pc etat usine - Guide
- Filtre whatsapp - Accueil - Messagerie instantanée
- Etat disque dur - Télécharger - Informations & Diagnostic
- Filtre teams - Accueil - Visio
17 réponses
Tu veux donc filtrer le résultat global de ton etat suivant une requete (commune) dans laquelle certaine sont cochées et d autre pas...
Si c'est cela, rien de plus simple, dans ton etat, dbl click en haut a gauche (dans le ptit carré gris qui s affichera avec un point noir). cela va te donner les propriétés de ton état.Dans l'onglet toutes => Source, met une requete avec l assistant pour filtrer ton etat avec ta requete commune (mettre "comme oui" dans le champs choix commune)
Voila.
Tiens moi au jus ;)
Si c'est cela, rien de plus simple, dans ton etat, dbl click en haut a gauche (dans le ptit carré gris qui s affichera avec un point noir). cela va te donner les propriétés de ton état.Dans l'onglet toutes => Source, met une requete avec l assistant pour filtrer ton etat avec ta requete commune (mettre "comme oui" dans le champs choix commune)
Voila.
Tiens moi au jus ;)
Tout d'abord, merci pour ta réponse. Voici en plus clair :
Dans les propriétés, l'etat "E_diam_T" a pour source la requête "R_diam_T".
le contenu de ma zone de liste (Choix_commune) (zone de liste qui affiche une liste de commune) est issue de la requête R_commune_nom.
Je voudrais que l'etat n'affiche que les resultats de la requête "R_diamT" pour les communes selectionnées dans la zone de liste.
Peut-on alors mettre deux source pour l'état ?
On m'a parlé aussi d' table temporaire ou vue, qui serait remplie en fonction des communes selectionnées dans ma zone de texte, et je pourrait alors baser la requête "R_diam_T" sur cette table temporaire ou vue.
Mais je ne sais pas comment faire, ni par quel bout prendre le sujet.
Des idées ?
Dans les propriétés, l'etat "E_diam_T" a pour source la requête "R_diam_T".
le contenu de ma zone de liste (Choix_commune) (zone de liste qui affiche une liste de commune) est issue de la requête R_commune_nom.
Je voudrais que l'etat n'affiche que les resultats de la requête "R_diamT" pour les communes selectionnées dans la zone de liste.
Peut-on alors mettre deux source pour l'état ?
On m'a parlé aussi d' table temporaire ou vue, qui serait remplie en fonction des communes selectionnées dans ma zone de texte, et je pourrait alors baser la requête "R_diam_T" sur cette table temporaire ou vue.
Mais je ne sais pas comment faire, ni par quel bout prendre le sujet.
Des idées ?
Ben ma solution va bien.. sauf qu au lieu de faire une liste a choix multiple, fait une table avec en champ1 la liste de toutes les commune et en champ2 un choix oui/non.. a la place de la liste a choix multiple, affiche cette table et dans ton etat, affiche les resulats avec , comme expliquer plus haut, une relation sur cette table sur le champs oui/non avec dans ta requette "comme oui".
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ca parait tout bête comme ça, mais je suis perdue.
Comment fais-tu pour afficher une table dans un formulaire ? A la place de la zone de liste ?
Comment fais-tu pour afficher une table dans un formulaire ? A la place de la zone de liste ?
Lol.. tel est ma devise ;)
glisser posé de ta table dans le formulaire Ce qui va créer un sou formulaire avec tous les champs de ta table...
Il faut ensuite supprimer dans le sous formulaire les champs que tu ne veux pas afficher aux utilisateur.
glisser posé de ta table dans le formulaire Ce qui va créer un sou formulaire avec tous les champs de ta table...
Il faut ensuite supprimer dans le sous formulaire les champs que tu ne veux pas afficher aux utilisateur.
Super, merci pour l'info
Ca, c'est fait.
J'ai maintenant ma table dans mon formulaire.
Par contre, le filtre ne fonctionne pas. En fait, la requete elle même qui devrait filtrer selon le oui/non (avant même l'affichage de l'etat) ne fonctionne pas.
Après avoir testé diverses possibilités, j'ai l'impression que ça ne fonctionne pas parce que le première requête est issue d'une requête de non correspondance entre deux tables.
J'ai l'impression que ca lui fait trop de critières à gérer.
des idées ?
Ca, c'est fait.
J'ai maintenant ma table dans mon formulaire.
Par contre, le filtre ne fonctionne pas. En fait, la requete elle même qui devrait filtrer selon le oui/non (avant même l'affichage de l'etat) ne fonctionne pas.
Après avoir testé diverses possibilités, j'ai l'impression que ça ne fonctionne pas parce que le première requête est issue d'une requête de non correspondance entre deux tables.
J'ai l'impression que ca lui fait trop de critières à gérer.
des idées ?
Trop fort, tout fonctionne
Je vais encore me permettre de poser deux questions
1- Comment faire pour mettre le champ oui non sous forme de liste déroulante, et non pas de saisie libre ?
2- Si on souhaite changer de commune, on est obligé de fermer l'état et de le réouvrir. Peux-t-on avoir un moyen de le régénérer, par un bouton, une commande ?
Merci pour votre aide
Je vais encore me permettre de poser deux questions
1- Comment faire pour mettre le champ oui non sous forme de liste déroulante, et non pas de saisie libre ?
2- Si on souhaite changer de commune, on est obligé de fermer l'état et de le réouvrir. Peux-t-on avoir un moyen de le régénérer, par un bouton, une commande ?
Merci pour votre aide
Lol.. bon, je vais te faire une ptite base en access 2000.. je te met le lien sur le forum qd c est fait.. mais ca cera ce soir ou demain.. car je dois partir la.
@++
@++
bon, voili, c fait.. en esperant que ca t aide un peu ;)
http://dl.free.fr/getfile.pl?file=/xPcHx41o
http://dl.free.fr/getfile.pl?file=/xPcHx41o
Trop fort
Après inspiration de ce que vous avez fait, la mienne fonctionne parfaitement sur votre modèle.
Un grand merci pour votre aide
Par contre, comme je suis un peu tetu, j'ai quand même essayé de le refaire avec une zone de liste pour selectionner les communes.
(Pour la phase de test de l'outils, j'utilise des tables importées d'Oracle. Mais au final, il sera à utiliser avec des table liées. Le problème avec la première table, c'est qu'elle n'existe pas sous oracle. Il faudrait que je demande qu'à l'ouverture du formulaire, une requête se lance pour créer la table. Et là, problème, je ne sais pas encore faire tout ça....d'où l'idée de la zone de liste.)
Donc, en m'inspirant de vos explication, voilà ce que j'ai fait : :
- un formulaire : F_correction
- une zone de liste : Choix_commune
- une requete : R_diam_T2
- un état : E_diam_T2
- un bouton commande pour ouvrir mon état
J'ai spécifié dans ma requête : [Formulaires]![F_correction]![Choix_commune] (comme : [Formulaires]![NomDeTonFormulaire]![TaListeDéroulante])
Et comme vous me l'aviez dit, j'ai mis la requête en propiété de l'état.
Ma question est la suivante :
- Si dans les propriétés de la zone de liste, dans l'onglet autre, j'ai selection multiple = aucun, l'état s'ouvre sur la commune séléctionnée.
- Si dans les propiétés de la zone de liste, selction multiple = étendue, l'état ne s'ouvre pas, mais la requête ne fonctionne pas non plus.
Comment paramétrer le tout pour que cela fonctionne ? Sauriez-vous comment ça marche ?
Doit-on passer par du code obligatoirement, ou y a t il un moyen de paramétrer la requête?
Merci d'avance
Après inspiration de ce que vous avez fait, la mienne fonctionne parfaitement sur votre modèle.
Un grand merci pour votre aide
Par contre, comme je suis un peu tetu, j'ai quand même essayé de le refaire avec une zone de liste pour selectionner les communes.
(Pour la phase de test de l'outils, j'utilise des tables importées d'Oracle. Mais au final, il sera à utiliser avec des table liées. Le problème avec la première table, c'est qu'elle n'existe pas sous oracle. Il faudrait que je demande qu'à l'ouverture du formulaire, une requête se lance pour créer la table. Et là, problème, je ne sais pas encore faire tout ça....d'où l'idée de la zone de liste.)
Donc, en m'inspirant de vos explication, voilà ce que j'ai fait : :
- un formulaire : F_correction
- une zone de liste : Choix_commune
- une requete : R_diam_T2
- un état : E_diam_T2
- un bouton commande pour ouvrir mon état
J'ai spécifié dans ma requête : [Formulaires]![F_correction]![Choix_commune] (comme : [Formulaires]![NomDeTonFormulaire]![TaListeDéroulante])
Et comme vous me l'aviez dit, j'ai mis la requête en propiété de l'état.
Ma question est la suivante :
- Si dans les propriétés de la zone de liste, dans l'onglet autre, j'ai selection multiple = aucun, l'état s'ouvre sur la commune séléctionnée.
- Si dans les propiétés de la zone de liste, selction multiple = étendue, l'état ne s'ouvre pas, mais la requête ne fonctionne pas non plus.
Comment paramétrer le tout pour que cela fonctionne ? Sauriez-vous comment ça marche ?
Doit-on passer par du code obligatoirement, ou y a t il un moyen de paramétrer la requête?
Merci d'avance
Merci pour la base de donnée
Je vais essayer de comprendre comment vous y êtes parvenus.
Je peux revenir vers vous si j'ai des soucis ?
Je vais essayer de comprendre comment vous y êtes parvenus.
Je peux revenir vers vous si j'ai des soucis ?
tu peux me tutoyer ;)
Et bien sur que tu peux me demander plein de question !!
sur le site ou en MP.. comme tu prefere ;)
Courage :p @++
Et bien sur que tu peux me demander plein de question !!
sur le site ou en MP.. comme tu prefere ;)
Courage :p @++
Alors
Etat de l'avancement
Ca y est, j'arrive à faire fonctionner la selection multiple. Lorsque je choisis plusieurs commune, l'état souvre avec les bons résultats.
Par contre, maintenant, la colonne "commune" de l'état est vide.
Est-ce que ça vient du paramétrage du champ "commune" de l'état ? J'ai mis =Formulaires!F_correction!Choix_commune.
Vu que l'état est le resultat d'une requete, peut être faut-il paramétrer pour voir le champ commune de la requete ?
Merci pour votre aide
Etat de l'avancement
Ca y est, j'arrive à faire fonctionner la selection multiple. Lorsque je choisis plusieurs commune, l'état souvre avec les bons résultats.
Par contre, maintenant, la colonne "commune" de l'état est vide.
Est-ce que ça vient du paramétrage du champ "commune" de l'état ? J'ai mis =Formulaires!F_correction!Choix_commune.
Vu que l'état est le resultat d'une requete, peut être faut-il paramétrer pour voir le champ commune de la requete ?
Merci pour votre aide
As tu bien ajouter la table commune ou le champs commune dans la reque de base de ton état ??
Alors, effectivement, dans ma requete de base, j'ai un champ commune.
Voici la structure de ma requête de base
- 3 Tables :
GAO2_C_diam_T
GAO2_Troncon
GAO2_Commune
La requête en SQL :
SELECT GAO2_TRONCON.MSLINK, GAO2_TRONCON.RESEAU, GAO2_TRONCON.DIAM, GAO2_COMMUNE.NOM
FROM (GAO2_TRONCON LEFT JOIN GAO2_C_DIAM_T ON GAO2_TRONCON.DIAM = GAO2_C_DIAM_T.DIAM) INNER JOIN GAO2_COMMUNE ON GAO2_TRONCON.COMMUNE = GAO2_COMMUNE.MSLINK
WHERE (((GAO2_TRONCON.LG)="1") AND ((GAO2_C_DIAM_T.DIAM) Is Null))
ORDER BY GAO2_TRONCON.RESEAU;
Initialement, le champ commune de la table troncon est numérique. Pour avoir l'affichage en clair, je l'ai lié avec le champ "nom" de la table commune
Et voilà la requête permettant d'afficher la liste des communes dans la zone de liste :
SELECT GAO2_COMMUNE.NOM
FROM GAO2_COMMUNE
GROUP BY GAO2_COMMUNE.NOM, GAO2_COMMUNE.MSLINK;
Peut être arriverez-vous à identifier mon problème d'affichage des noms de commune dans l'état ?
Voici la structure de ma requête de base
- 3 Tables :
GAO2_C_diam_T
GAO2_Troncon
GAO2_Commune
La requête en SQL :
SELECT GAO2_TRONCON.MSLINK, GAO2_TRONCON.RESEAU, GAO2_TRONCON.DIAM, GAO2_COMMUNE.NOM
FROM (GAO2_TRONCON LEFT JOIN GAO2_C_DIAM_T ON GAO2_TRONCON.DIAM = GAO2_C_DIAM_T.DIAM) INNER JOIN GAO2_COMMUNE ON GAO2_TRONCON.COMMUNE = GAO2_COMMUNE.MSLINK
WHERE (((GAO2_TRONCON.LG)="1") AND ((GAO2_C_DIAM_T.DIAM) Is Null))
ORDER BY GAO2_TRONCON.RESEAU;
Initialement, le champ commune de la table troncon est numérique. Pour avoir l'affichage en clair, je l'ai lié avec le champ "nom" de la table commune
Et voilà la requête permettant d'afficher la liste des communes dans la zone de liste :
SELECT GAO2_COMMUNE.NOM
FROM GAO2_COMMUNE
GROUP BY GAO2_COMMUNE.NOM, GAO2_COMMUNE.MSLINK;
Peut être arriverez-vous à identifier mon problème d'affichage des noms de commune dans l'état ?
dans ta table commune.. il y a un champs numerique ?? (genre Num_Commune).. si oui, c est lui qui doit etre lier et non le champs Commune.nom....
Si tu n a pas de champ numérique dans ta table commune.. je te conseille de le fairte et de ne pas mettrre le champ nom en clé primaire, mais ce champs Num_Commune (comme dans mon ex bd1 & bd2). Ceci permet de ne pas faire de conflit numero<> texte car ainsi tu ne gere que des numéros d index et non un champ texte.
Apres avoir lier, tu ajoute le champs Nom.commune dans l etat et comme il est lier avec son num_commune, il t affichera le nom de la commune...
Si tu n a pas de champ numérique dans ta table commune.. je te conseille de le fairte et de ne pas mettrre le champ nom en clé primaire, mais ce champs Num_Commune (comme dans mon ex bd1 & bd2). Ceci permet de ne pas faire de conflit numero<> texte car ainsi tu ne gere que des numéros d index et non un champ texte.
Apres avoir lier, tu ajoute le champs Nom.commune dans l etat et comme il est lier avec son num_commune, il t affichera le nom de la commune...