Filtre sur état access

sousleau12 Messages postés 20 Statut Membre -  
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 ?
A voir également:

17 réponses

jjsteing Messages postés 1803 Statut Contributeur 181
 
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 ;)
0
sousleau12 Messages postés 20 Statut Membre
 
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 ?
0
jjsteing Messages postés 1803 Statut Contributeur 181
 
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".
0
jjsteing Messages postés 1803 Statut Contributeur 181
 
ok ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sousleau12 Messages postés 20 Statut Membre
 
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 ?
0
jjsteing Messages postés 1803 Statut Contributeur 181
 
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.
0
sousleau12 Messages postés 20 Statut Membre
 
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 ?
0
sousleau12 Messages postés 20 Statut Membre
 
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
0
jjsteing Messages postés 1803 Statut Contributeur 181
 
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.

@++
0
jjsteing Messages postés 1803 Statut Contributeur 181
 
bon, voili, c fait.. en esperant que ca t aide un peu ;)

http://dl.free.fr/getfile.pl?file=/xPcHx41o
0
sousleau12 Messages postés 20 Statut Membre
 
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
0
jjsteing Messages postés 1803 Statut Contributeur 181
 
0
sousleau12 Messages postés 20 Statut Membre
 
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 ?
0
jjsteing Messages postés 1803 Statut Contributeur 181
 
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 @++
0
sousleau12 Messages postés 20 Statut Membre
 
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
0
jjsteing Messages postés 1803 Statut Contributeur 181
 
As tu bien ajouter la table commune ou le champs commune dans la reque de base de ton état ??
0
sousleau12 Messages postés 20 Statut Membre
 
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 ?
0
jjsteing Messages postés 1803 Statut Contributeur 181
 
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...
0