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

Access Discussion :

liste déroulante pour sélectionner un critère de requête


Sujet :

Access

  1. #21
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Points : 32
    Points
    32
    Par défaut
    J'ai l'impression d'être un peu indescent d'insister comme ça... ou peut-être que ai-je fait une bétise, mais je repose quand même ma question :

    "1) du coups, je veux gonflé mon bidule et faire un filtre multicritère. Or, pour ce que 'ai commencé à faire, ça marche si on utilise tous les critères mais ne marche pas quand j'en utilise qu'un seul. Exemple : critère "grade" et critère "thème de formation". je ne peux pas avoir que les thème de formation, il faut aussi que je sélectionne un grade.

    2) autre problème, j'aimerais pouvoir trier par année dans l'un de ces critère. Or, je n'arrive pas à avoir l'année dans le critère à partir du champs DATE qu'elle contient. "Année(DATE)" marche dans le formulaire, mais pour avoir un champs année dans une requête à partir des dates qu'elle contient, comment fait-on?"

    Si il y a un problème, dites le moi. Merci

  2. #22
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    hello,
    alors je vais essayer d'être clair.

    Moi pour faire du multicritère, je crée des fonctions (VBA) qui me retourne la sélection d'une zone de liste si elle est renseignée ou * si non.
    Ainsi ds le critère de ma requete je mets

    Comme ma_fonction() et ça roule tt seul, les users peuvent utiliser ts les critères ou juste un.

    j'espère que c'est clair.

    Voici un exemple de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Function Critere1() As Variant '
    If Form_MonForm.MaList <> "" Then
        Critere1= Form_MonForm.MaList 
    Else
        Critere1= "*"
    End If
    End Function
    En espérant que ça t'aide
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

  3. #23
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    Citation Envoyé par ivan7
    2) autre problème, j'aimerais pouvoir trier par année dans l'un de ces critère. Or, je n'arrive pas à avoir l'année dans le critère à partir du champs DATE qu'elle contient. "Année(DATE)" marche dans le formulaire, mais pour avoir un champs année dans une requête à partir des dates qu'elle contient, comment fait-on?"
    c'est koi le soucy..tu fais un champs calculé..
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

  4. #24
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Bonjour

    Je suis en train de developper le meme genre d'application qu' Ivan7; c a d une recherche multicritere vie des listes deroulantes d'un formulaire.

    J'ai le meme probleme, pour un critere ca fonctionne tres bien mais des qu'il y en a deux ou plusieurs, ca ne focntionne pas,il faut absolument renseigner tous les champs.

    J'ai donc suivi la methode de Say, j'ai donc inserer la fonction sous Vb et dans le critere de ma requete j'ai mis la fonction Critere1()

    le probleme, c'est que j'ai un message d'erreur "Fonction critere1 non definie dans l'expression.

    Est ce que j'ai oublié quelque chose? oublier de renseigner je ne sais quoi? si vous pouviez m'aider.

    Merci

  5. #25
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    bonsoir,
    tu l'as défini où ta fonction?
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

  6. #26
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    La fonction je l'ai ecrite en VB sous la forme "General" de mon formulaire ou se trouvent les listes déroulantes

    Il faut la déclarer autr part?

  7. #27
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Points : 32
    Points
    32
    Par défaut
    moi aussi j ai un petit problème avec la fonction que j ai essayer d'insser avec "créer" au niveau du critère de la requête

    mais ça colle pas

    1 est ce que c'est le bon endroit

    2 je n'arrive pas à discerner les codes de la fonction des noms style "ma fonction!monform..." enfin je ne suis pas sur de ce qui appartient à la fonction et de ce qui appartient à l'exemple

  8. #28
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    à définir dans un module en Public...
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

  9. #29
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    ça c'est le proto de la fonction.
    définie en Public dans le Module1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function Critere1() As Variant '
     
    End Function
    ça,c'est les tests, si ma liste déroulante de mon formulaire n'est pas une chaine vide, alors la fonction Critere1 renvoie cette valeur
    sinon elle retourne *

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If Form_MonForm.MaList <> "" Then
        Critere1= Form_MonForm.MaList
    Else
        Critere1= "*"
    End If
    En plaçant, Comme Critere1() dans la requete au niveau du WHERE (ligne de critere), ça devrait rouler.

    En tout cas, c'est ce que je fais

    tch'o
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

  10. #30
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Salut,

    Merci, voila de mon coté une premiere etape de franchie, j'arrive a entrée la fonction dans mes criteres de ma requete.

    ..mais encore un hic, car mes resultats de requete ne sont pas satisfaisante:

    Il ne comprend pas le "*"; j'ai afficher une fenetre pour afficher la valeur de critere1; et des que je lance mon formulaire le champ est vide!! deja pb

    par contre des que je saisie une valeur dans mon champ déroulant, il l'insert correctement mais des que je l'efface, il reste sur l'ancienne valeur !! et ne reaffiche pas le "*"

    En resumé, le gros pb, c'est qu'il n'affiche jamais "*" donc toutes mes recherches sont bidons et vides.

    Donc pour que ca focntionne, il faut renseigner tous les champs!!

    Est ce qu'on peut inserer mais ombreuses fonctions critere dans le meme module?
    Ne faut il pas appeller les fonctions criteres quelque part, pour actualiser son résultat?

    Merci d'avance

  11. #31
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    bonjour, tu mets quoi exactement dans la ligne critère de ta requete?

    et tes champs sont de quels types?
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

  12. #32
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    bjr

    comme critere je mets: Critere1()

    et la pour cette recherche c un champ de type texte (pour des noms de site)

    quand je vais dans la requete, et tu mets "*"; la ca marche tout seul; mais des qu'on passe par la fonction ou en mode demande a l'utilisateur de saisie, il prends en compte "*" mais comme une chaine de caractere et donc la recherche est fructueuse

    Je ne sais vriament plus trop quoi faire

  13. #33
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Oh ca à l'air de marcher,

    je pensai avoir deja mis le COMME devant la fonction critere1; mais bon apparment en le rajoutant ca fonctionne bcp mieux

    Je te tiens au courant

  14. #34
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Points : 32
    Points
    32
    Par défaut
    bon, alors moi j'ai découvert tout plein de choses très intéresssantes et ça me plait beaucoup
    mais je suis un moins bonne élève que max

    J'ai bien créé trois fonctions
    Critère 1, 2 et 3
    et j ai mis comme (qui se transforme automatiquement en Alike quand je rouvre ma requête) dans mes 3 critères.

    Rien ne bloque, il n'y a pas de message d'erreur. Par contre mon état continue d'être vide quand je ne sélectionne qu'un critère.

    Par exemple lorsque je sélectionne une année donnée pour avoir toute les formations de cette année, c'est vide.

    Vous avez une idée...?

  15. #35
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Points : 32
    Points
    32
    Par défaut
    en fait je ne comprends pas
    say a dit :
    si ma liste déroulante de mon formulaire n'est pas une chaine vide, alors la fonction Critere1 renvoie cette valeur
    sinon elle retourne *

    Code:

    If Form_MonForm.MaList <> "" Then
    Critere1= Form_MonForm.MaList
    Else
    Critere1= "*"
    End If

    or, qu'est ce que ça fait qu'elle retourne "*"
    peut etre que si je comprends je pourrais faire marcher mon bidule
    parcequel mes états sonvide.

    merci

  16. #36
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    ben l'idée c que comme la fonction renvoie * si il n'y a pas de sélection ça correspond à pas de critère...

    tu vas avoir en logique)
    Critere1 ET Critere2 ET Critere3

    Si y'en a un qui renvoie * donc ça ne filtre pas sur ce critère là :
    * ET Critere2 ET Critere3 ça revient à Critere2 ET Critere3.

    Voila, vite fait.

    Ceci dit, ça marche pas forcèement sur ts les types de champs...me souviens plus.

    [moi, j'en ai marre d'être au taf alors, je m'en vais. bon week...je matérais mais mais plus tard]

    bon courage
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

  17. #37
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Points : 32
    Points
    32
    Par défaut
    merci
    je comprends mieux

    pour info mes champs sont unidement du texte et des dates (années)

    mon critère 1 = liste de formation
    mon critère 2 = Grade des agents
    mon critère 3 = Années

    voilà,

    tu penses que ça peut marcher?

    bon week end aussi!

  18. #38
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    slt

    Si c'est un champ texte et que tu as mis: " comme Critere1() " ca va marcher.

    Tu fais de meme avec les autres criteres, sur la meme ligne de crotere, poiur avoir comme disait SAy, Critere1 ET Critere2() ET Critere3

    Tu declares bien toutes te sfonctions croteres, dans un module en public.

    Pour un test pour savoir si c'est le bon critere qu'il envoie, pour etre sur de ta recherche, tu affiches le parametre citere1 dans un champ texte et tu l'affiche des que tu selectionnes dans ta liste deroulante; car moi au debut, avec toutes mes tables croisées, il me renvoyé ma clé primaire (un nombre) alors que je selectionner un texte dans ma liste deroulante, donc forcement ma requete m'affichait rien, donc ca tu peux verifier.

  19. #39
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Points : 32
    Points
    32
    Par défaut
    zalut

    max a notamment écrit:

    Si c'est un champ texte et que tu as mis: " comme Critere1() " ca va marcher.

    Tu fais de meme avec les autres criteres, sur la meme ligne de crotere, poiur avoir comme disait SAy, Critere1 ET Critere2() ET Critere3

    Tu declares bien toutes te sfonctions croteres, dans un module en public.

    alors tout ça j ai fait, je pense que ça va. Excepté le fait que j'ai mis mes fonctions dans 3 modules séparés et non un seul.

    PAR CONTRE je ne sais pas ce qu'est un champs texte!

    Pour les tests je tenterais demain car mon ordi a moi est un mac (d'ailleurs si vois connaisserz l'équivalent d'access pour mac...)

    A+

  20. #40
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Points : 32
    Points
    32
    Par défaut
    Un MERCI GEANT

    Franchement vous m'avez filé un rude de coup de main!

    Ce forum est génial!

    J'ai finalement remplacer "*" par "%" et ça marche, va savoir pourquoi...
    (d'ailleurs j'aimerais bien...)

    Il me reste plusieurs petits problèmes (dont : comment filtrer par présent et non présent (petite encoche). mais je vais peut-être ouvrir un nouveau sujet.

    MERCI ENCORE!!!!

Discussions similaires

  1. [AC-2000] Récupérer la valeur d’une liste déroulante pour filtrer une requête SQL
    Par Gremandine dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 18/03/2010, 15h43
  2. pb Liste déroulante pour argument de requète
    Par benoitm35 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 11/12/2008, 20h14
  3. liste déroulante pour requête
    Par swissmade dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 16/08/2007, 09h52
  4. [REQUETE] Liste déroulante pour critères
    Par Nesta92 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 13/04/2007, 15h44
  5. Réponses: 2
    Dernier message: 01/09/2006, 00h02

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