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 :

Filtres pour creation d'état (Access 2000)


Sujet :

IHM

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 3
    Points
    3
    Par défaut Filtres pour creation d'état (Access 2000)
    Bonjour à tous,

    J'ai un état filtré grâce à un code VBA :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    EtatNom = "FeuilleDébitProfiléPlan"
        Condition = "[CommandeDébitRef]=" & [CommandeDébitRef]
        DoCmd.Close
        DoCmd.OpenReport EtatNom, acViewPreview, Selection, Condition
    Ceci me permet de voir dans un état tous les débits classés par numéro de plans, suivant un numéro de commande choisi dans une liste (condition).

    Je voudrais pouvoir sélectionner dans une liste, 1 ou plusieurs numéros de plan, et afficher seulement les selections dans l'état.

    Pour se faire, j'ai créé une requête "Selection" basée sur ma requête "Impression"(->Etat : FeuilleDébitProfiléPlan) qui permet d'afficher dans une zone de liste, les numéros de plans correspondants au numéro de commande.

    J'ai essayé de créer un filtre grâce à un code VBA, avec les propriétés ItemsSelected et itemData de ma zone de liste, mais je n'arrive pas à comparer ma chaîne (par ex. "123;13;135;;") avec le champ contenant le numéro de plan.

    Suis-je sur la bonne piste?

    Mecrci d'avance à tous ceux qui pourront m'aider.

  2. #2
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Cela peut être une solution... dans ce cas il faut que tu crées une chaine de valeurs séparées par des virgules et que tu utilises l'opérateur IN.

    Le but est d'obtenir une syntaxe SQL de ce genre:

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM Matable
    WHERE CommandeDébitRef IN (10,5,68)

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Merci de ta réponse, j'essaye tout de suite !

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    D'après ce que je comprends de ce que tu as écrit, je ne crois pas que cette solution soit valide.

    Suivant mon numéro de commande sélectionné auparavant, je n'aurai pas toujours les mêmes numéros de plans, donc ma requête SQL ne peut pas contenir une liste de valeurs.

  5. #5
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Citation Envoyé par applefield
    D'après ce que je comprends de ce que tu as écrit, je ne crois pas que cette solution soit valide.

    Suivant mon numéro de commande sélectionné auparavant, je n'aurai pas toujours les mêmes numéros de plans, donc ma requête SQL ne peut pas contenir une liste de valeurs.
    Bien sur... mais à toi de générer la liste par code en parcourant la liste des éléments sélectionnés de ta zone de liste.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Avec un truc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        For Each i In DébitProfiléPlan.ItemsSelected
            Selection = DébitProfiléPlan.ItemData(i) & "," & Selection
        Next i
    Sachant que DébitProfiléPlan est ma zone de liste?

  7. #7
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Citation Envoyé par applefield
    Avec un truc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        For Each i In DébitProfiléPlan.ItemsSelected
            Selection = DébitProfiléPlan.ItemData(i) & "," & Selection
        Next i
    oui... en n'oubliant pas d'éliminer la virgule en trop à la fin de ta chaine ainsi construite et d'ajouter les parenthèse et le IN.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Désolée, je ne vois pas ce que tu veux dire.

    Je comprends vite, mais faut m'expliquer longtemps!!!

  9. #9
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Citation Envoyé par applefield
    Désolée, je ne vois pas ce que tu veux dire.

    Je comprends vite, mais faut m'expliquer longtemps!!!


    Ben fais une execution pas à pas de ta boucle... tu verras qu'il reste une virgule en fin à supprimer...

    qq chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection = "IN (" & Left(Selection,len(Selection)-1) & ")"

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    ca y est ! J'ai compris ce que tu voulais dire !
    Effectivement, la virgule finale est supprimée!

    Je te remercie de ton aide et de ta patience!

    Par contre, est-il possible de filtrer suivant mes 2 critères (N° commande et N° de plan) dans le code? J'ai oublié de dire que la requete sur laquelle est basé mon etat est reprise pour d'autres états dont les filtres sont indiqués dans le code.

    Qqchose genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Condition = "[CommandeDébitRef]=" & [CommandeDébitRef] And "[DébitProfiléPlan]=" & Selection
        DoCmd.OpenReport EtatNom, acViewPreview, , Condition

  11. #11
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Citation Envoyé par applefield
    est-il possible de filtrer suivant mes 2 critères (N° commande et N° de plan)

    Tant que tu respectes les syntaxes SQL, normalement y a pas de problème.

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Comme tu l'as sans doute remarqué, je suis pas très expérimenté.
    Pourrez-tu me donner un exemple, s'il te plait?

    Je n'arrive pas à trouver de syntaxe "juste".

    Merci beaucoup pour ton aide!!

  13. #13
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Le mieux est de faire un exemple de requete à la main, puis de regarder le code SQL correspondant.

    Ensuite dans le VBA, tu t'appliques à reconstruire le texte SQL respectant la syntaxe.

    Ici tu as mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Condition = "[CommandeDébitRef]=" & [CommandeDébitRef] And "[DébitProfiléPlan]=" & Selection
    Prends le temps de bien repérer quels sont les éléments fixes et les éléments variables de ta chaine SQL.
    Ici le code SQL attendu est du genre:

    [CommandeDébitRef]=17 And [DébitProfiléPlan] IN (19,34)

    Donc seul le 17 de mon exemple et la chaine correspondant au contenu de Sélection tel que défini plus haut doit être remplacé.

    Cela donne donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Condition = "[CommandeDébitRef]=" & [CommandeDébitRef] & " And [DébitProfiléPlan] " & Selection
    Notes que les espaces sont importants...

    Bon dev

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Merci, tes conseils m'ont permis de bien avancer.

    Je vais étudier ce que tu viens de me dire...

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/02/2010, 16h43
  2. Construction filtre pour un sous-état
    Par NPortmann dans le forum IHM
    Réponses: 5
    Dernier message: 29/06/2007, 16h09
  3. Lignes tronquées dans un état Access 2000
    Par Jodel dans le forum Access
    Réponses: 1
    Dernier message: 07/08/2006, 11h58
  4. Réponses: 1
    Dernier message: 23/11/2005, 11h06

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