Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/12/2011, 10h57   #1
Invité régulier
 
Homme
Étudiant
Inscription : mai 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : mai 2011
Messages : 14
Points : 6
Points : 6
Par défaut Filtre sur ouverture avec OpenForm

Bonjour à tous,

J'ai un formulaire contenant une succession de listes de critères à remplir et un second formulaire OUTILS (composé d'un détail d'enregistrement de la table OUTILS et d'un sous formulaire affichant entièrement celle ci) qui s'ouvre selon les critères rentrés précédemment.
Je souhaiterais via le premier formulaire, appliqué un filtre sur l'ouverture du formulaire OUTILS.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Private Sub bt_go_Click()
    Dim dbs As Database
    Dim selection As String
 
    'Test si l'user a choisi une catégorie pour le filtre
    If (IsNull(Me.lst_cat.Value) Or IsNull(Me.lst_metier.Value)) Then
        reponse = MsgBox("Voulez-vous visionner tous les outils?", vbYesNo)
        If reponse = vbYes Then
            MonFiltre = "SELECT * FROM OUTILS;"
        Else
            Exit Sub
        End If
    Else
        'Test si l'user a choisi une sous catégorie pour le filtre
        If IsNull(Me.lst_deux.Value) Then
            reponse = MsgBox("Voulez-vous faire le filtre sur toutes les sous categories?", vbYesNo)
            If reponse = vbYes Then
                selection = Me.lst_cat.Value
                MonFiltre = "SELECT * "
                MonFiltre = MonFiltre & "FROM OUTLS "
                MonFiltre = MonFiltre & "WHERE sous_categorie IN (SELECT numero "
                                         MonFiltre = MonFiltre & "FROM SOUS_CATEGORIE "
                                         MonFiltre = MonFiltre & "WHERE categorie = (SELECT numero "
                                                            MonFiltre = MonFiltre & "FROM CATEGORIE "
                                                            MonFiltre = MonFiltre & "WHERE designation = '" & selection & "'));"
            Else
                Exit Sub
            End If
        Else
            selection = Me.lst_deux.Value
            MonFiltre = "SELECT * "
            MonFiltre = MonFiltre & "FROM OUTILS "
            MonFiltre = MonFiltre & "WHERE sous_categorie = (SELECT numero "
                                    MonFiltre = MonFiltre & "FROM SOUS_CATEGORIE "
                                    MonFiltre = MonFiltre & "WHERE designation = '" & selection & "');"
        End If
    End If
    DoCmd.OpenForm "Frm_Outils", , MonFiltre
End Sub
Le Form_Load() du Frm_Outils est vide.

Problème : Le formulaire s'ouvre, le détail de table est vide et le sous formulaire affiche la table entièrement sans tenir compte du filtre.

Le sous formulaire doit-il avoir également un filtre sur l'ouverture?
Pourquoi le détail est vide?
Je suis perdu la....
Dutchou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2011, 11h19   #2
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 090
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 090
Points : 11 622
Points : 11 622
Bonjour,

Il ne faut pas affecter un select dans un filtre, juste les conditions du where.
cf le F1 sur le docmd.openform et les articles connexes de Filter.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2011, 11h29   #3
Invité régulier
 
Homme
Étudiant
Inscription : mai 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : mai 2011
Messages : 14
Points : 6
Points : 6
Merci de ta réponse

J'ai appliqué la correction du filtre, le problème avance, le formulaire se remplit mais toujours aucune application du filtre sur les enregistrements...
Dutchou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 08h54   #4
Invité régulier
 
Homme
Étudiant
Inscription : mai 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : mai 2011
Messages : 14
Points : 6
Points : 6
Problème résolu, j'ai filtré sur le chargement du formulaire au lieu d'appliquer un filtre sur la "DoCmd.OpenForm".

Code :
1
2
3
4
5
6
7
8
Private Sub Form_Load()
    'Formulaire
    Me.Form.RecordSource = MonFiltre
    Me.Form.Requery
    'Sous formulaire
    sf_filtreOutil.Form.RecordSource = MonFiltre
    sf_filtreOutil.Form.Requery
End Sub
Dutchou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h07.


 
 
 
 
Partenaires

Hébergement Web