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

IHM Discussion :

filtre sur sous formulaire comment faire ?


Sujet :

IHM

  1. #1
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2007
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Novembre 2007
    Messages : 297
    Points : 129
    Points
    129
    Par défaut filtre sur sous formulaire comment faire ?
    Bonjour

    J'ai un formulaire qui contient un sous formulaire basé sur une requête.

    j'ai une liste modifiable indépendante qui contient une liste de valeurs :

    bleu, jaune, vert, rouge

    sur cette liste modifiable, j'ai un évenement apres mise jour qui me lance la fonction de filtrage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
     
    Private Sub FiltrerEnrg()
    Dim strFiltre As String 'déclare la variable
     
     
    If (Not IsNull(LM_couleurs)) Then 'si la valeur de LM_couleurs n'est pas nulle
      strFiltre = "[Couleur]='" & LM_couleurs& "' and " 'alors la variable strFiltre prend la valeur sélectionnée et la concatène avec le mot clé AND par ex: 'Jaune' And
    End If
     
    If (strFiltre = "") Then  'si la variable strfiltre est vide
       Me.Req_sous_F_principal_sous_formulaire.Form.Filter = "" 'alors le contenu du filtre du sous formulaire est vidé
       Me.Req_sous_F_principal_sous_formulaire.Form.FilterOn = False 'le mode filtrage sur le sous formulaire est désactivé
     
    Else 'sinon
       strFiltre = "(" & Left$(strFiltre, Len(strFiltre) - 5) & ")" 'Le contenu de la variable est mis en forme pour filtrer le sous formulaire
     
       Me.Req_sous_F_principal_sous_formulaire.Form.Filter = strFiltre ' passe la valeur au filtre du sous formulaire
     
    Me.Req_sous_F_principal_sous_formulaire.Form.FilterOn = True 'active le filtrage
    End If
    End Sub
    Mon problème est le suivant :

    Je sais filtrer sur une couleur il n'y a pas de soucis par contre j'aimerai pouvoir filtrer les enregistrements avec deux couleurs, jaune et bleu par ex.

    Je seche la dessus, toutes mes tentatives sont des echecs..

    Je suis preneur de vos conseils et idées..

    Merci d'avance

    Seb

  2. #2
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    Je te joins une petite base exemple qui peut être une piste de réflexion.

    Bonne continuation
    Fichiers attachés Fichiers attachés

  3. #3
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2007
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Novembre 2007
    Messages : 297
    Points : 129
    Points
    129
    Par défaut
    Merci,

    Il y a de l'idée

    Je vais étudier cela

    seb

  4. #4
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2007
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Novembre 2007
    Messages : 297
    Points : 129
    Points
    129
    Par défaut
    Effectivement la solution de passer la requete sql à la source du sous formulaire semble etre la solution.. surtout que ma requête fonctionne avec toute mes conditions.

    sur l'evenement apres mise a jour de chacune de mes listes j'ai mis le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Private Sub LM_Nom_AfterUpdate()
    Dim reqstr As String
    reqstr = "SELECT Tb_contacts.CompanyName, Tb_contacts.LastName, Tb_contacts.FirstName, Tb_contacts.BusinessAddressCountry, Tb_contacts.BusinessTelephoneNumber, Tb_contacts.MobileTelephoneNumber, Tb_contacts.Email1Address, Tb_contacts.Type, Tb_contacts.VIPStatus, Tb_contacts.OWF, Tb_contacts.N°_contact, Tb_contacts.Zone_pays" _
    & "FROM Tb_contacts" _
    & "WHERE (((Tb_contacts.LastName) Like (IIf(IsNull([Formulaires]![F_principal]![LM_Nom])," * ",[Formulaires]![F_principal]![LM_Nom])))" _
    & "AND ((Tb_contacts.BusinessAddressCountry) Like (IIf(IsNull([Formulaires]![F_principal]![LM_Pays])," * ",[Formulaires]![F_principal]![LM_Pays])))" _
    & "AND ((Tb_contacts.Type) Like (IIf(IsNull([Formulaires]![F_principal]![LM_Type])," * ",[Formulaires]![F_principal]![LM_Type])))" _
    & "AND ((Tb_contacts.VIPStatus) Like (IIf(IsNull([Formulaires]![F_principal]![LM_Status])," * ",[Formulaires]![F_principal]![LM_Status]))" _
    & "Or (Tb_contacts.VIPStatus) Like (IIf(IsNull([Formulaires]![F_principal]![LM_status2])," * ",[formulaires]![F_principal]![LM_status2])))" _
    & "AND ((Tb_contacts.OWF) Like (IIf(IsNull([Formulaires]![F_principal]![LM_OWF])," * ",[Formulaires]![F_principal]![LM_OWF])))" _
    & "AND ((Tb_contacts.Zone_pays) Like (IIf(IsNull([Formulaires]![F_principal]![LM_Zone])," * ",[Formulaires]![F_principal]![LM_Zone]))));"
     
    Me.Req_sous_F_principal_sous_formulaire.Form.RecordSource = reqstr
    Me.Req_sous_F_principal_sous_formulaire.Requery
    End Sub
    Le probleme c'est que j'obtiens une erreur d'execution 13 : incompatibilité de type.. pourtant tout est du texte

    je me suis planté où ?

  5. #5
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    Regarde du coté de ces deux tutos. On y parle de sous-formulaire lié à des listes déroulantes :

    Recherches multicritères

    Les listes multifonctions

    Bonne lecture

  6. #6
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2007
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Novembre 2007
    Messages : 297
    Points : 129
    Points
    129
    Par défaut
    Merci, je vais regarder ca

    Mais pourquoi j'obtiens une erreur d'execution 13 - incompatibilité de type ?

    Sur le fond cela devrait fonctionner...

    seb

  7. #7
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    Je crois qu'il y a un petit problème de quotes dans ta syntaxe.
    Je te joins une petite base qui utilise le même type de syntaxe :

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    l_strSql = "SELECT T_Employes.CodeEmploye, T_Employes.NomEmploye FROM T_Employes WHERE NomEmploye Like '" & m_strChaine & "*'"

    La liste des noms se met à jour au fur et à mesure de la saisie de l'élément recherché.

    Bonne continuation
    Fichiers attachés Fichiers attachés

  8. #8
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2007
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Novembre 2007
    Messages : 297
    Points : 129
    Points
    129
    Par défaut
    merci cela m'aide bien.. le code commence à fonctionner


    Par contre j'ai de grosses lacunes en sql et je n'arrive pas à passer une condition dans ma clause where...

    j'ai besoin que si l'une des listes modifiables est vide, l'argument * soit pris en compte pour que cela prenne en compte tous les enregistrements.

    j'ai trouvé cette syntaxe "(iif(isnull(...." qui fonctionne quand je la passe comme critère dans une requête mais pas quand la place derriere la clause where :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    ... WHERE Tb_contacts.[LastName] like (IIf(IsNull([Formulaires]![F_principal]![LM_Nom])," * ",[Formulaires]![F_principal]![LM_Nom]))" _
    C'est quoi qui coince ?

  9. #9
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    TU pourrais trouver un exemple à peu près similaire dans le tuto sur le formulaire de recherche multicritères dans le tableau situé juste au dessus du paragraphe III-A-2-b.

    Sinon, en corrigeant ta syntaxe comme ci-dessous, cela devrait passer :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    ... WHERE IIf(IsNull([Formulaires]![F_principal]![LM_Nom]),[Tb_contacts].[LastName],[Formulaires]![F_principal]![LM_Nom])

    Bonne continuation

Discussions similaires

  1. Filtre sur sous Formulaire
    Par CLASSIQUE dans le forum IHM
    Réponses: 0
    Dernier message: 25/06/2013, 21h05
  2. filtre sur sous formulaire
    Par Ludwik dans le forum IHM
    Réponses: 0
    Dernier message: 05/10/2009, 14h00
  3. filtre sur sous formulaire
    Par Ludwik dans le forum VBA Access
    Réponses: 1
    Dernier message: 03/08/2008, 16h24
  4. Filtre sur sous formulaire
    Par willytito dans le forum IHM
    Réponses: 3
    Dernier message: 14/04/2008, 14h09
  5. Réponses: 7
    Dernier message: 07/06/2007, 10h22

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