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 cherche all value


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 159
    Points : 81
    Points
    81
    Par défaut Requête cherche all value
    Bonjour,

    J'ai une requête liée à un formulaire : 2 champs (1 produit, 1 numéro)

    Je cherche toutes les lignes de ma table où Produit & Numéro correspondent.
    Cependant si je veux laisser mon produit vide, car un numéro peut avoir plusieurs produits :

    - j'ai essayé * sur le produit
    - j'ai essayé % sur le produit

    mais rien de concluant.... comment puis je faire pour lui dire de sélectionner toutes les valeurs sans changer ma requête ?

    Merci
    P.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 352
    Points : 415
    Points
    415
    Par défaut
    quel est le SQL de ta requête ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 159
    Points : 81
    Points
    81
    Par défaut
    Tout un blabla de récupération de champs et à la fin j'ai un where :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE Produit=Formulaire!Produit AND Numero=Formulaire!Numero
    Sachant que c'est une requête qui fait la recherche uniquement quand le Produit et le Numéro sont renseigné.
    Je veux juste l'utiliser sans le produit, sans modifier la requête et en spécifiant un "comme *" en vba

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 352
    Points : 415
    Points
    415
    Par défaut
    si tu es en VBA, il te manque des guillemets pour séparer la chaine sql de tes variables. Tu peux utiliser le like. Si tu mets pas de *, ce sera comme un = :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "WHERE Produit like " &iif(not isnull(Formulaire!Produit),Formulaire!Produit,"*") &" AND Numero=" &Formulaire!Numero

  5. #5
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 651
    Points : 34 360
    Points
    34 360
    Par défaut
    salut,

    encore mieux que le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iif(not isnull(Formulaire!Produit),Formulaire!Produit,"*")
    le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nz(Formulaire!Produit,"*")

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 159
    Points : 81
    Points
    81
    Par défaut
    Bonjour,

    Je me suis mal exprimé.
    J'ai une requête fixe qui attends 2 paramètres venant d'un formulaire.

    J'aimerais créer un nouveau bouton qui lance la même requête mais avec un seul des 2 paramètres.

    Je n'écris pas ma requête en vba
    Je voudrais juste mettre en vba l'équivalent de "like *" pour faire la recherche sur tout.

    Merci,
    P.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 352
    Points : 415
    Points
    415
    Par défaut
    la fonction NZ peut aussi être utilisé dans ta requête SQL

    si tu fais afficher ta requête en mode sql, tu peux saisir directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE produit like Nz(Formulaires![nom_de_ton_formulaire]!Produit,"*")
    si tu saisi en mode édition de requête, dans la zone Critères, il faut mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    like Nz(Formulaires![nom_de_ton_formulaire]!Produit;"*")
    'la , est remplacée par ; dans l'appel des fonctions en mode editeur

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 352
    Points : 415
    Points
    415
    Par défaut
    je crois que je viens de comprendre.

    Pour avoir tous les produits, il te suffit de rajouter à ta requête

    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 sql as string
    sql  = currentdb.QueryDefs("nomDeTaRequete").SQL
    'suppression du ; final
    sql = left(sql, instrrev(sql,";")-1)
    sql = sql &" OR (produit like '*' AND <tonchamp2> = <ton param2>) "
    'cela marche à la condition qu'il n'y ait rien à la fin de ta clause WHERE (pas de ORDER BY, GROUP BY...) 
     
    'soit tu modifie ta requête original
    currentdb.QueryDefs("nomDeTaRequete").SQL = sql
     
    'soit tu ouvre un recordset dessus
    set rs = currentdb.openrecordset (sql)
     
    'soit tu affecte cette source de données à un formulaire
    docmd.openform "FormQuery"
    forms("formQuery").recordsource = sql
     
    ...

Discussions similaires

  1. Requête avec ALL ?
    Par Jéjé34 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 14/03/2014, 17h24
  2. Requête INSERT avec VALUES et SELECT
    Par FredLo dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 24/02/2010, 14h16
  3. Variable Incrémentale et requête union all
    Par Christophe Charron dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/05/2009, 10h08
  4. [AC-2003] Requête Union all avec nbre de colonnes différents
    Par souketou dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 12/05/2009, 14h40
  5. Calcul de % sur une requête UNION ALL
    Par lodan dans le forum Langage SQL
    Réponses: 4
    Dernier message: 08/03/2007, 14h20

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