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 :

Requête NOT IN avec liste de valeurs provenant d'une zone de texte ne fonctionne pas [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 31
    Points : 16
    Points
    16
    Par défaut Requête NOT IN avec liste de valeurs provenant d'une zone de texte ne fonctionne pas
    Bonsoir à tous,

    Je m'en remets à vous après 2 jours de tests dans tous les sens et d'incompréhension.

    Pou remplir une listbox je me base sur une requête.
    Dans la clause WHERE de cette requête j'utilise un critère NOT IN dont la liste de valeurs est prise dans une zone de texte d'un formulaire et un critère LIKE dont la valeur est également prise dans une zone de texte du même formulaire en cours.
    Ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT R_Contacts_tous_complet.ID_RELATION, R_Contacts_tous_complet.Contact_Nom, R_Contacts_tous_complet.Classer_sous
    FROM R_Contacts_tous_complet
    WHERE R_Contacts_tous_complet.ID_RELATION NOT IN (forms![Ajouter au groupe]!txtNonDispo) AND R_Contacts_tous_complet.Contact_Nom Like "*" & forms![Ajouter au groupe]!SrchText & "*";
    Le critère /R_Contacts_tous_complet.Contact_Nom Like "*" & forms![Ajouter au groupe]!SrchText & "*"/ fonctionne très bien.
    Par contre le critère NOT IN à un comportement plus que bizarre :
    Lorsque la zone de texte txtNonDispo contient une seule valeur, par exemple "65", ça marche.
    Lorsque la zone de texte txtNonDispo contient deux valeurs, par exemple "65, 97", c'est comme si la requête n'était pas prise en compte car les enregistrements ayant les ID_RELATION 65 et 97 apparaissent dans le résultat.
    Et lorsque la zone de texte txtNonDispo contient trois au plus de trois valeurs, par exemple "65, 97, 131", alors là le résultat de la requête est aucun enregistrement...

    Je n'y comprend vraiment rien.
    J'ai essayé pas mal de trucs... mais rien y fait.

    J'espère donc que vous aurez de meilleures idées que moi pour résoudre cela.

    D'avance un GRAND MERCI

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 274
    Points
    34 274
    Par défaut
    Salut,

    tu confonds ici ce qu'interprete Access et ton intrepretation de ce qu'access est sense faire

    Pour que cela soit coherent, il te faut passer par une reinterpretation du SQL sous une forme de chaine de caracteres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim strSQL As String
    strSQL= "SELECT R_Contacts_tous_complet.ID_RELATION, R_Contacts_tous_complet.Contact_Nom, R_Contacts_tous_complet.Classer_sous"
    strSQL= strSQL & " FROM R_Contacts_tous_complet"
    strSQL=strSQL & " WHERE R_Contacts_tous_complet.ID_RELATION NOT IN (" & forms![Ajouter au groupe]!txtNonDispo & ") AND R_Contacts_tous_complet.Contact_Nom Like '*" & forms![Ajouter au groupe]!SrchText & "*';"
    TonContenantResultat.RowSource = strSQL
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 31
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    Merci pour ta Jean-Philippe André.
    Effectivement mon erreur est que le contenu de la zone de texte est une chaine de caractère, or je cherche à comparer à des valeur numérique...
    Ca ne peut pas marché.
    Grâce à l'aide d'un autre forum j'ai trouvé comment modifié la requête qui est devenue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT R_Contacts_tous_complet.ID_RELATION, R_Contacts_tous_complet.Contact_Nom, R_Contacts_tous_complet.Classer_sousFROM R_Contacts_tous_complet
    WHERE R_Contacts_tous_complet.Contact_Nom Like "*" & forms![Ajouter au groupe]!SrchText & "*" And Eval([ID_RELATION] & " not in (" & nz(forms![Ajouter au groupe]!txtNonDispo,"-1") & ")")=True;
    Grâce à la fonction EVAL je peux monter un critère en chaîne de caractère.
    Et grâce à la fonction NZ j'évite les erreurs si ma zone de texte est vide.

    Merci beaucoup
    Espérant que cette solution puisse servir à d'autres.

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 17/08/2009, 06h27
  2. Réponses: 0
    Dernier message: 17/07/2008, 21h38
  3. récupérer la valeur output dans une zone de texte
    Par islamune9 dans le forum VB.NET
    Réponses: 18
    Dernier message: 09/05/2007, 11h53
  4. valeur max d'une zone de texte
    Par Davik dans le forum IHM
    Réponses: 6
    Dernier message: 22/11/2006, 10h45
  5. Valeur numérique dans une zone de texte
    Par KEROZEN dans le forum IHM
    Réponses: 3
    Dernier message: 30/05/2006, 08h43

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