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

Requêtes et SQL. Discussion :

Critère requête VraiFaux() pour sélectionner tous les enregistrements [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    610
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 610
    Points : 213
    Points
    213
    Par défaut Critère requête VraiFaux() pour sélectionner tous les enregistrements
    Bonjour,

    Dans une requête j'utilise le critère suivant sur une colonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vraifaux(fonction()="TOUS";Comme "*";fonction())
    Fonction() me retourne une valeur texte précise pour la colonne en question ou la valeur "TOUS" lorsque je ne désire pas appliquer un filtre particulier.

    Pour les valeurs retournées par fonction() autres que "TOUS" cela fonctionne.
    Lorsque fonction() retourne "TOUS" je n'ai jamais tous les enregistrements.
    J'ai essayé plusieurs syntaxes (like "*", "*", etc.) sans succès.

    Merci d'avance pour votre aide.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Bonjour,

    Il y a plusieurs raisons au dysfonctionnement du critère.
    1) Le type de la colonne sur laquelle le critère s'applique (ici ce ne peut être que du texte pour pouvoir utiliser l'opérateur LIKE)
    2) la présence dans la clause WHERE du code SQL de l'opérateur "=" au lieu de LIKE.
    En clair, quand la fonction renvoie une valeur autre que "TOUS" la clause WHERE de la requête devient quelque chose du genre :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
     WHERE nomchamp = fonction()
    En revanche, lorsque fontion() renvoie "TOUS" la clause WHERE d'après vos indications s'écrit :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
     WHERE nomchamp = LIKE "*"
    ou
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
     WHERE nomchamp = "*"

    Il faudrait dans le code SQL de la requête vérifier la présence du signe "=" dans la clause WHERE, s'il est présent, le remplacer par l'opérateur LIKE; et la condition VraiFaux devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VraiFaux(Fonction()="TOUS","*",Fonction())

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    bonjour,
    essayes :
    nom du champ de ta requête à la place de comme"*":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vraifaux(fonction()="TOUS";[NomDuChamp];fonction())
    ATTENTION le nom du champ doit être impérativement entre [ ]

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    610
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 610
    Points : 213
    Points
    213
    Par défaut
    Merci pour vos réponses, je vais tester et vous donnerai ma réponse.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    610
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 610
    Points : 213
    Points
    213
    Par défaut
    1) [NomduChamp]
    Si je respecte cette syntaxe c'est pris comme un paramètre et me demande de saisir une valeur lorsque j'exécute la requête.

    2) Avec la solution de "ilank" j'arrive au résultat escompté.

    Merci à vous deux pour votre aide.

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

Discussions similaires

  1. [AC-2010] Caractère * dans un critère pour retourner tous les enregistrements
    Par oplaut dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 04/03/2013, 18h28
  2. [AC-2003] Requête pour sortir tous les enregistrements modifés depuis une date
    Par piercleo dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 07/01/2010, 15h08
  3. comment faire pour supprimer tous les enregistrements d'une table
    Par sehing7 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 14/04/2009, 14h13
  4. [VBA]Boucle pour parcourir tous les enregistrements
    Par Paul Gasser dans le forum VBA Access
    Réponses: 44
    Dernier message: 28/03/2007, 10h22
  5. Réponses: 3
    Dernier message: 28/10/2005, 14h03

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