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 :

[Formulaire]filtre sur 4 niveaux de sous-formulaires


Sujet :

IHM

  1. #21
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    Je précise :

    Losque j'appuie sur le bouton rechercher, il me dit erreur de syntaxe et me met en rouge la ligne Me du code du bouton rechercher.

    Vous voyez pas ?

  2. #22
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Citation Envoyé par fpecastaing
    - si je mets la syntaxe tel quel - si je retire la côte,

    Les propositions son nécessairement faites en VBA Ici. Si à ton niveau, tu utilises le QBE pour faire tes requêtes c'est normal que la syntaxe soit un peu différente.

    Dans cette requête
    SELECT * FROM Personnel WHERE (NomPrenom='" & iif(Forms!FrmPrincipal2!FiltreParNom<>null;Forms!FrmPrincipal2!FiltreParNom; Personnel.NomPrenom) & "');
    au niveau de la fenêtre requête c'est plutot la ligne critère de la colonne NomPrenom qui prend cette valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    iif(Forms!FrmPrincipal2!FiltreParNom<>null;Forms!FrmPrincipal2!FiltreParNom; Personnel.NomPrenom)
    Il n'ya pas de quote ni de doube quote.
    Amicalement

  3. #23
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    Merci Mboub,

    Là ça fonctionne.
    J'ai donc le filtre nom qui est bon, maintenant je reprends la source et je rajoute sous la colonne service la même fonction Iif ?

    Et après pour les autres, je fais la mêmechose ?

  4. #24
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Oui exactement la même chose pour les autres.
    Amicalement

  5. #25
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    Voilà ce que ça donne pour le premier sous-formulaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Personnel.NomPrenom, Personnel.Numéro, Personnel.Service
    FROM Personnel
    WHERE (((Personnel.NomPrenom)=IIf([Forms]![FrmPrincipal2]![FiltreParNom] Is Not Null,[Forms]![FrmPrincipal2]![FiltreParNom],[Personnel].[NomPrenom])) AND ((Personnel.Service)=IIf([Forms]![FrmPrincipal2]![FiltreParService] Is Not Null,[Forms]![FrmPrincipal2]![FiltreParService],[Personnel].[Service])));
    Ca marche niquel à part que je ne peux pas faire une recherche que sur le service sans le nom. Il me faut le nom ou le nom+le service
    Il faudrait pouvoir dire "si le FiltreParNom est vide alors le prendre que le Filtre parService" ...

  6. #26
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    En principe c'est Et/Ou cette façon de faire. Maintenant si dans tes données tu n'a pas la correspondance que tu veux dans tes données c'est sur ca n'ira pas.

    Est ce que pour le service que tu choisi, tu as au moins quelque données.

    Parce que pour
    si le FiltreParNom est vide alors le prendre que le Filtre parService
    ceci correspond bien à toutes les possibilités
    ...WHERE (((Personnel.NomPrenom)=IIf([Forms]![FrmPrincipal2]![FiltreParNom] Is Not Null,[Forms]![FrmPrincipal2]![FiltreParNom],[Personnel].[NomPrenom])) AND ((Personnel.Service)=IIf([Forms]![FrmPrincipal2]![FiltreParService] Is Not Null,[Forms]![FrmPrincipal2]![FiltreParService],[Personnel].[Service])));
    Si le nom est vide et que le service soit renseigné, il te rend toutes les lignes correspondant à tous les noms mais seulement pour lesquelles le service choisi est le bon.

    Regarde bien tes données.
    Amicalement

  7. #27
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    Si le nom est vide et que le service soit renseigné, il te rend toutes les lignes correspondant à tous les noms mais seulement pour lesquelles le service choisi est le bon.
    C'est en effet ce que j'aimerais qu'il me fasse mais si je laisse le filtre nom vide et que je veux par exemple tous les gens du service achat (il y a en 20 dans la base), il m'affiche 0 résultat. Car pour lui il cherchent tous les gens du service "achat" qui ont pour nom "rien" ou "vide". Et focément yen a pas car chaque pers a un nom et traville pour un service.

    Je ne sais pas si on peut rajouter si le nom est vide alors filtrer que sur le service.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...WHERE (((Personnel.NomPrenom)=IIf([Forms]![FrmPrincipal2]![FiltreParNom] Is Not Null,[Forms]![FrmPrincipal2]![FiltreParNom],[Personnel].[NomPrenom])) AND ((Personnel.Service)=IIf([Forms]![FrmPrincipal2]![FiltreParService] Is Not Null,[Forms]![FrmPrincipal2]![FiltreParService],[Personnel].[NomPrenom]));

  8. #28
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    ok ca marche, je m'étais planté dans mon code du bouton afficher tout qui est censé vider les filtres.

    J'ai mis tous les Me. ... en commentaire et depuis ça marche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Commande17_Click()
    Me.[frm personnel2].Form.FilterOn = False
    'Me.FiltreParNom = ""
    'Me.FiltreParDateMin = ""
    'Me.FiltreParDateMax = ""
    'Me.FiltreParOrganisme = ""
    'Me.FiltreParService = ""
    'Me.FiltreParFormation = ""
    Me.[frm personnel2].Requery
    End Sub
    Dommage car on est maintenant obligé de supprimer le contenu des filtres à la main une fois la recherche faite...

    Par contre, quand je passe aux critères (type formation et organisme) du sous-formulaires suivant il ne les cumule plus avec ceux du dessus (nom et service). Ca marche pas ...

  9. #29
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    Voilà le nouveau code du bouton recherche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Commande16_Click()
    
    'filtre du sous-formulaire frm personnel2
    Me.[frm personnel2].Requery
    
    'filtre du sous-sous-formulaire frmFormation2 : je pense que l'erreur vient de là
    Forms![FrmPrincipal2]![frm personnel2].Form![frmFormation2].Requery
    
    End Sub

  10. #30
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Citation Envoyé par fpecastaing
    J'ai mis tous les Me. ... en commentaire et depuis ça marche.

    Dommage car on est maintenant obligé de supprimer le contenu des filtres à la main une fois la recherche faite...
    Essai l'inverse. Les Me... après le Requery

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Commande17_Click()
    Me.[frm personnel2].Form.FilterOn = False
    Me.[frm personnel2].Requery
    Me.FiltreParNom = ""
    Me.FiltreParDateMin = ""
    Me.FiltreParDateMax = ""
    Me.FiltreParOrganisme = ""
    Me.FiltreParService = ""
    Me.FiltreParFormation = ""
    End Sub
    Par contre, quand je passe aux critères (type formation et organisme) du sous-formulaires suivant il ne les cumule plus avec ceux du dessus (nom et service). Ca marche pas ...
    la j'ai pas bien compris !
    Amicalement

  11. #31
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    Mon soucis est que si je choisis d'afficher toutes les formations "excel" effectuées par christian, j'obtiens TOUTES les formations de christian (Excel, Word, Access,...), comme s'il ne voyait pas le filtre Formation.

    Voilà la propriété source du sous-sous-formulaire frmFormation2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Formation.TypeFormation, Formation.VisiteMedicale, Formation.AutorisationEmployeur, Formation.Organisme, Formation.SGS, Formation.Observations, Formation.NbHeuresFormation, PersonnelFormé.NumeroPersonnel, PersonnelFormé.NumeroFormation
    FROM Formation INNER JOIN PersonnelFormé ON Formation.NumeroFormation = PersonnelFormé.NumeroFormation
    WHERE (((Formation.TypeFormation)=IIf([Forms]![FrmPrincipal2]![FiltreParFormation] Is Not Null,[Forms]![FrmPrincipal2]![FiltreParFormation],[Formation].[TypeFormation])) AND ((Formation.Organisme)=IIf([Forms]![FrmPrincipal2]![FiltreParOrganisme] Is Not Null,[Forms]![FrmPrincipal2]![FiltreParOrganisme],[Formation].[Organisme])))
    ORDER BY Formation.TypeFormation;
    En fait, je ne sais pas si ça pose un problème mais mon sous-formulaire est basé sur une requête qui permet de relier la table Formation à la table personnelFormé. Est-ce que ce que j'ai mis en vert est bon ?
    Car je rappelle que j'ai 3 tables : Personnel / formation / PersonnelFormé (qui est une table union entre les deux autres, elle contient la clé primaire des deux autres tables).

  12. #32
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Citation Envoyé par fpecastaing
    Mon soucis est que si je choisis d'afficher toutes les formations "excel" effectuées par christian, j'obtiens TOUTES les formations de christian (Excel, Word, Access,...), comme s'il ne voyait pas le filtre Formation.
    Pour en avoir le coeur net remplace directement le parametre par une valeur.
    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ... Formation.TypeFormation=
    après le = tu met "Excel", un numéro valide correspondant à la formation que tu veux voir. Ainsi tu sauras si la parametre contient quelque chose ou non.

    Par ailleurs pour ce qui est de la requête tout semble correcte.
    Amicalement

  13. #33
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    si je mets excel, il ne me sors rien. je vois pas ...

  14. #34
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,
    à la place de ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IIf([Forms]![FrmPrincipal2]![FiltreParFormation] Is Not Null
    je mettrais ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IIf(not isnull([Forms]![FrmPrincipal2]![FiltreParFormation])
    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  15. #35
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    Jai testé, ça marche pas non plus.

  16. #36
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Formation.TypeFormation c'est du numérique ou du texte ?
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  17. #37
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    C'est du texte ...

  18. #38
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    Et alors, ça fait quoi que ce soit du texte ou du numérique ? C'est ça qui me bloque tout ?

  19. #39
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    essaye ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    like iif(not isnull(.....),...) & "*"
    dans le cas ou la condition n'est pas rempli il affichera tout.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  20. #40
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    Il me dit
    syntax error, manque un opérateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Personnel.NomPrenom, Personnel.Numéro, Personnel.Service
    FROM Personnel
    WHERE (((Personnel.NomPrenom)= like IIf(Not isnull([Forms]![FrmPrincipal2]![FiltreParNom]),[Forms]![FrmPrincipal2]![FiltreParNom],[Personnel].[NomPrenom]) & "*") AND ((Personnel.Service)= like IIf(Not IsNull([Forms]![FrmPrincipal2]![FiltreParService]),[Forms]![FrmPrincipal2]![FiltreParService],[Personnel].[Service]) & "*"));
    Je pense qu'il faut des guillemets ou des cotes après le "like".
    Merci pour ton aide

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/10/2014, 10h27
  2. [AC-2007] Filtre sur liste déroulante dans sous-formulaire
    Par petitpom dans le forum IHM
    Réponses: 4
    Dernier message: 18/07/2012, 09h41
  3. Réponses: 1
    Dernier message: 28/02/2008, 21h40
  4. Réponses: 8
    Dernier message: 24/11/2006, 15h06
  5. Action sur sous-formulaire filtré
    Par thevenix dans le forum IHM
    Réponses: 4
    Dernier message: 20/06/2005, 00h39

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