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 :

Critère filtre d'une requete.


Sujet :

Access

  1. #1
    Membre du Club
    Homme Profil pro
    Chargé d'études statistique
    Inscrit en
    Février 2017
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chargé d'études statistique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 96
    Points : 59
    Points
    59
    Par défaut Critère filtre d'une requete.
    Bonjour a tous,

    Je cherche l'expression qui me permet de filtré une requete par un champ qui égale a une fonction VBA, voici mon cas:

    J'ai un champ dans une requete qui est comme ceci: Code_affectation: Triaffectation([Affectation];[wilaya])

    Triaffectation : est une fonction qui me permet de codé le champ [affectation].

    Contenu du champ est :1, 2, 3 et 4.

    Mon problème: je n'arrive pas a filtré le champ Code_affectation comme un champ numérique (exp: "2" ou "4"), cela ne fonctionne pas.

    Merci d'avance pour toutes aide.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Peux-tu poster le code de Triaffectation() car, à priori, cela devrait marcher.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre du Club
    Homme Profil pro
    Chargé d'études statistique
    Inscrit en
    Février 2017
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chargé d'études statistique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    Le voici:

    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
    Dim Wilaya As String
     
    Function Triaffectation(Affectation As String, Wilaya As String) As Long
     
    If Left(Affectation, 4) = "DREM" Then
     Triaffectation = 1
     
    ElseIf Left(Affectation, 4) = "AWEM" Then
     Triaffectation = 2
     
    ElseIf Left(Affectation, 4) = "ALEM" And Right(Affectation, 4) = Right(Wilaya, 4) Then
      Triaffectation = 3
     
    Else
     Triaffectation = 4
     
    End If
     
    End Function

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Mon problème: je n'arrive pas a filtré le champ Code_affectation comme un champ numérique (exp: "2" ou "4"), cela ne fonctionne pas.
    Quand tu as posté cela j'ai compris que tu n'arrivais pas à définir une clause Where sur ce champ.
    Est-ce bien le problème ?
    Ou est-ce le filtre déroulant en haut du champ en affichage feuille de données qui ne marche pas ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre du Club
    Homme Profil pro
    Chargé d'études statistique
    Inscrit en
    Février 2017
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chargé d'études statistique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    Je cherche a filtré la requête par le champ Code_affectation, et tout simplement c'est au niveau du critère que je cherché à mettre ma condition "2" ou "4" (sur mode création).

  6. #6
    Modérateur
    Avatar de bertiny
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 282
    Points : 1 831
    Points
    1 831
    Billets dans le blog
    1
    Par défaut
    Je pense que ta requête doit être en Analyse croisée dynamique où tu mettras le champ affectation en entête de colonne. Et à partir de là, tu peux pivoter les valeurs d'affectation. Ceci te permettra d'appliquer le "2 ou 3" comme tu veux.
    Le monde évolue et nous avec. La technologie change les idées de ceux qui s'intéressent et pensent qu'il est nécessaire de changer.
    Oh là!! Que c'est bien de trouver la solution à un problème

    Pensons à améliorer nos connaissances en toute humilité car on apprend tous tous les jours !!!

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Qu'Est-ce qui se passe quand tu mets le critère ?
    1. Tu n'as pas de résultat ?
    2. Tu as une erreur ? Si oui, laquelle ?
    3. Tu n'as pas les résultats attendus ? Si oui, quelle est la différence avec ce que tu attends ?


    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  8. #8
    Membre du Club
    Homme Profil pro
    Chargé d'études statistique
    Inscrit en
    Février 2017
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chargé d'études statistique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    Sur la boite de dialogue, s'affiche "Type de données incompatible dans l'expression de critère", et sur mode de feuil de données "#Nom*?".

    Pour bien comprendre, je préfère partager un petit exemple, le voici donc en pièce jointe.
    Fichiers attachés Fichiers attachés

  9. #9
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Dans ton poste (je ne peux pas installer d'application sur ma machine). Tu as encadré le 2 et le 4 de guillemets ("). Si c'est des nombre, il ne fau pas mettre de délimiteur de chaîne.
    Essaye en tapant simplement 2.
    Tu peux aussi ajouter un champ calculé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Test: Triaffectation([Affectation];[wilaya])=2
    Vois, ce que cela te dit.

    Et est-ce que [wilaya] est un champ dans ta source de données car Access ne peut accéder directement à une variable VBA par son nom.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  10. #10
    Membre du Club
    Homme Profil pro
    Chargé d'études statistique
    Inscrit en
    Février 2017
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chargé d'études statistique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    Oui, j'ai essayé tout les possibilités (même sans les guillemets) mais aucun résultat.

    Voici une Imp.écran de mon exemple.
    Fichiers attachés Fichiers attachés

  11. #11
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Et cela :

    Test: Triaffectation([Affectation];[wilaya])=2

    Qu'Est-ce que ça donne ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  12. #12
    Membre du Club
    Homme Profil pro
    Chargé d'études statistique
    Inscrit en
    Février 2017
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chargé d'études statistique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    Cela donne un résultat de 0 et -1.

    Une autre remarque ! même le filtre classique sur mode de feuil de données ça ne marche pas.

    Voir un aperçu sur pièce jointe.
    Fichiers attachés Fichiers attachés

  13. #13
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Bonjour,

    j'ai chargé ta base et j'ai constaté que les enregistrements de la table Liste sont tous vides à partir de l'ID 511 jusqu'à la fin (ID 2817).
    Et l'origine de ton souci vient de là car tu as déclaré Affectation et Wilaya en String dans ta fonction Triaffectation mais cela renvoie #Erreur dans la requête pour les enregistrements vides et Access ne peut donc pas filtrer.
    2 solutions :
    - soit enlever les enregistrements vides
    - soit, dans la fonction Triaffectation déclarer les variables Affectation et Wilaya en Variant car ce type de données accepte les valeurs vides.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  14. #14
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Une façon facille de contourner les nuls :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [NomTaTable].[NomTonChamp] & ""
    Converti le nul en chaîne vide.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  15. #15
    Membre du Club
    Homme Profil pro
    Chargé d'études statistique
    Inscrit en
    Février 2017
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chargé d'études statistique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    Vous avez raison Grandbois, finalement c'étais les vides !!..Je te remercie.

    Le code de contournement des vides est intéressant. Ou exactement je dois le mettre ?

  16. #16
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Bonjour,
    Le code de contournement des vides est intéressant. Ou exactement je dois le mettre ?
    cela s'utilise dans SQL comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT [Liste].[Wilaya] & "" AS W_Wilaya, [Liste].[Affectation] & "" AS W_Affectation, ... etc
    et aussi directement dans l'interface graphique de création de requêtes.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/06/2014, 17h05
  2. [AC-2003] Critère doublon sur une requete
    Par alain063 dans le forum IHM
    Réponses: 1
    Dernier message: 02/04/2009, 10h10
  3. Problème de filtre dans une requetes
    Par vlksoft dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 09/12/2008, 14h06
  4. Réponses: 1
    Dernier message: 18/02/2008, 16h08
  5. pb critère sql dans une requete basée sur controle d'un form
    Par STANDBOY dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 27/02/2006, 16h17

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